Re: [PATCH 1/1] mm/zswap: enable static key after runtime pool recovery
From: Longlong Xia
Date: Sat Sep 05 2026 - 20:32:28 EST
Thanks for taking a look.
在 2026/9/6 7:09, Andrew Morton 写道:
On Sat, 5 Sep 2026 20:50:28 +0800 Longlong Xia <xialonglong2025@xxxxxxx> wrote:
From: Longlong Xia <xialonglong@xxxxxxxxxx>That sounds bad. I'll leave it to reviewers to suggest whether this is
When CONFIG_ZSWAP_DEFAULT_ON is disabled, zswap_setup() can complete
without a pool after a failed initial pool creation. A later compressor
parameter update can create and publish a pool, but does not enable
zswap_ever_enabled.
If users then enable zswap, zswap_store() intercepts swapout while
zswap_load() still returns -ENOENT without consulting the xarray. The
swapin path therefore reads a stale backing swap slot because the store
skipped writing it.
a sufficient description of the runtime effects, and to decide whether
a backport is appropriate. Please.
Enable the static key after a successful compressor and pool update. DoAnd thanks. Sashiko might have found another issue in this zswap code:
this outside zswap_pools_lock because static key updates may sleep.
Verified with fault injection on a stock kernel (compressor builtin,
CONFIG_ZSWAP_DEFAULT_ON=n):
1. Boot with zswap.enabled=1; pool creation fails, init completes
pool-less (static key off).
2. Echo an available compressor name to zswap.compressor; a pool is
recovered but the key stays off.
3. Enable zswap.
4. madvise(MADV_PAGEOUT) a pattern-verified 512 MiB region, then
fault it back in and verify.
Step 4 reads back 131072/131072 zeroed pages (zswpin=0, zswpout=131072)
without this patch; all pages intact (zswpin=131072) with it.
https://sashiko.dev/#/patchset/20260905125101.2970456-1-xialonglong2025@xxxxxxx
I'll send a separate fix patch.
Thanks,
Longlong