[PATCH v2 0/5] mm/rmap: Refactor try_to_unmap_one

From: Dev Jain

Date: Fri Jul 10 2026 - 01:59:41 EST


In preparation for batching anonymous large folio unmapping to optimize it,
refactor try_to_unmap_one. This series refactors hugetlb, anon-lazyfree
and anon-swapbacked logic into their own functions, significantly
reducing the length of the huge try_to_unmap_one.

---
Split out from
https://lore.kernel.org/all/20260526063635.61721-1-dev.jain@xxxxxxx/

mm-selftests pass on arm64, built on arm64 and x86.

v1->v2:
- constify ttu flags in try_to_unmap_hugetlb_one, move const variables up
- Assert address passed to try_to_unmap_hugetlb_one equals pvmw.address
- Patch 3: code and comment polishing, do the stat update in the function
- Remove unnecessary inline hints, remove set_swp_pte_at, instead have
swp_pte_prepare + set_ptes. Rename subpage -> page. constify
anon_exclusive.
- Do pte restoration in caller

Dev Jain (5):
mm/rmap: convert page -> folio for hwpoison checks
mm/rmap: Add try_to_unmap_hugetlb_one
mm/rmap: refactor some code around lazyfree folio unmapping
mm/rmap: refactor anon folio unmap in try_to_unmap_one
mm/rmap: add anon folio unmap dispatcher

include/linux/hugetlb.h | 1 +
mm/rmap.c | 420 ++++++++++++++++++++++------------------
2 files changed, 237 insertions(+), 184 deletions(-)

--
2.43.0