From: Kefeng Wang <wangkefeng.wang@huawei.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: <linux-mm@kvack.org>, Kefeng Wang <wangkefeng.wang@huawei.com>,
Chengming Zhou <chengming.zhou@linux.dev>,
Johannes Weiner <hannes@cmpxchg.org>,
Kairui Song <kasong@tencent.com>, Nhat Pham <nphamcs@gmail.com>,
Yosry Ahmed <yosryahmed@google.com>
Subject: [PATCH] mm: zswap: avoid unnecessary xarray lookup in zswap_store()
Date: Wed, 9 Sep 2026 20:35:47 +0800 [thread overview]
Message-ID: <20260909123548.296955-1-wangkefeng.wang@huawei.com> (raw)
zswap_store() falls through to check_old and walks the swap xarray
even when zswap is disabled. Add a zswap_never_enabled() early return
matching zswap_load(), and reuse zswap_invalidate() whose xa_empty()
check skips empty per-area trees to avoid unnecessary xarry lockup.
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Chengming Zhou <chengming.zhou@linux.dev>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Kairui Song <kasong@tencent.com>
Cc: Nhat Pham <nphamcs@gmail.com>
Cc: Yosry Ahmed <yosryahmed@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
mm/zswap.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/mm/zswap.c b/mm/zswap.c
index 5d0d8bd72193..fc6c5e0db5e4 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -1488,6 +1488,9 @@ bool zswap_store(struct folio *folio)
VM_WARN_ON_ONCE(!folio_test_locked(folio));
VM_WARN_ON_ONCE(!folio_test_swapcache(folio));
+ if (zswap_never_enabled())
+ return false;
+
if (!zswap_enabled)
goto check_old;
@@ -1545,15 +1548,10 @@ bool zswap_store(struct folio *folio)
if (!ret) {
unsigned type = swp_type(swp);
pgoff_t offset = swp_offset(swp);
- struct zswap_entry *entry;
- struct xarray *tree;
-
- for (index = 0; index < nr_pages; ++index) {
- tree = swap_zswap_tree(swp_entry(type, offset + index));
- entry = xa_erase(tree, offset + index);
- if (entry)
- zswap_entry_free(entry);
- }
+
+ for (index = 0; index < nr_pages; ++index)
+ zswap_invalidate(swp_entry(type, offset + index));
+
}
return ret;
--
2.55.0
next reply other threads:[~2026-09-09 12:36 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-09 12:35 Kefeng Wang [this message]
2026-09-09 12:53 ` [PATCH] mm: zswap: avoid unnecessary xarray lookup in zswap_store() Kefeng Wang
2026-09-09 14:52 ` Johannes Weiner
2026-09-10 1:16 ` Kefeng Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260909123548.296955-1-wangkefeng.wang@huawei.com \
--to=wangkefeng.wang@huawei.com \
--cc=akpm@linux-foundation.org \
--cc=chengming.zhou@linux.dev \
--cc=hannes@cmpxchg.org \
--cc=kasong@tencent.com \
--cc=linux-mm@kvack.org \
--cc=nphamcs@gmail.com \
--cc=yosryahmed@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.