summaryrefslogtreecommitdiff
path: root/fs/btrfs/delalloc-space.c
diff options
context:
space:
mode:
authorNaohiro Aota <naohiro.aota@wdc.com>2025-04-23 05:43:52 +0300
committerDavid Sterba <dsterba@suse.com>2025-05-15 15:30:53 +0300
commit635da7ea9a12b1db28ab7db260e3d64108e18f15 (patch)
treef026ab0e3af9e412959f13eb7de8eb43cee4dadc /fs/btrfs/delalloc-space.c
parentdf0766407485ccae80a9142f7d1f4f105ff1016d (diff)
downloadlinux-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.c7
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;
}