[PATCH v2 0/4] reparent the THP split queue

Qi Zheng
2025-09-23T09:16:47Z

Changes in v2:
- fix build errors in [PATCH 2/4] and [PATCH 4/4]
- some cleanups for [PATCH 3/4] (suggested by David Hildenbrand)
- collect Acked-bys and Reviewed-bys
- rebase onto the next-20250922

Hi all,

In the future, we will reparent LRU folios during memcg offline to eliminate
dying memory cgroups, which requires reparenting the THP split queue to its
parent memcg.

Similar to list_lru, the split queue is relatively independent and does not need
to be reparented along with objcg and LRU folios (holding objcg lock and lru
lock). Therefore, we can apply the same mechanism as list_lru to reparent the
split queue first when memcg is offine.

The first three patches in this series are separated from the series
"Eliminate Dying Memory Cgroup" [1], mainly to do some cleanup and preparatory
work.

The last patch reparents the THP split queue to its parent memcg during memcg
offline.

Comments and suggestions are welcome!

Thanks,
Qi

[1]. https://lore.kernel.org/all/20250415024532.26632-1-songmuchun@bytedance.com/

Muchun Song (3):
mm: thp: replace folio_memcg() with folio_memcg_charged()
mm: thp: introduce folio_split_queue_lock and its variants
mm: thp: use folio_batch to handle THP splitting in
deferred_split_scan()

Qi Zheng (1):
mm: thp: reparent the split queue during memcg offline

include/linux/huge_mm.h | 2 +
include/linux/memcontrol.h | 10 ++
include/linux/mmzone.h | 1 +
mm/huge_memory.c | 229 +++++++++++++++++++++++++------------
mm/memcontrol.c | 1 +
mm/mm_init.c | 1 +
6 files changed, 172 insertions(+), 72 deletions(-)

--
2.20.1