mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 15:20:53 +07:00
btrfs: add sanity check when resuming balance after mount
Replace a WARN_ON with a proper check and message in case something goes really wrong and resumed balance cannot set up its exclusive status. The check is a user friendly assertion, I don't expect to ever happen under normal circumstances. Also document that the paused balance starts here and owns the exclusive op status. Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
010a47bde9
commit
eee95e3fb0
@ -4047,7 +4047,19 @@ int btrfs_recover_balance(struct btrfs_fs_info *fs_info)
|
||||
btrfs_balance_sys(leaf, item, &disk_bargs);
|
||||
btrfs_disk_balance_args_to_cpu(&bctl->sys, &disk_bargs);
|
||||
|
||||
WARN_ON(test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags));
|
||||
/*
|
||||
* This should never happen, as the paused balance state is recovered
|
||||
* during mount without any chance of other exclusive ops to collide.
|
||||
*
|
||||
* This gives the exclusive op status to balance and keeps in paused
|
||||
* state until user intervention (cancel or umount). If the ownership
|
||||
* cannot be assigned, show a message but do not fail. The balance
|
||||
* is in a paused state and must have fs_info::balance_ctl properly
|
||||
* set up.
|
||||
*/
|
||||
if (test_and_set_bit(BTRFS_FS_EXCL_OP, &fs_info->flags))
|
||||
btrfs_warn(fs_info,
|
||||
"cannot set exclusive op status to balance, resume manually");
|
||||
|
||||
mutex_lock(&fs_info->volume_mutex);
|
||||
mutex_lock(&fs_info->balance_mutex);
|
||||
|
Loading…
Reference in New Issue
Block a user