From: Baoquan He <baoquan.he@linux.dev>
To: Chris Li <chrisl@kernel.org>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org, nphamcs@gmail.com,
kasong@tencent.com, baohua@kernel.org, youngjun.park@lge.com,
hannes@cmpxchg.org, yosry@kernel.org, david@kernel.org,
shikemeng@huaweicloud.com, chengming.zhou@linux.dev,
linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 02/11] mm, swap: add CONFIG_XSWAP and xswap fields to swap_info_struct
Date: Wed, 29 Jul 2026 22:26:18 +0800 [thread overview]
Message-ID: <amoNilhbItzaEZfO@MiWiFi-R3L-srv> (raw)
In-Reply-To: <CACePvbU7ih58GHW46Wr59uUdo7wnA6c6Nd98oOdwUzi3BGF0-A@mail.gmail.com>
On 07/27/26 at 08:26am, Chris Li wrote:
> On Mon, Jul 27, 2026 at 7:05 AM Baoquan He <baoquan.he@linux.dev> wrote:
> >
> > Add CONFIG_XSWAP Kconfig option (depends on SWAP && 64BIT) for
> > extendable (virtual) swap device support.
> >
> > Add three fields to struct swap_info_struct under CONFIG_XSWAP:
> > - cluster_vm: the VM_SPARSE vm_struct backing the cluster_info array
> > - nr_clusters: total number of clusters in the xswap address space
> > - nr_clusters_mapped: number of clusters currently mapped (lazy grow)
> >
> > These fields enable lazy vmalloc-based dynamic cluster management
> > where the cluster_info array is backed by a sparse vmalloc area that
> > grows on demand and shrinks when clusters are freed.
> >
> > Signed-off-by: Baoquan He <baoquan.he@linux.dev>
> > ---
> > include/linux/swap.h | 5 +++++
> > mm/Kconfig | 9 +++++++++
> > 2 files changed, 14 insertions(+)
> >
> > diff --git a/include/linux/swap.h b/include/linux/swap.h
> > index 80c83dd8804f..5f6b14d30758 100644
> > --- a/include/linux/swap.h
> > +++ b/include/linux/swap.h
> > @@ -248,6 +248,11 @@ struct swap_info_struct {
> > signed char type; /* strange name for an index */
> > unsigned int max; /* size of this swap device */
> > struct swap_cluster_info *cluster_info; /* cluster info. Only for SSD */
> > +#ifdef CONFIG_XSWAP
> > + struct vm_struct *cluster_vm; /* VM_SPARSE area for xswap dynamic cluster_info */
> > + unsigned long nr_clusters; /* total cluster count for xswap */
> > + unsigned long nr_clusters_mapped; /* currently mapped cluster count */
> > +#endif
>
> We might need more than one dynamic kvmalloc grow array. Maybe
> abstract this into a struct so it can be reused for arrays other than
> clusters as well. The abstraction can also include the element size so
> it can have a generic function to calculate how many pages it needs
> for N elements.
I agree in principle. I think we can pull that out as a follow-up when
the second user emerges, rather than abstracting prematurely.
next prev parent reply other threads:[~2026-07-29 14:26 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 13:50 [RFC PATCH 00/11] mm, swap: dynamic cluster management for xswap devices Baoquan He
2026-07-27 13:50 ` [RFC PATCH 01/11] mm: xswap support for zswap Baoquan He
2026-07-27 14:04 ` [RFC PATCH 02/11] mm, swap: add CONFIG_XSWAP and xswap fields to swap_info_struct Baoquan He
2026-07-27 14:04 ` [RFC PATCH 03/11] mm, swap: add xswap cluster grow via VM_SPARSE vmalloc Baoquan He
2026-07-27 15:05 ` Nhat Pham
2026-07-29 15:12 ` Baoquan He
2026-07-27 16:09 ` Chris Li
2026-07-29 14:36 ` Baoquan He
2026-07-27 14:04 ` [RFC PATCH 04/11] mm, swap: add xswap grow trigger on cluster allocation Baoquan He
2026-07-27 14:04 ` [RFC PATCH 05/11] mm, swap: add xswap_try_shrink and shrink trigger on cluster free Baoquan He
2026-07-27 14:04 ` [RFC PATCH 06/11] mm, swap: free backing pages in xswap_unmap_clusters Baoquan He
2026-07-27 14:04 ` [RFC PATCH 07/11] mm, swap: add nr_free_tail for O(1) xswap shrink detection Baoquan He
2026-07-27 14:04 ` [RFC PATCH 08/11] mm, swap: add adjustable runtime ceiling (nr_clusters) for xswap Baoquan He
2026-07-27 14:05 ` [RFC PATCH 09/11] mm, swap: add debugfs knob for xswap per-device cluster limit Baoquan He
2026-07-27 14:05 ` [RFC PATCH 10/11] mm, swap: defer xswap shrink to workqueue to avoid lock recursion Baoquan He
2026-07-27 14:05 ` [RFC PATCH 11/11] mm, swap: serialize xswap map/unmap with a mutex Baoquan He
2026-07-27 15:13 ` Nhat Pham
2026-07-27 15:26 ` [RFC PATCH 02/11] mm, swap: add CONFIG_XSWAP and xswap fields to swap_info_struct Chris Li
2026-07-29 14:26 ` Baoquan He [this message]
2026-07-27 15:48 ` [RFC PATCH 00/11] mm, swap: dynamic cluster management for xswap devices Nhat Pham
2026-07-29 16:25 ` Baoquan He
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=amoNilhbItzaEZfO@MiWiFi-R3L-srv \
--to=baoquan.he@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=chengming.zhou@linux.dev \
--cc=chrisl@kernel.org \
--cc=david@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kasong@tencent.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=nphamcs@gmail.com \
--cc=shikemeng@huaweicloud.com \
--cc=yosry@kernel.org \
--cc=youngjun.park@lge.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox