Commit 0b10f3dd authored by David Sterba's avatar David Sterba
Browse files

btrfs: move transaction aborts to the error site in remove_block_group_free_space()



Transaction aborts should be done next to the place the error happens,
which was not done in remove_block_group_free_space().

Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 81bfd9d5
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -1491,6 +1491,7 @@ int remove_block_group_free_space(struct btrfs_trans_handle *trans,
	path = btrfs_alloc_path();
	if (!path) {
		ret = -ENOMEM;
		btrfs_abort_transaction(trans, ret);
		goto out;
	}

@@ -1503,8 +1504,10 @@ int remove_block_group_free_space(struct btrfs_trans_handle *trans,

	while (!done) {
		ret = btrfs_search_prev_slot(trans, root, &key, path, -1, 1);
		if (ret)
		if (ret) {
			btrfs_abort_transaction(trans, ret);
			goto out;
		}

		leaf = path->nodes[0];
		nr = 0;
@@ -1532,16 +1535,16 @@ int remove_block_group_free_space(struct btrfs_trans_handle *trans,
		}

		ret = btrfs_del_items(trans, root, path, path->slots[0], nr);
		if (ret)
		if (ret) {
			btrfs_abort_transaction(trans, ret);
			goto out;
		}
		btrfs_release_path(path);
	}

	ret = 0;
out:
	btrfs_free_path(path);
	if (ret)
		btrfs_abort_transaction(trans, ret);
	return ret;
}