Message ID | 32c7579ceb072a870ec8a2e4f0348cfb37bd61d5.1524146556.git.dsterba@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 04/20/2018 12:33 AM, David Sterba wrote: > 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. > > Signed-off-by: David Sterba <dsterba@suse.com> Reviewed-by: Anand Jain <anand.jain@oracle.com> Thanks, Anand -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 5c83ebc8e199..83fbe9d624f5 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -4018,7 +4018,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);
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. Signed-off-by: David Sterba <dsterba@suse.com> --- fs/btrfs/volumes.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)