From 3f759c0c736d3a636614406ac0d6f9335819d6e9 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Tue, 25 Jul 2017 12:20:52 -0700 Subject: [PATCH] Fix 'zpool clear' on suspended pools 'zpool clear' should be able to resume I/O on suspended, but otherwise healthy, pools. 4a283c7 accidentally introduced a new code path where we call txg_wait_synced() on the suspended pool before we had the chance to resume I/O via zio_resume(): this results in the 'zpool clear' command hanging indefinitely, waiting for a TXG that cannot be synced. Fix this by avoiding the call to txg_wait_synced(). Reviewed-by: George Melikov Reviewed-by: loli10K Reviewed-by: Tony Hutter Signed-off-by: Brian Behlendorf Closes #6399 --- module/zfs/zfs_ioctl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c index b2f5db584..d195eded7 100644 --- a/module/zfs/zfs_ioctl.c +++ b/module/zfs/zfs_ioctl.c @@ -4946,7 +4946,8 @@ zfs_ioc_clear(zfs_cmd_t *zc) vdev_clear(spa, vd); - (void) spa_vdev_state_exit(spa, spa->spa_root_vdev, 0); + (void) spa_vdev_state_exit(spa, spa_suspended(spa) ? + NULL : spa->spa_root_vdev, 0); /* * Resume any suspended I/Os.