Re: [PATCH 3/6] mm/mglru: enhance cold/hot inversion handling in inc_min_seq()

From: Baoquan He

Date: Wed Aug 26 2026 - 20:47:05 EST


On 08/27/26 at 05:43am, Barry Song wrote:
> On Wed, Aug 26, 2026 at 4:56 PM Baoquan He <baoquan.he@xxxxxxxxx> wrote:
> >
> > On 08/21/26 at 06:25pm, Barry Song (Xiaomi) wrote:
> > > During aging, a folio's generation may already have been updated by
> > > folio_update_gen(), even though it has not yet been moved to the
> > > corresponding generation list. Such folios are hotter than those
> > > already in that generation.
> > >
> > > It makes sense for inc_min_seq() to increment the generation of
> > > folios that were never promoted during aging and move them to the
> > > tail of the new oldest generation. However, folios that were already
> > > promoted should instead be moved to the head of their updated
> > > generation, just as sort_folio() does in scan_folios().
> >
> > While sort_folio() move protected folio to the head of next gen too.
> > It only moves ineligible folios to the tail of next gen.
> >
>
> Hi Baoquan,
>
> Thanks for the review! I’m not quite sure I understand what you mean :-)
> Could you please clarify what you’re suggesting?

Sorry for the confusion, Barry. I meant this is a good one, and
sort_folio() has the similar issue in which the protected folios are
moved to the head, wondering if that need be adjusted too. One consistent
rule for both is better.

>
> I can explain the design in more detail.
>
> Yes. For both promoted and protected folios, `sort_folio()` moves them
> to the head of the corresponding generation.
>
> Here, `inc_min_seq()` is a bit different. We are overlapping `max_seq`
> and `min_seq`, so the `min_seq` generation should be moved to the
> second-oldest generation. Therefore, I think non-promoted folios should
> be placed at the tail.
> They are genuinely not promoted, so they shouldn't be at the head.
>
> For example, suppose we have the following folios:
>
> Second-oldest gen: f1, f2, f3, f4
>
> Oldest gen: f5 (promoted), f6 (not promoted),
> f7 (promoted), f8 (not promoted)
>
> Without my patchset, the result is:
>
> Second-oldest:
>
> f1, f2, f3, f4, f8 (promoted), f7 (not promoted),
> f6 (not promoted), f5 (promoted)
>
> So you can see that both promoted and non-promoted folios are at the tail
> of the second-oldest generation?
>
> With my patchset, the result is:
>
> Second-oldest:
>
> f5 (promoted), f8 (promoted), f1, f2, f3, f4,
> f7 (not promoted), f6 (not promoted)
>
> Best Regards
> Barry