From: Nikolay Borisov Date: Thu, 25 Nov 2021 09:14:42 +0000 (+0200) Subject: btrfs: make device add compatible with paused balance in btrfs_exclop_start_try_lock X-Git-Tag: baikal/aarch64/sdk6.1~4929^2~50 X-Git-Url: https://git.baikalelectronics.ru/sdk/?a=commitdiff_plain;h=1766f7c4e8054e0f7a834766b9793c4b4463c4d2;p=kernel.git btrfs: make device add compatible with paused balance in btrfs_exclop_start_try_lock This is needed to enable device add to work in cases when a file system has been mounted with 'skip_balance' mount option. Signed-off-by: Nikolay Borisov Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 6752e4b8b351d..f706287942c50 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -387,6 +387,7 @@ bool btrfs_exclop_start(struct btrfs_fs_info *fs_info, * * Compatibility: * - the same type is already running + * - when trying to add a device and balance has been paused * - not BTRFS_EXCLOP_NONE - this is intentionally incompatible and the caller * must check the condition first that would allow none -> @type */ @@ -394,7 +395,9 @@ bool btrfs_exclop_start_try_lock(struct btrfs_fs_info *fs_info, enum btrfs_exclusive_operation type) { spin_lock(&fs_info->super_lock); - if (fs_info->exclusive_operation == type) + if (fs_info->exclusive_operation == type || + (fs_info->exclusive_operation == BTRFS_EXCLOP_BALANCE_PAUSED && + type == BTRFS_EXCLOP_DEV_ADD)) return true; spin_unlock(&fs_info->super_lock);