v3
2026-08-29
清理 MGLRU folio 计数与标志使用 · v3
MGLRU清理:替换散落的位操作为辅助函数,并修复代际folio计数泄漏。
原始补丁链接
子 Patch(6)
1/6
mm/memcontrol: make lru_zone_size atomic and simplify sanity check
将lru_zone_size改为atomic_long,underflow在reader侧检查,移除原来对正负delta分开处理和underflow修正,减小updater开销。
2/6
mm/mglru: introduce helpers for manipulating gen and refs flags
Sashiko reports (TLDR: false positive, please ignore) commit 381ba2d1b94989f14f9427e1427b761444230107 Author: Kairui Song kasong@tencent.com mm/mglru: introduce helpers for manipulating gen and re
3/6
mm/migrate: copy all referenced state via folio_migrate_lru_refs
把PG_referenced拷贝并入folio_migrate_lru_refs,统一迁移MGLRU引用状态;在dest标记uptodate前传输,防止并发lockless reader覆盖更新。
4/6
mm/mglru: move max_seq read into walk_update_folio
将max_seq读取从walk_pte_range等调用方移入walk_update_folio,每次folio更新时取最新max_seq,确保folio提升到当前最年轻代。
5/6
mm/mglru: use explicit tier range in read_ctrl_pos()
read_ctrl_pos改用显式(tier_min, tier_max)闭区间参数,替代tier取模编码范围,增加LRU_TIER_MIN/MAX常量,无功能变化,提升可读性。
6/6
mm/mglru: fix potential generation folio number leak
修复MGLRU walker中folio类型在cmpxchg与update_batch_size读取之间翻转导致记账错列的问题,用folio_update_gen返回的旧类型计数,防止nr_pages永久失真。