aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/dev-replace.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/dev-replace.c')
-rw-r--r--fs/btrfs/dev-replace.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/btrfs/dev-replace.c b/fs/btrfs/dev-replace.c
index 8531b5dae777..9fe7be7fdbef 100644
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@ -896,7 +896,17 @@ int btrfs_resume_dev_replace_async(struct btrfs_fs_info *fs_info)
896 } 896 }
897 btrfs_dev_replace_write_unlock(dev_replace); 897 btrfs_dev_replace_write_unlock(dev_replace);
898 898
899 WARN_ON(test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)); 899 /*
900 * This could collide with a paused balance, but the exclusive op logic
901 * should never allow both to start and pause. We don't want to allow
902 * dev-replace to start anyway.
903 */
904 if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) {
905 btrfs_info(fs_info,
906 "cannot resume dev-replace, other exclusive operation running");
907 return 0;
908 }
909
900 task = kthread_run(btrfs_dev_replace_kthread, fs_info, "btrfs-devrepl"); 910 task = kthread_run(btrfs_dev_replace_kthread, fs_info, "btrfs-devrepl");
901 return PTR_ERR_OR_ZERO(task); 911 return PTR_ERR_OR_ZERO(task);
902} 912}