From: Brian Behlendorf Date: Tue, 25 Jul 2017 19:20:52 +0000 (-0700) Subject: Fix 'zpool clear' on suspended pools X-Git-Tag: zfs-0.7.0~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3f759c0c736d3a636614406ac0d6f9335819d6e9;p=zfs 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 --- 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.