Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9b1fc85 authored by Liu Bo's avatar Liu Bo Committed by David Sterba
Browse files

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: default avatarLiu Bo <bo.li.liu@oracle.com>
Reviewed-by: default avatarQu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 3dc09ec8
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -4200,9 +4200,11 @@ static noinline_for_stack int relocate_block_group(struct reloc_control *rc)
		err = PTR_ERR(trans);
		goto out_free;
	}
	err = qgroup_fix_relocated_data_extents(trans, rc);
	if (err < 0) {
		btrfs_abort_transaction(trans, err);
	ret = qgroup_fix_relocated_data_extents(trans, rc);
	if (ret < 0) {
		btrfs_abort_transaction(trans, ret);
		if (!err)
			err = ret;
		goto out_free;
	}
	btrfs_commit_transaction(trans, rc->extent_root);