Hi everyone, This series is split from [1] to only include zswap dstmem reuse optimizations and cleanups, the other part of rbtree breakdown will be deferred to retest after the rbtree converted to xarray. And the problem this series tries to optimize is that zswap_load() and zswap_writeback_entry() have to malloc a temporary memory to support !zpool_can_sleep_mapped(). We can avoid it by reusing the percpu crypto_acomp_ctx->dstmem, which is also used by zswap_store() and protected by the same percpu crypto_acomp_ctx->mutex. [1] https://lore.kernel.org/all/20231206-zswap-lock-optimize-v1-0-e25b059f9c3a@xxxxxxxxxxxxx/ Signed-off-by: Chengming Zhou <zhouchengming@xxxxxxxxxxxxx> --- Chengming Zhou (5): mm/zswap: reuse dstmem when decompress mm/zswap: change dstmem size to one page mm/zswap: refactor out __zswap_load() mm/zswap: cleanup zswap_load() mm/zswap: cleanup zswap_reclaim_entry() mm/zswap.c | 158 +++++++++++++++++++------------------------------------------ 1 file changed, 49 insertions(+), 109 deletions(-) --- base-commit: 1f242c1964cf9b8d663a2fd72159b296205a8126 change-id: 20231213-zswap-dstmem-d828f563303d Best regards, -- Chengming Zhou <zhouchengming@xxxxxxxxxxxxx>