v2
2026-09-10
zswap 杂项优化 · v2
清理 zswap_invalidate() 重复逻辑,在 zswap_store() 增加 fast path 跳过冗余 xarray 查找,并让 swap_range_free() 跳过无谓失效调用。
原始补丁链接
子 Patch(4)
1/4
mm: zswap: pass type and offset to zswap_invalidate() directly
zswap_invalidate() 改为直接接收 type 和 offset,调用者不再构造再解包 swp_entry_t,消除无意义的类型与偏移转换。
2/4
mm: zswap: reuse zswap_invalidate() in zswap_store() check_old path
zswap_store() 的 check_old 路径改为调用 zswap_invalidate(),复用 xa_empty() 短路和 per-slot 释放,去掉重复的 xarray 查找与 entry 释放。
3/4
mm: zswap: avoid unnecessary xarray lookup in zswap_store()
zswap_store() 在 zswap 从未启用时提前用 zswap_never_enabled() 返回,避免继续走 check_old 去遍历 swap xarray,与 zswap_load() 一致。
4/4
mm: zswap: skip zswap_invalidate() in swap_range_free() when zswap is unused
swap_range_free() 释放 swap 范围时,若 zswap_never_enabled() 为真则跳过逐 slot 的 zswap_invalidate(),避免无 zswap 时仍遍历 xarray。