Re: [PATCH 1/3] mm/swap: revert to single-folio writes for synchronous swap devices
Kairui Song <[email protected]> Fri, 24 Jul 2026 01:59:44 +0800
| Newsgroups | org.kernel.vger.linux-nfs,org.kernel.vger.linux-cifs,org.kvack.linux-mm |
|---|---|
| Message-ID | <CAMgjq7ArsgdKf-uZ_drQ9Kqtq4i_MMZ+dP+tjNzPrsrR0YPBWQ@mail.gmail.com> |
On Wed, Jul 22, 2026 at 9:06 PM Christoph Hellwig <[email protected]> wrote: > > Kairui Song reported that zram benefits from submitting each folio > directly instead of batching up I/O because the classic LRU scanning > benefits from clearing the folio writeback bit in the scan loop. > > Accommodate that by kicking off reads for synchronous devices for > each iteration. > > Signed-off-by: Christoph Hellwig <[email protected]> > --- > mm/page_io.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/mm/page_io.c b/mm/page_io.c > index e4fa7ffffe8b..c984a4023a65 100644 > --- a/mm/page_io.c > +++ b/mm/page_io.c > @@ -358,7 +358,16 @@ static void swap_add_folio(struct swap_io_ctx *ctx, struct folio *folio, int rw) > } > bvec_set_folio(&sio->bvecs[sio->nr_bvecs], folio, folio_size(folio), 0); > sio->len += folio_size(folio); > - if (++sio->nr_bvecs == ARRAY_SIZE(sio->bvecs)) { > + > + /* > + * Write out the iocb if we filled it, or if the device is synchronous. > + * > + * The latter is to work around expectations in the classic LRU code > + * which make synchronous clearing of the folio writeback flag in the > + * reclaim path beneficial. > + */ > + if (++sio->nr_bvecs == ARRAY_SIZE(sio->bvecs) || > + (rw == WRITE && (sis->flags & SWP_SYNCHRONOUS_IO))) { > if (rw == WRITE) > swap_write_submit(ctx); > else > -- > 2.53.0 > Looks good, thanks! Acked-by: Kairui Song <[email protected]>