From: YoungJun Park <youngjun.park@lge.com>
To: Baoquan He <bhe@redhat.com>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org, chrisl@kernel.org,
kasong@tencent.com, shikemeng@huaweicloud.com, nphamcs@gmail.com,
baohua@kernel.org
Subject: Re: [PATCH 0/3] mm/swap: use swap_ops to register swap device's methods
Date: Thu, 5 Mar 2026 17:09:22 +0900 [thread overview]
Message-ID: <aak6MhtSxqPaTBkr@yjaykim-PowerEdge-T330> (raw)
In-Reply-To: <aakSI_0O0G6arjZO@MiWiFi-R3L-srv>
On Thu, Mar 05, 2026 at 01:18:27PM +0800, Baoquan He wrote:
> On 03/02/26 at 11:43pm, YoungJun Park wrote:
> > On Mon, Mar 02, 2026 at 06:40:13PM +0800, Baoquan He wrote:
> > > This can simplify the code logic and benefit any new type of swap device
> > > added later.
> > >
> > > And also do renaming in this patchset:
> > > -------
> > > file renaming:
> > > ---
> > > mm/page_io.c to mm/swap_io.c
> > >
> > > function renaming:
> > > ---
> > > swap_writepage_* to swap_write_folio_* in file mm/swap_io.c
> > >
> > >
> > > Baoquan He (3):
> > > mm/swap: rename mm/page_io.c to mm/swap_io.c
> > > mm/swap: use swap_ops to register swap device's methods
> > > mm/swap_io.c: rename swap_writepage_* to swap_write_folio_*
> > >
> > > MAINTAINERS | 2 +-
> > > include/linux/swap.h | 13 +++++
> > > mm/Makefile | 2 +-
> > > mm/swap.h | 3 +-
> > > mm/{page_io.c => swap_io.c} | 104 +++++++++++++++++++++---------------
> > > mm/swapfile.c | 2 +
> > > mm/zswap.c | 3 +-
> > > 7 files changed, 80 insertions(+), 49 deletions(-)
> > > rename mm/{page_io.c => swap_io.c} (91%)
> > >
> > > --
> > > 2.52.0
> >
> > Hi Baoquan,
> >
> > Thank you for the swap_ops infrastructure patch. This is very
> > relevant to our flash swap work, and I believe it could
> > significantly help with our future contributions if the framework
> > is extended further.
> >
> > As I understand it, the current patch serves as a foundation for
> > future infrastructure. However, from our perspective, the swap ops
> > are currently configured statically, and we would need a way to
> > apply or register custom ops for our use case.
>
> Thanks a lot for your input about the future potential use cases of
> swap_ops, they are very valuable.
> Yes, this patchset is posted as a infrastructure of swap_ops and a
> thread where we collect any potential extention or use case. The
> change is made based on the current kernel.
I understand. I brought up suggestions 1 and 2 because they are necessary
from the perspective of immediate application. :D
> >
> > I have a few suggestions (mixed with questions) regarding
> > extensibility.
> >
> > 1) Could the ops be replaced at activation time, similar to how
> > SWP_FS_OPS works — i.e., giving block device drivers an
> > opportunity to override the ops when the swap device is
> > activated?
> >
> > This would allow block devices to handle swap read/write
> > through swap_ops rather than doing it in submit_bio, which
> > feels more generalized and leaves room for future extension.
> >
> > This direction would be the best fit for our use case.
> > However, considering ongoing swap work that may involve
> > managing multiple swap devices, I wonder whether binding ops
> > to a single block device would still be appropriate in that
> > scenario.
>
> I think it's doable and make swap_ops more flexible and versatile to
> support different swap back ends.
>
> As for binding ops to a swap devices conflicting with managing multiple
> swap devices, I may not get your point very clearly. Could you give a
> concrete use case to demonstrate?
To clarify my point about binding ops: I was focusing on the initialization
timing. Taking SWP_FS_OPS as an example, setup_swap_extents calls
swap_activate and finally SWP_FS_OPS is set by filesystem.
Similarly, I am suggesting a mechanism that gives the block device (or
another entity) an opportunity to register its specific swap_ops during the
swapon phase by calling some kind of swap_active callback.
(And it may be not the block device as well?)
> >
> > 2) Would it be possible to defer swap device activation via a
> > lazy registration interface, so that the ops can be registered
> > before the device is fully activated?
> >
> > This would open the door for entities other than block
> > devices — such as kernel modules or other forms — to act as
> > swap backends. (Of course, block devices could also benefit
> > from this path.)
>
> Yes, I think it's doable. I will make change and send a draft to you for
> evaluation. By the way, do you have actual use case in which deferring
> swap activation is needed for justification?
Regarding the use case for deferred activation: This becomes necessary if
we don't use the activation-time binding mentioned in #1.
If we rely on dynamic registration, there is a time window between swapon
and the actual registration of the ops. During this window, the swap device
should not perform I/O since the ops aren't set yet. A lazy registration or
deferred activation mechanism would handle this safety gap.
> >
> > 3) Alternatively, are there any plans for a static binding
> > mechanism, or any other extensibility approach you have in
> > mind?
> How the swap back end was chosen. We can make it a swap mount option.
> We make the swapfile header look like a file system super block. The
> different swapfile header contains different back end types and
> options.
I found your comment about ops binding on LSF/MM/BPF suggestion. sorry for missing.
Okay, I see. While I personally prefer the direction similar to SWP_FS_OPS infrastructure(or #2),
the mount option or header approach is also a valid path!
> > As an additional thought, if this ops framework could eventually
> > be extended to cover cluster allocation as well, it might enable
> > a model where base swap functionality is provided by the core,
> > while each vendor can freely plug in their own additional use
> > cases on top — making the swap device truly extensible.
>
> Yes, this is planned task as I have mentioned in the LSF/MM topic mail.
It is great to hear that custom cluster allocation is planned. this would allow
vendors to implement optimizations specific to
their swap I look forward to that and will provide comments if we have
concrete use cases.
Thanks a lot for your work
Youngjun Park
prev parent reply other threads:[~2026-03-05 8:09 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-02 10:40 Baoquan He
2026-03-02 10:40 ` [PATCH 1/3] mm/swap: rename mm/page_io.c to mm/swap_io.c Baoquan He
2026-03-02 10:56 ` Barry Song
2026-03-02 13:25 ` Baoquan He
2026-03-02 21:12 ` Nhat Pham
2026-03-03 7:24 ` Baoquan He
2026-03-04 6:40 ` Kairui Song
2026-03-02 10:40 ` [PATCH 2/3] mm/swap: use swap_ops to register swap device's methods Baoquan He
2026-03-02 11:11 ` Barry Song
2026-03-02 14:47 ` Baoquan He
2026-03-02 19:28 ` Chris Li
2026-03-02 12:20 ` YoungJun Park
2026-03-02 14:09 ` YoungJun Park
2026-03-02 19:35 ` Chris Li
2026-03-03 7:14 ` Baoquan He
2026-03-02 14:53 ` Usama Arif
2026-03-03 10:41 ` Baoquan He
2026-03-02 21:21 ` Nhat Pham
2026-03-03 3:01 ` Baoquan He
2026-03-02 10:40 ` [PATCH 3/3] mm/swap_io.c: rename swap_writepage_* to swap_write_folio_* Baoquan He
2026-03-02 11:28 ` Barry Song
2026-03-02 21:11 ` Nhat Pham
2026-03-02 14:43 ` [PATCH 0/3] mm/swap: use swap_ops to register swap device's methods YoungJun Park
2026-03-05 5:18 ` Baoquan He
2026-03-05 8:09 ` YoungJun Park [this message]
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=aak6MhtSxqPaTBkr@yjaykim-PowerEdge-T330 \
--to=youngjun.park@lge.com \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=bhe@redhat.com \
--cc=chrisl@kernel.org \
--cc=kasong@tencent.com \
--cc=linux-mm@kvack.org \
--cc=nphamcs@gmail.com \
--cc=shikemeng@huaweicloud.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