Skip to content

Commit 9dd0e80

Browse files
loemrawadam900710
authored andcommitted
btrfs-progs: remove block group free space
In the upstream equivalent of btrfs_remove_block_group(), the function remove_block_group_free_space() is called to delete free spaces associated with the block group being freed. However, this function is defined in btrfs-progs but not called anywhere. To address this issue, I added a call to remove_block_group_free_space() in btrfs_remove_block_group(). This ensures that the free spaces are properly deleted when a block group is removed. I also added a check to remove_block_group_free_space to make sure that free-space-tree is enabled. Signed-off-by: Leo Martins <loemra.dev@gmail.com>
1 parent 9c1d53d commit 9dd0e80

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

kernel-shared/extent-tree.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3506,6 +3506,16 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans,
35063506
return ret;
35073507
}
35083508

3509+
/* delete free space items associated with this block group */
3510+
ret = remove_block_group_free_space(trans, block_group);
3511+
if (ret < 0) {
3512+
fprintf(stderr,
3513+
"failed to remove free space associated with block group for [%llu,%llu)\n",
3514+
bytenr, bytenr + len);
3515+
btrfs_unpin_extent(fs_info, bytenr, len);
3516+
return ret;
3517+
}
3518+
35093519
/* Now release the block_group_cache */
35103520
ret = free_block_group_cache(trans, fs_info, bytenr, len);
35113521
btrfs_unpin_extent(fs_info, bytenr, len);

kernel-shared/free-space-tree.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1171,6 +1171,9 @@ int remove_block_group_free_space(struct btrfs_trans_handle *trans,
11711171
int done = 0, nr;
11721172
int ret;
11731173

1174+
if (!btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE))
1175+
return 0;
1176+
11741177
path = btrfs_alloc_path();
11751178
if (!path) {
11761179
ret = -ENOMEM;

0 commit comments

Comments
 (0)