diff options
author | Naohiro Aota <naohiro.aota@wdc.com> | 2025-04-23 11:43:49 +0900 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2025-05-15 14:30:53 +0200 |
commit | 9a3023b8289b49abaddf668079c74e7d0cf42ca1 (patch) | |
tree | 791ed9e4086b457679074cccf3d5ae0d1e9949d3 | |
parent | f92ee31e031c7819126d2febdda0c3e91f5d2eb9 (diff) |
btrfs: introduce tree-log sub-space_info
Introduce the tree-log sub-space_info, which is sub-space of
metadata space_info and dedicated for tree-log node allocation.
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r-- | fs/btrfs/space-info.c | 5 | ||||
-rw-r--r-- | fs/btrfs/space-info.h | 1 | ||||
-rw-r--r-- | fs/btrfs/sysfs.c | 11 |
3 files changed, 15 insertions, 2 deletions
diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 0a65817b8e7c..d858da058dce 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -299,6 +299,11 @@ static int create_space_info(struct btrfs_fs_info *info, u64 flags) ret = create_space_info_sub_group(space_info, flags, BTRFS_SUB_GROUP_DATA_RELOC, 0); + else if (flags & BTRFS_BLOCK_GROUP_METADATA) + ret = create_space_info_sub_group(space_info, flags, + BTRFS_SUB_GROUP_TREELOG, + 0); + if (ret) return ret; } diff --git a/fs/btrfs/space-info.h b/fs/btrfs/space-info.h index 2f5c746f4bac..92b7f5e2b850 100644 --- a/fs/btrfs/space-info.h +++ b/fs/btrfs/space-info.h @@ -101,6 +101,7 @@ enum btrfs_flush_state { enum btrfs_space_info_sub_group { BTRFS_SUB_GROUP_PRIMARY, BTRFS_SUB_GROUP_DATA_RELOC, + BTRFS_SUB_GROUP_TREELOG, }; #define BTRFS_SPACE_INFO_SUB_GROUP_MAX 1 diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c index 4667b388e046..5d93d9dd2c12 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c @@ -1938,8 +1938,15 @@ static const char *alloc_name(struct btrfs_space_info *space_info) case BTRFS_BLOCK_GROUP_METADATA | BTRFS_BLOCK_GROUP_DATA: return "mixed"; case BTRFS_BLOCK_GROUP_METADATA: - ASSERT(space_info->subgroup_id == BTRFS_SUB_GROUP_PRIMARY); - return "metadata"; + switch (space_info->subgroup_id) { + case BTRFS_SUB_GROUP_PRIMARY: + return "metadata"; + case BTRFS_SUB_GROUP_TREELOG: + return "metadata-treelog"; + default: + WARN_ON_ONCE(1); + return "metadata (unknown sub-group)"; + } case BTRFS_BLOCK_GROUP_DATA: switch (space_info->subgroup_id) { case BTRFS_SUB_GROUP_PRIMARY: |