From: Naohiro Aota Date: Wed, 23 Apr 2025 02:43:53 +0000 (+0900) Subject: btrfs: add support for reclaiming from sub-space space_info X-Git-Tag: v6.16-rc1~214^2~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=45a59513b4b2d9b822b241c73b57b29b9e92b245;p=thirdparty%2Flinux.git btrfs: add support for reclaiming from sub-space space_info Modify btrfs_async_{data,metadata}_reclaim() to run the reclaim process on the sub-spaces as well. Reviewed-by: Johannes Thumshirn Signed-off-by: Naohiro Aota Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 5b477960ee1f5..d9087aa81b213 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -1224,6 +1224,10 @@ static void btrfs_async_reclaim_metadata_space(struct work_struct *work) fs_info = container_of(work, struct btrfs_fs_info, async_reclaim_work); space_info = btrfs_find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); do_async_reclaim_metadata_space(space_info); + for (int i = 0; i < BTRFS_SPACE_INFO_SUB_GROUP_MAX; i++) { + if (space_info->sub_group[i]) + do_async_reclaim_metadata_space(space_info->sub_group[i]); + } } /* @@ -1452,6 +1456,9 @@ static void btrfs_async_reclaim_data_space(struct work_struct *work) fs_info = container_of(work, struct btrfs_fs_info, async_data_reclaim_work); space_info = fs_info->data_sinfo; do_async_reclaim_data_space(space_info); + for (int i = 0; i < BTRFS_SPACE_INFO_SUB_GROUP_MAX; i++) + if (space_info->sub_group[i]) + do_async_reclaim_data_space(space_info->sub_group[i]); } void btrfs_init_async_reclaim_work(struct btrfs_fs_info *fs_info)