aboutsummaryrefslogtreecommitdiffstats
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.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index cf3460e9b122..5e81e3694d92 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -9513,10 +9513,18 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
9513 */ 9513 */
9514 start = block_group->key.objectid; 9514 start = block_group->key.objectid;
9515 end = start + block_group->key.offset - 1; 9515 end = start + block_group->key.offset - 1;
9516 clear_extent_bits(&fs_info->freed_extents[0], start, end, 9516 ret = clear_extent_bits(&fs_info->freed_extents[0], start, end,
9517 EXTENT_DIRTY, GFP_NOFS); 9517 EXTENT_DIRTY, GFP_NOFS);
9518 clear_extent_bits(&fs_info->freed_extents[1], start, end, 9518 if (ret) {
9519 btrfs_set_block_group_rw(root, block_group);
9520 goto end_trans;
9521 }
9522 ret = clear_extent_bits(&fs_info->freed_extents[1], start, end,
9519 EXTENT_DIRTY, GFP_NOFS); 9523 EXTENT_DIRTY, GFP_NOFS);
9524 if (ret) {
9525 btrfs_set_block_group_rw(root, block_group);
9526 goto end_trans;
9527 }
9520 9528
9521 /* Reset pinned so btrfs_put_block_group doesn't complain */ 9529 /* Reset pinned so btrfs_put_block_group doesn't complain */
9522 block_group->pinned = 0; 9530 block_group->pinned = 0;
@@ -9527,6 +9535,7 @@ void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info)
9527 */ 9535 */
9528 ret = btrfs_remove_chunk(trans, root, 9536 ret = btrfs_remove_chunk(trans, root,
9529 block_group->key.objectid); 9537 block_group->key.objectid);
9538end_trans:
9530 btrfs_end_transaction(trans, root); 9539 btrfs_end_transaction(trans, root);
9531next: 9540next:
9532 btrfs_put_block_group(block_group); 9541 btrfs_put_block_group(block_group);