diff options
author | Naohiro Aota <naohiro.aota@wdc.com> | 2025-04-23 05:43:52 +0300 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2025-05-15 15:30:53 +0300 |
commit | 635da7ea9a12b1db28ab7db260e3d64108e18f15 (patch) | |
tree | f026ab0e3af9e412959f13eb7de8eb43cee4dadc /fs/btrfs/delalloc-space.c | |
parent | df0766407485ccae80a9142f7d1f4f105ff1016d (diff) | |
download | linux-635da7ea9a12b1db28ab7db260e3d64108e18f15.tar.xz |
btrfs: add block reserve for treelog
We need to add a dedicated block_rsv for tree-log, because the block_rsv
serves for a tree node allocation in btrfs_alloc_tree_block(). Currently,
tree-log tree uses fs_info->empty_block_rsv, which is shared across trees
and points to the normal metadata space_info. Instead, we add a dedicated
block_rsv and that block_rsv can use the dedicated sub-space_info.
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/delalloc-space.c')
-rw-r--r-- | fs/btrfs/delalloc-space.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/btrfs/delalloc-space.c b/fs/btrfs/delalloc-space.c index 7128507931f1..288e1776c02d 100644 --- a/fs/btrfs/delalloc-space.c +++ b/fs/btrfs/delalloc-space.c @@ -115,8 +115,11 @@ static inline struct btrfs_space_info *data_sinfo_for_inode(const struct btrfs_i { struct btrfs_fs_info *fs_info = inode->root->fs_info; - if (btrfs_is_zoned(fs_info) && btrfs_is_data_reloc_root(inode->root)) - return fs_info->data_sinfo->sub_group[SUB_GROUP_DATA_RELOC]; + if (btrfs_is_zoned(fs_info) && btrfs_is_data_reloc_root(inode->root)) { + ASSERT(fs_info->data_sinfo->sub_group[0]->subgroup_id == + BTRFS_SUB_GROUP_DATA_RELOC); + return fs_info->data_sinfo->sub_group[0]; + } return fs_info->data_sinfo; } |