From: Baoquan He <baoquan.he@linux.dev>
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org, chrisl@kernel.org,
usama.arif@linux.dev, baohua@kernel.org, kasong@tencent.com,
nphamcs@gmail.com, shikemeng@huaweicloud.com,
youngjun.park@lge.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 2/3] mm/swap: use swap_ops to register swap device's methods
Date: Wed, 13 May 2026 23:33:50 +0800 [thread overview]
Message-ID: <agSZ3hZJTBAjgVOn@MiWiFi-R3L-srv> (raw)
In-Reply-To: <agQM8YJgiMxGlI34@infradead.org>
On 05/12/26 at 10:32pm, Christoph Hellwig wrote:
> > };
> >
> > +struct swap_ops;
> > /*
>
> Please keep empty spaces before comments. And keeping forward
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I may not follow, I noticed that all the comments in the code use
tabs for indentation rather than spaces.
> declarations at the beginning of the file makes them much easier to
> organize (although the current swap.h is a complete mess not only in this
> regard).
Sure, will move it at the beginning of linux/swap.h. Thanks.
>
> > +int init_swap_ops(struct swap_info_struct *sis)
> > +{
> > + /*
> > + * ->flags can be updated non-atomically, but that will
> > + * never affect SWP_FS_OPS, so the data_race is safe.
> > + */
> > + if (data_race(sis->flags & SWP_FS_OPS))
> > + sis->ops = &bdev_fs_swap_ops;
> > + /*
> > + * ->flags can be updated non-atomically, but that will
> > + * never affect SWP_SYNCHRONOUS_IO, so the data_race is safe.
> > + */
> > + else if (data_race(sis->flags & SWP_SYNCHRONOUS_IO))
> > + sis->ops = &bdev_sync_swap_ops;
> > + else
> > + sis->ops = &bdev_async_swap_ops;
> > +
> > + if (!sis->ops || !sis->ops->read_folio || !sis->ops->write_folio)
> > + return -EINVAL;
>
> In the long run setting these from the helpers for ->swap_activate would
> make more sense. Also as ls long as the ops are a small statically
> defined set these checks here are a bit odd.
In fact, except of your ->swap_activate, I have my ->swap_activate too
queued in my local branch. While from your comments, seems we don't have
conflict because we have different concerns.
Please see Youngjun's comment and my reply in this thread:
https://lore.kernel.org/linux-mm/aaWiBaeSCILBCzqd@yjaykim-PowerEdge-T330/
>
> I guess we just need to land this ASAP, then my swap_activate series and
> then do a big round of cleanups for a coherent swap interface.
This patchset is part I. I posted v1 to collect suggestions, later I
took a leave, then people think the v1 can be merged firstly and helped
to post v2. I later came back and continue to push this part. If you
just found this patch series and come up with those cleanups, could you
wait a moment until we merge this part and part II is posted? I think
the split handling of block and fs in swap you mentioned is super cool,
and is beyond our plan.
>
> > - } else if (synchronous) {
> > - swap_read_folio_bdev_sync(folio, sis);
> > - } else {
> > - swap_read_folio_bdev_async(folio, sis);
> > - }
> > + sis->ops->read_folio(sis, folio, plug);
>
> This is a really annoying double-indirection for the SWP_FS_OPS
> case. I think we should have one level of indirection here. One
> way to do this would be to remove the swap_rw operation and
> implement the swap_ops directly in nfs and cifs.
>
>
next prev parent reply other threads:[~2026-05-13 15:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 10:41 [PATCH v6 0/3] mm/swap: use swap_ops to register swap device's methods Baoquan He
2026-05-12 10:41 ` [PATCH v6 1/3] mm/swap: rename mm/page_io.c to mm/swap_io.c Baoquan He
2026-05-13 0:27 ` Chris Li
2026-05-13 5:21 ` Christoph Hellwig
2026-05-13 7:10 ` Baoquan He
2026-05-12 10:42 ` [PATCH v6 2/3] mm/swap: use swap_ops to register swap device's methods Baoquan He
2026-05-12 17:53 ` Kairui Song
2026-05-13 5:32 ` Christoph Hellwig
2026-05-13 15:33 ` Baoquan He [this message]
2026-05-13 5:45 ` Christoph Hellwig
2026-05-13 15:38 ` Baoquan He
2026-05-12 10:42 ` [PATCH v6 3/3] mm/swap_io.c: rename swap_writepage_* to swap_write_folio_* Baoquan He
2026-05-12 17:54 ` Kairui Song
2026-05-13 0:31 ` Chris Li
2026-05-13 5:36 ` Christoph Hellwig
2026-05-13 15:44 ` 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=agSZ3hZJTBAjgVOn@MiWiFi-R3L-srv \
--to=baoquan.he@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=chrisl@kernel.org \
--cc=hch@infradead.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=usama.arif@linux.dev \
--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