From: Anand Jain Date: Sun, 11 Nov 2018 14:22:21 +0000 (+0800) Subject: btrfs: dev-replace: replace's scrub must not be running in suspended state X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=fe97e2e173afb61f1bb889c45f9597102c9f4849;p=openwrt%2Fstaging%2Fblogic.git btrfs: dev-replace: replace's scrub must not be running in suspended state When the replace state is in the suspended state, btrfs_scrub_cancel() should fail with -ENOTCONN as there is no scrub running. As a safety catch check if btrfs_scrub_cancel() returns -ENOTCONN and assert if it doesn't. Signed-off-by: Anand Jain Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c index c0878ff8185a..a84affa425d4 100644 --- a/fs/btrfs/dev-replace.c +++ b/fs/btrfs/dev-replace.c @@ -840,7 +840,9 @@ int btrfs_dev_replace_cancel(struct btrfs_fs_info *fs_info) btrfs_dev_replace_write_unlock(dev_replace); - btrfs_scrub_cancel(fs_info); + /* Scrub for replace must not be running in suspended state */ + ret = btrfs_scrub_cancel(fs_info); + ASSERT(ret != -ENOTCONN); trans = btrfs_start_transaction(root, 0); if (IS_ERR(trans)) {