提交 a9b1fc85 编写于 作者: L Liu Bo 提交者: David Sterba

Btrfs: fix endless loop in balancing block groups

Qgroup function may overwrite the saved error 'err' with 0
in case quota is not enabled, and this ends up with a
endless loop in balance because we keep going back to balance
the same block group.

It really should use 'ret' instead.
Signed-off-by: NLiu Bo <bo.li.liu@oracle.com>
Reviewed-by: NQu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: NDavid Sterba <dsterba@suse.com>
上级 3dc09ec8
...@@ -4200,9 +4200,11 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc) ...@@ -4200,9 +4200,11 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
err = PTR_ERR(trans); err = PTR_ERR(trans);
goto out_free; goto out_free;
} }
err = qgroup_fix_relocated_data_extents(trans, rc); ret = qgroup_fix_relocated_data_extents(trans, rc);
if (err < 0) { if (ret < 0) {
btrfs_abort_transaction(trans, err); btrfs_abort_transaction(trans, ret);
if (!err)
err = ret;
goto out_free; goto out_free;
} }
btrfs_commit_transaction(trans, rc->extent_root); btrfs_commit_transaction(trans, rc->extent_root);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册