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: 24+ 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-08-05 8:08 ` Baoquan He
2026-07-27 16:09 ` Chris Li
2026-07-29 14:36 ` Baoquan He
2026-07-30 0:15 ` 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-08-05 8:15 ` Baoquan He
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 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.