if (ret)
                return ret;
 
-       if (atomic_xchg(&fs_info->mutually_exclusive_operation_running, 1)) {
+       if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) {
                mnt_drop_write_file(file);
                return BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS;
        }
        kfree(vol_args);
 out:
        mutex_unlock(&fs_info->volume_mutex);
-       atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+       clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
        mnt_drop_write_file(file);
        return ret;
 }
        if (!capable(CAP_SYS_ADMIN))
                return -EPERM;
 
-       if (atomic_xchg(&fs_info->mutually_exclusive_operation_running, 1))
+       if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags))
                return BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS;
 
        mutex_lock(&fs_info->volume_mutex);
        kfree(vol_args);
 out:
        mutex_unlock(&fs_info->volume_mutex);
-       atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+       clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
        return ret;
 }
 
        if (vol_args->flags & ~BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED)
                return -EOPNOTSUPP;
 
-       if (atomic_xchg(&fs_info->mutually_exclusive_operation_running, 1)) {
+       if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) {
                ret = BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS;
                goto out;
        }
                ret = btrfs_rm_device(fs_info, vol_args->name, 0);
        }
        mutex_unlock(&fs_info->volume_mutex);
-       atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+       clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
 
        if (!ret) {
                if (vol_args->flags & BTRFS_DEVICE_SPEC_BY_ID)
        if (ret)
                return ret;
 
-       if (atomic_xchg(&fs_info->mutually_exclusive_operation_running, 1)) {
+       if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) {
                ret = BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS;
                goto out_drop_write;
        }
                btrfs_info(fs_info, "disk deleted %s", vol_args->name);
        kfree(vol_args);
 out:
-       atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+       clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
 out_drop_write:
        mnt_drop_write_file(file);
 
                        ret = -EROFS;
                        goto out;
                }
-               if (atomic_xchg(
-                       &fs_info->mutually_exclusive_operation_running, 1)) {
+               if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) {
                        ret = BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS;
                } else {
                        ret = btrfs_dev_replace_by_ioctl(fs_info, p);
-                       atomic_set(
-                        &fs_info->mutually_exclusive_operation_running, 0);
+                       clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
                }
                break;
        case BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS:
                return ret;
 
 again:
-       if (!atomic_xchg(&fs_info->mutually_exclusive_operation_running, 1)) {
+       if (!test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags)) {
                mutex_lock(&fs_info->volume_mutex);
                mutex_lock(&fs_info->balance_mutex);
                need_unlock = true;
        }
 
 locked:
-       BUG_ON(!atomic_read(&fs_info->mutually_exclusive_operation_running));
+       BUG_ON(!test_bit(BTRFS_FS_EXCL_OP, &fs_info->flags));
 
        if (arg) {
                bargs = memdup_user(arg, sizeof(*bargs));
 
 do_balance:
        /*
-        * Ownership of bctl and mutually_exclusive_operation_running
+        * Ownership of bctl and filesystem flag BTRFS_FS_EXCL_OP
         * goes to to btrfs_balance.  bctl is freed in __cancel_balance,
         * or, if restriper was paused all the way until unmount, in
-        * free_fs_info.  mutually_exclusive_operation_running is
-        * cleared in __cancel_balance.
+        * free_fs_info.  The flag is cleared in __cancel_balance.
         */
        need_unlock = false;
 
        mutex_unlock(&fs_info->balance_mutex);
        mutex_unlock(&fs_info->volume_mutex);
        if (need_unlock)
-               atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+               clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
 out:
        mnt_drop_write_file(file);
        return ret;
 
        if (ret)
                btrfs_handle_fs_error(fs_info, ret, NULL);
 
-       atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+       clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
 }
 
 /* Non-zero return value signifies invalidity */
                __cancel_balance(fs_info);
        else {
                kfree(bctl);
-               atomic_set(&fs_info->mutually_exclusive_operation_running, 0);
+               clear_bit(BTRFS_FS_EXCL_OP, &fs_info->flags);
        }
        return ret;
 }
        btrfs_balance_sys(leaf, item, &disk_bargs);
        btrfs_disk_balance_args_to_cpu(&bctl->sys, &disk_bargs);
 
-       WARN_ON(atomic_xchg(&fs_info->mutually_exclusive_operation_running, 1));
+       WARN_ON(test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags));
 
        mutex_lock(&fs_info->volume_mutex);
        mutex_lock(&fs_info->balance_mutex);