Re: [PATCH] btrfs: change block group reclaim_mark to bool
Boris Burkov <[email protected]>
| Newsgroups | org.kernel.vger.linux-btrfs |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jun 24, 2026 at 12:02:27PM +0800, Sun YangKai wrote: > The reclaim_mark field in struct btrfs_block_group was a u64 that was > incremented when marking block groups for reclaim during sweeping, but > the actual counter value was never used - only the zero/non-zero state > mattered for determining if a block group needed reclaim. > > Convert it to a bool to properly reflect its usage and reduce memory > footprint by 8 bytes. Update assignments to use true/false instead of > increment and zero. > LGTM, thanks. Reviewed-by: Boris Burkov <[email protected]> > Signed-off-by: Sun YangKai <[email protected]> > --- > fs/btrfs/block-group.c | 2 +- > fs/btrfs/block-group.h | 7 ++++++- > fs/btrfs/space-info.c | 2 +- > 3 files changed, 8 insertions(+), 3 deletions(-) > > diff --git a/fs/btrfs/block-group.c b/fs/btrfs/block-group.c > index 9e937407d12a9..5829c806c4d48 100644 > --- a/fs/btrfs/block-group.c > +++ b/fs/btrfs/block-group.c > @@ -3923,7 +3923,7 @@ int btrfs_update_block_group(struct btrfs_trans_handle *trans, > old_val += num_bytes; > cache->used = old_val; > cache->reserved -= num_bytes; > - cache->reclaim_mark = 0; > + cache->reclaim_mark = false; > space_info->bytes_reserved -= num_bytes; > space_info->bytes_used += num_bytes; > space_info->disk_used += num_bytes * factor; > diff --git a/fs/btrfs/block-group.h b/fs/btrfs/block-group.h > index 790c2d467af57..942befdf75df7 100644 > --- a/fs/btrfs/block-group.h > +++ b/fs/btrfs/block-group.h > @@ -263,6 +263,12 @@ struct btrfs_block_group { > > enum btrfs_block_group_size_class size_class:8; > > + /* > + * Mark this blockgroup is not used for allocation > + * between two reclaim sweeps. nit: this grammar doesn't parse great to me. Maybe drop "Mark"? or change it to "We identified this for reclaim on a previous pass, so it stably needs reclaim across passes" or something like that. > + */ > + bool reclaim_mark; > + > /* > * Number of extents in this block group used for swap files. > * All accesses protected by the spinlock 'lock'. > @@ -281,7 +287,6 @@ struct btrfs_block_group { > struct list_head active_bg_list; > struct work_struct zone_finish_work; > struct extent_buffer *last_eb; > - u64 reclaim_mark; > }; > > static inline u64 btrfs_block_group_end(const struct btrfs_block_group *block_group) > diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c > index e6641597b321e..39a28e1bec8ad 100644 > --- a/fs/btrfs/space-info.c > +++ b/fs/btrfs/space-info.c > @@ -2156,7 +2156,7 @@ static bool do_reclaim_sweep(struct btrfs_space_info *space_info, int raid) > will_reclaim = true; > reclaim = true; > } > - bg->reclaim_mark++; > + bg->reclaim_mark = true; > spin_unlock(&bg->lock); > if (reclaim) > btrfs_mark_bg_to_reclaim(bg); > -- > 2.54.0 >