From: Kairui Song <ryncsn@gmail.com>
To: Ridong Chen <ridong.chen@linux.dev>
Cc: kasong@tencent.com, linux-mm@kvack.org,
Andrew Morton <akpm@linux-foundation.org>,
Barry Song <baohua@kernel.org>,
Axel Rasmussen <axelrasmussen@google.com>,
Yuanchu Xie <yuanchu@google.com>, Wei Xu <weixugc@google.com>,
Baoquan He <baoquan.he@linux.dev>,
Shakeel Butt <shakeel.butt@linux.dev>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Roman Gushchin <roman.gushchin@linux.dev>,
Muchun Song <muchun.song@linux.dev>,
Chris Li <chrisl@kernel.org>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
David Hildenbrand <david@kernel.org>,
Lorenzo Stoakes <ljs@kernel.org>,
"Liam R. Howlett" <liam@infradead.org>,
Vlastimil Babka <vbabka@kernel.org>, Yu Zhao <yuzhao@google.com>,
Zi Yan <ziy@nvidia.com>, Qi Zheng <qi.zheng@linux.dev>,
cgroups@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/7] mm/mglru: introduce helpers for manipulating gen and refs flags
Date: Mon, 24 Aug 2026 19:09:24 +0800 [thread overview]
Message-ID: <aowABnB6OPCb95eC@KASONG-MC4> (raw)
In-Reply-To: <a13c3895-cc53-4f91-aac8-2bfef765eca5@linux.dev>
On Thu, Aug 20, 2026 at 09:43:38AM +0800, Ridong Chen wrote:
>
>
> On 8/18/2026 1:38 PM, Kairui Song via B4 Relay wrote:
> > From: Kairui Song <kasong@tencent.com>
> >
> > Instead of doing bit ops on folio->flags.f, introduce helpers for
> > adjusting folio's refs and gen info, make the code easier to debug and
> > understand.
> >
> > No functional change is intended: some combined atomic operations are
> > split into two, which only creates harmless transient states.
> >
> > Signed-off-by: Kairui Song <kasong@tencent.com>
> > ---
> > include/linux/mm_inline.h | 79 +++++++++++++++++++++++++++++++++++++++++------
> > include/linux/mmzone.h | 2 ++
> > mm/folio.c | 19 +++++++-----
> > mm/vmscan.c | 61 ++++++++++++++++++++----------------
> > 4 files changed, 117 insertions(+), 44 deletions(-)
> >
> > diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
> > index 621c8653d8f7..93bf3fa221f8 100644
> > --- a/include/linux/mm_inline.h
> > +++ b/include/linux/mm_inline.h
> > @@ -142,10 +142,43 @@ static inline int lru_tier_from_refs(int refs, bool workingset)
> > return workingset ? MAX_NR_TIERS - 1 : order_base_2(refs);
> > }
> > -static inline int folio_lru_refs(const struct folio *folio)
> > +/**
> > + * lru_gen_from_flags - Return the LRU generation number from folio flags.
> > + * @flags: folio flags
> > + *
> > + * Returns: A number between 0 and LRU_GEN_MAX, inclusive. Returns -1 if the
> > + * flags indicate the folio is off the list (e.g., isolated).
> > + */
> > +static inline int lru_gen_from_flags(unsigned long flags)
> > +{
> > + int gen = ((flags & LRU_GEN_MASK) >> LRU_GEN_PGOFF);
> > +
> > + BUILD_BUG_ON(LRU_GEN_MASK & LRU_REFS_MASK);
> > + gen -= 1;
> > + VM_WARN_ON_ONCE(gen != -1 && gen > LRU_GEN_MAX);
>
> Perhaps we could define a macro such as GEN_OFF = -1 to make the code more
> self-explanatory, I found this warning a bit confusing at first glance.
>
> LRU_GEN_MAX already bears some resemblance to MAX_NR_GENS, so introducing
> yet another macro may add some clutter.
>
> Just my two cents.
>
Thanks for the review.
Let me just simplify the sanity check then, I think using MAX_NR_GENS are
good engough.
next prev parent reply other threads:[~2026-08-24 11:09 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-18 5:38 [PATCH 0/7] mm/mglru: clean up folio counters and flag usage Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-18 5:38 ` [PATCH 1/7] mm/memcontrol: make lru_zone_size atomic and simplify sanity check Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-19 2:05 ` Ridong Chen
2026-08-18 5:38 ` [PATCH 2/7] mm/mglru: introduce helpers for manipulating gen and refs flags Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-19 9:03 ` Baolin Wang
2026-08-19 9:37 ` Kairui Song
2026-08-19 9:46 ` Baolin Wang
2026-08-19 9:49 ` Kairui Song
2026-08-20 1:43 ` Ridong Chen
2026-08-20 2:04 ` Ridong Chen
2026-08-20 2:05 ` Ridong Chen
2026-08-24 11:09 ` Kairui Song [this message]
2026-08-18 5:38 ` [PATCH 3/7] mm/migrate: copy the referenced state via folio_migrate_refs() Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-19 10:12 ` Baoquan He
2026-08-20 18:20 ` David Hildenbrand (Arm)
2026-08-24 12:29 ` Kairui Song
2026-08-18 5:38 ` [PATCH 4/7] mm/mglru: move max_seq read into walk_update_folio Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-19 9:18 ` Baolin Wang
2026-08-24 12:44 ` Kairui Song
2026-08-20 2:13 ` Ridong Chen
2026-08-18 5:38 ` [PATCH 5/7] mm/mglru: use explicit tier range in read_ctrl_pos() Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-19 9:25 ` Baolin Wang
2026-08-19 10:16 ` Baoquan He
2026-08-19 21:24 ` Barry Song
2026-08-20 2:33 ` Ridong Chen
2026-08-20 3:22 ` Kairui Song
2026-08-18 5:38 ` [PATCH 6/7] mm/mglru: fix potential generation folio number leak Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-20 1:52 ` Baolin Wang
2026-08-20 3:45 ` Kairui Song
2026-08-20 8:53 ` Baolin Wang
2026-08-20 9:40 ` Kairui Song
2026-08-18 5:38 ` [PATCH 7/7] mm/mglru: improve code readability and harden folio_inc_gen Kairui Song via B4 Relay
2026-08-18 5:38 ` Kairui Song
2026-08-19 21:30 ` Barry Song
2026-08-20 0:53 ` Baoquan He
2026-08-20 0:57 ` Baoquan He
2026-08-20 1:02 ` Baolin Wang
2026-08-20 2:11 ` Kairui Song
2026-08-20 2:27 ` Baoquan He
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aowABnB6OPCb95eC@KASONG-MC4 \
--to=ryncsn@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=axelrasmussen@google.com \
--cc=baohua@kernel.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=baoquan.he@linux.dev \
--cc=cgroups@vger.kernel.org \
--cc=chrisl@kernel.org \
--cc=david@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kasong@tencent.com \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=qi.zheng@linux.dev \
--cc=ridong.chen@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeel.butt@linux.dev \
--cc=vbabka@kernel.org \
--cc=weixugc@google.com \
--cc=yuanchu@google.com \
--cc=yuzhao@google.com \
--cc=ziy@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.