summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index c7adff343ba9..5faf057f6f37 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -10831,17 +10831,6 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
10831 remove_em = (atomic_read(&block_group->trimming) == 0); 10831 remove_em = (atomic_read(&block_group->trimming) == 0);
10832 spin_unlock(&block_group->lock); 10832 spin_unlock(&block_group->lock);
10833 10833
10834 if (remove_em) {
10835 struct extent_map_tree *em_tree;
10836
10837 em_tree = &fs_info->mapping_tree.map_tree;
10838 write_lock(&em_tree->lock);
10839 remove_extent_mapping(em_tree, em);
10840 write_unlock(&em_tree->lock);
10841 /* once for the tree */
10842 free_extent_map(em);
10843 }
10844
10845 mutex_unlock(&fs_info->chunk_mutex); 10834 mutex_unlock(&fs_info->chunk_mutex);
10846 10835
10847 ret = remove_block_group_free_space(trans, block_group); 10836 ret = remove_block_group_free_space(trans, block_group);
@@ -10858,6 +10847,19 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
10858 goto out; 10847 goto out;
10859 10848
10860 ret = btrfs_del_item(trans, root, path); 10849 ret = btrfs_del_item(trans, root, path);
10850 if (ret)
10851 goto out;
10852
10853 if (remove_em) {
10854 struct extent_map_tree *em_tree;
10855
10856 em_tree = &fs_info->mapping_tree.map_tree;
10857 write_lock(&em_tree->lock);
10858 remove_extent_mapping(em_tree, em);
10859 write_unlock(&em_tree->lock);
10860 /* once for the tree */
10861 free_extent_map(em);
10862 }
10861out: 10863out:
10862 if (remove_rsv) 10864 if (remove_rsv)
10863 btrfs_delayed_refs_rsv_release(fs_info, 1); 10865 btrfs_delayed_refs_rsv_release(fs_info, 1);