Commit e1a12670 authored by Liu Bo's avatar Liu Bo Committed by Josef Bacik
Browse files

Btrfs: free all recorded tree blocks on error



We've missed the 'free blocks' part on ENOMEM error.

Signed-off-by: default avatarLiu Bo <bo.li.liu@oracle.com>
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent aca1bba6
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -2848,8 +2848,10 @@ int relocate_tree_blocks(struct btrfs_trans_handle *trans,
	int err = 0;

	path = btrfs_alloc_path();
	if (!path)
		return -ENOMEM;
	if (!path) {
		err = -ENOMEM;
		goto out_path;
	}

	rb_node = rb_first(blocks);
	while (rb_node) {
@@ -2888,10 +2890,11 @@ int relocate_tree_blocks(struct btrfs_trans_handle *trans,
		rb_node = rb_next(rb_node);
	}
out:
	free_block_list(blocks);
	err = finish_pending_nodes(trans, rc, path, err);

	btrfs_free_path(path);
out_path:
	free_block_list(blocks);
	return err;
}