[PATCH v2 0/2] mm/mglru: clean up isolate_folios for readability and clarity

From: Barry Song (Xiaomi)

Date: Sat Aug 29 2026 - 03:42:22 EST


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 retries the same type when folios were scanned but none could
be isolated, but the retry is implemented in a rather subtle way
that is difficult to understand.

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

There are no functional changes for swappiness values from 1 to 200.
There is a slight functional change for 0 and 201: with the existing
code, there is no chance to retry for these values because
`for_each_evictable_type()` only iterates once. After this patch, 0 and
201 have behavior that is more consistent with the 1-200 range.

-v2:
* Rename patch 1, to address Baoquan's comments;
* Drop patches 2/3. Patch 2 seems to improve the zRAM case
but negatively affect the SSD/NVMe case, according to Baolin
and Kairui. Drop it to keep the patchset focused on readability.
* We received many tags from Baolin, Kairui, Ridong, and Lian.
Since patch 1/3 and 3/3 were renamed and patches 2/3 were dropped,
I did not carry the tags forward. Many thanks for the reviews,
and hopefully you can re-review this version.
-v1:
https://lore.kernel.org/linux-mm/20260820045603.68809-1-baohua@xxxxxxxxxx/

Barry Song (Xiaomi) (1):
mm/mglru: make retry logic explicit in isolate_folios()

Ridong Chen (1):
mm/mglru: make type fallback logic explicit in isolate_folios()

mm/vmscan.c | 56 ++++++++++++++++++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 20 deletions(-)

--
2.34.1