v4
2026-09-11
修复 zswap 写回路径的 refault 误计 · v4
将 LRU 插入移出 swap 缓存分配器,在 swap-in 时处理 refault,并让 zswap 回写保留 workingset shadow。
原始补丁链接
子 Patch(3)
1/3
mm: swap: move LRU insertion out of the swap cache allocator
把 __swap_cache_alloc_folio 的 folio_add_lru 移到调用者,使 refault 评估能在入 LRU 前设 PG_active/PG_workingset,并让 zswap writeback 缓冲页保持可释放。
2/3
mm: swap: refault on swap-in, not in the swap cache allocator
把 refault 评估从 swap cache 分配器移到 swap-in,避免 zswap writeback 缓冲误计为匿名 refault;分配器在 ci->lock 下回传被替换 shadow。
3/3
mm: zswap: preserve the workingset shadow across writeback
zswap 写回时把被覆盖的 workingset shadow 暂存到 zswap tree,待 buffer 被 swap-in、回收或槽释放时恢复/消费,避免 anon refault 计数失真。