aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/relocation.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/relocation.c')
-rw-r--r--fs/btrfs/relocation.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c
index 08ef890deca6..1cfd35cfac76 100644
--- a/fs/btrfs/relocation.c
+++ b/fs/btrfs/relocation.c
@@ -2418,7 +2418,7 @@ again:
2418 } 2418 }
2419out: 2419out:
2420 if (ret) { 2420 if (ret) {
2421 btrfs_std_error(root->fs_info, ret, NULL); 2421 btrfs_handle_fs_error(root->fs_info, ret, NULL);
2422 if (!list_empty(&reloc_roots)) 2422 if (!list_empty(&reloc_roots))
2423 free_reloc_roots(&reloc_roots); 2423 free_reloc_roots(&reloc_roots);
2424 2424
@@ -4254,12 +4254,11 @@ int btrfs_relocate_block_group(struct btrfs_root *extent_root, u64 group_start)
4254 btrfs_info(extent_root->fs_info, "relocating block group %llu flags %llu", 4254 btrfs_info(extent_root->fs_info, "relocating block group %llu flags %llu",
4255 rc->block_group->key.objectid, rc->block_group->flags); 4255 rc->block_group->key.objectid, rc->block_group->flags);
4256 4256
4257 ret = btrfs_start_delalloc_roots(fs_info, 0, -1); 4257 btrfs_wait_block_group_reservations(rc->block_group);
4258 if (ret < 0) { 4258 btrfs_wait_nocow_writers(rc->block_group);
4259 err = ret; 4259 btrfs_wait_ordered_roots(fs_info, -1,
4260 goto out; 4260 rc->block_group->key.objectid,
4261 } 4261 rc->block_group->key.offset);
4262 btrfs_wait_ordered_roots(fs_info, -1);
4263 4262
4264 while (1) { 4263 while (1) {
4265 mutex_lock(&fs_info->cleaner_mutex); 4264 mutex_lock(&fs_info->cleaner_mutex);