diff options
Diffstat (limited to 'fs/btrfs/relocation.c')
-rw-r--r-- | fs/btrfs/relocation.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 0bf3bc879503..23e16de52e23 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -3871,6 +3871,7 @@ static noinline_for_stack | |||
3871 | int prepare_to_relocate(struct reloc_control *rc) | 3871 | int prepare_to_relocate(struct reloc_control *rc) |
3872 | { | 3872 | { |
3873 | struct btrfs_trans_handle *trans; | 3873 | struct btrfs_trans_handle *trans; |
3874 | int ret; | ||
3874 | 3875 | ||
3875 | rc->block_rsv = btrfs_alloc_block_rsv(rc->extent_root, | 3876 | rc->block_rsv = btrfs_alloc_block_rsv(rc->extent_root, |
3876 | BTRFS_BLOCK_RSV_TEMP); | 3877 | BTRFS_BLOCK_RSV_TEMP); |
@@ -3885,6 +3886,11 @@ int prepare_to_relocate(struct reloc_control *rc) | |||
3885 | rc->reserved_bytes = 0; | 3886 | rc->reserved_bytes = 0; |
3886 | rc->block_rsv->size = rc->extent_root->nodesize * | 3887 | rc->block_rsv->size = rc->extent_root->nodesize * |
3887 | RELOCATION_RESERVED_NODES; | 3888 | RELOCATION_RESERVED_NODES; |
3889 | ret = btrfs_block_rsv_refill(rc->extent_root, | ||
3890 | rc->block_rsv, rc->block_rsv->size, | ||
3891 | BTRFS_RESERVE_FLUSH_ALL); | ||
3892 | if (ret) | ||
3893 | return ret; | ||
3888 | 3894 | ||
3889 | rc->create_reloc_tree = 1; | 3895 | rc->create_reloc_tree = 1; |
3890 | set_reloc_control(rc); | 3896 | set_reloc_control(rc); |