v2 2026-09-09

移除 page_swap_entry · v2

新增folio_swap_entry()/folio_page_swap_entry()处理swap cache中大folio的基入口,并将各调用点从page_swap_entry()迁移后删除它。

原始补丁链接

子 Patch(8)

1/8
mm/swap: add folio_swap_entry() and folio_page_swap_entry()
新增 folio_swap_entry() 和 folio_page_swap_entry():按 folio->swap 加页索引计算 swap entry,避免已有 folio 时经 compound_head() 或手写算术。
2/8
mm/huge_memory: add a comment to the open-coded swap entry
On Tue Sep 8, 2026 at 11:16 AM EDT, Tal Zussman wrote: > The swap entry of each new folio in __split_folio_to_order() is > computed by hand from folio->swap rather than with folio_swap_entry(), > beca
3/8
mm/rmap: use folio_page_swap_entry() in ttu_anon_swapbacked_folio()
ttu_anon_swapbacked_folio() 已有 folio,改用 folio_page_swap_entry() 取代 page_swap_entry(),省去一次 compound_head() 调用,无功能变化。
4/8
mm/zswap: use folio_swap_entry() in zswap_store_page()
zswap_store_page() 手写 folio->swap 与页索引的换出 entry 计算,改用 folio_swap_entry(),无功能变化。
5/8
mm/swapfile: use folio_page_swap_entry()
folio_dup_swap() 和 folio_put_swap() 内手写的 folio->swap + folio_page_idx() 计算改用 folio_page_swap_entry(),无功能变化。
6/8
arm64: mte: make mte_save_tags() and mte_restore_tags() static
mte_save_tags() 与 mte_restore_tags() 仅被 mteswap.c 内 arch_prepare_to_swap()/arch_swap_restore() 调用,设为 static 并从 mte.h 移除声明。
7/8
arm64: mte: pass the swap entry to mte_save_tags()
arch_prepare_to_swap() 直接用 folio_swap_entry() 把 entry 传给 mte_save_tags(),把 page_mte_tagged() 检查上移,删除 __mte_invalidate_tags(),省两次 compound_head()。
8/8
mm/swap: remove page_swap_entry()
所有调用者已迁移到 folio_swap_entry() 和 folio_page_swap_entry(),删除不再需要的 page_swap_entry()。