[PATCH 0/3] mm/mglru: clean up isolate_folios and scan_folios for readability and clarity

From: Barry Song (Xiaomi)

Date: Thu Aug 20 2026 - 00:57:04 EST


This is a cleanup series split out from the MGLRU swappiness series [1],
with the cleanup changes separated to make them easier to review.

Right now, isolate_folios() is quite difficult to follow:

1. It uses for_each_evictable_type(i, swappiness) to iterate over the
types, but i is not actually used as the type within the loop body.

2. It uses scanned == 0 to detect whether the current reclaim type is
exhausted, but this is not an accurate indication.

3. It has an internal retry when no folios can be isolated after scanning
some folios, but the retry is implemented in a way nobody can understand.

This patchset makes these behaviors explicit and much easier to follow.

Run kernel builds for several rounds in a 1 GB memcg and take the
average build time. The patchset shows almost no performance impact,
with a very small improvement that could simply be noise:

w/o patch w/patch Delta

real 109.149 108.990 -0.15%
sys 223.213 222.592 -0.28%

pgscan_file 498,208 486,994 -2.25%
refault_file 262,696 254,688 -3.05%

Thanks very much to Baolin and Lian for their previous reviews of the
original RFC patchset for this part.

[1] https://lore.kernel.org/linux-mm/20260812121658.69965-1-baohua@xxxxxxxxxx/

Barry Song (Xiaomi) (2):
mm/mglru: improve scan_folios() exhaustion detection
mm/mglru: retry the same type once if isolation fails due to races

Ridong Chen (1):
mm/mglru: improve readability of isolate_folios()

mm/vmscan.c | 78 ++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 54 insertions(+), 24 deletions(-)

--
2.34.1