[RFC v3 15/15] mm, swap: require zswap for xswap devices
Baoquan He <[email protected]>
| Newsgroups | org.kvack.linux-mm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
xswap has no backing storage: swapped-out pages live only in zswap. Without zswap, swapout always bounces back, so the device would consume swap entry space without ever freeing memory. Refuse to create a device when zswap is unavailable. Runtime disabling of zswap after creation is safe: existing entries stay loadable (zswap_load() gates on zswap_never_enabled(), not the runtime zswap_enabled flag) and new swapouts merely bounce back to memory without freeing it. Signed-off-by: Baoquan He <[email protected]> --- mm/swapfile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/swapfile.c b/mm/swapfile.c index 61c307b6a432..911bf3b8c863 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -4340,6 +4340,10 @@ static int xswap_create(int percent) if (percent < 1 || percent > 100) return -EINVAL; + /* xswap has no backing store, it relies on zswap. */ + if (!zswap_is_enabled()) + return -EOPNOTSUPP; + si = alloc_swap_info(); if (IS_ERR(si)) return PTR_ERR(si); -- 2.54.0