|
@@ -3871,6 +3871,7 @@ static noinline_for_stack
|
|
|
int prepare_to_relocate(struct reloc_control *rc)
|
|
|
{
|
|
|
struct btrfs_trans_handle *trans;
|
|
|
+ int ret;
|
|
|
|
|
|
rc->block_rsv = btrfs_alloc_block_rsv(rc->extent_root,
|
|
|
BTRFS_BLOCK_RSV_TEMP);
|
|
@@ -3885,6 +3886,11 @@ int prepare_to_relocate(struct reloc_control *rc)
|
|
|
rc->reserved_bytes = 0;
|
|
|
rc->block_rsv->size = rc->extent_root->nodesize *
|
|
|
RELOCATION_RESERVED_NODES;
|
|
|
+ ret = btrfs_block_rsv_refill(rc->extent_root,
|
|
|
+ rc->block_rsv, rc->block_rsv->size,
|
|
|
+ BTRFS_RESERVE_FLUSH_ALL);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
rc->create_reloc_tree = 1;
|
|
|
set_reloc_control(rc);
|