All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
To: Tal Zussman <tz2294@columbia.edu>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	 Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
	 Kemeng Shi <shikemeng@huaweicloud.com>,
	Nhat Pham <nphamcs@gmail.com>, Baoquan He <baoquan.he@linux.dev>,
	 Barry Song <baohua@kernel.org>,
	Youngjun Park <youngjun.park@lge.com>,
	 David Hildenbrand <david@kernel.org>,
	"Liam R. Howlett" <liam@infradead.org>,
	 Vlastimil Babka <vbabka@kernel.org>,
	Mike Rapoport <rppt@kernel.org>,
	 Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>,
	 Matthew Wilcox <willy@infradead.org>,
	Christoph Hellwig <hch@lst.de>,
	 Johannes Weiner <hannes@cmpxchg.org>,
	Yosry Ahmed <yosry@kernel.org>,
	 Chengming Zhou <chengming.zhou@linux.dev>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/6] mm/page_io: convert write completion handlers to folios
Date: Mon, 10 Aug 2026 13:50:42 +0100	[thread overview]
Message-ID: <annIJC0TtWS74rAw@lucifer> (raw)
In-Reply-To: <20260806-b4-page_io-folios-v1-1-0899bac3b826@columbia.edu>

On Thu, Aug 06, 2026 at 06:55:33PM -0400, Tal Zussman wrote:
> Convert swap_write_end() and swap_fs_write_complete() to operate on
> folios directly instead of going through the folio-compat page APIs.
> This removes calls to end_page_writeback() and set_page_dirty(), and the
> last caller of ClearPageReclaim(), saving two calls to compound_head()
> per folio on the write error path.
>
> Signed-off-by: Tal Zussman <tz2294@columbia.edu>

Very lovely, thanks! :)

I see you remove PageReclaim in the subsequent commit which makes sense as a
follow-up.

Reviewed-by: Lorenzo Stoakes (ARM) <ljs@kernel.org>

> ---
>  mm/page_io.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/mm/page_io.c b/mm/page_io.c
> index e4fa7ffffe8b..43b4383a4729 100644
> --- a/mm/page_io.c
> +++ b/mm/page_io.c
> @@ -496,13 +496,13 @@ static void swap_write_end(struct swap_iocb *sio, bool failed)
>  	int p;
>
>  	for (p = 0; p < sio->nr_bvecs; p++) {
> -		struct page *page = sio->bvecs[p].bv_page;
> +		struct folio *folio = bvec_folio(&sio->bvecs[p]);
>
>  		if (failed) {
> -			set_page_dirty(page);
> -			ClearPageReclaim(page);
> +			folio_mark_dirty(folio);
> +			folio_clear_reclaim(folio);
>  		}
> -		end_page_writeback(page);
> +		folio_end_writeback(folio);
>  	}
>  	mempool_free(sio, sio_pool);
>  }
> @@ -513,16 +513,16 @@ static void swap_fs_write_complete(struct kiocb *iocb, long ret)
>  	bool failed = ret != sio->len;
>
>  	if (failed) {
> -		struct page *page = sio->bvecs[0].bv_page;
> +		struct folio *folio = bvec_folio(&sio->bvecs[0]);
>
>  		/*
>  		 * In the case of swap-over-nfs, this can be a temporary failure
>  		 * if the system has limited memory for allocating transmit
> -		 * buffers.  Mark the page dirty and avoid
> +		 * buffers.  Mark the folio dirty and avoid
>  		 * folio_rotate_reclaimable but rate-limit the messages.
>  		 */
>  		pr_err_ratelimited("Write error %ld on dio swapfile (%llu)\n",
> -				   ret, swap_dev_pos(page_swap_entry(page)));
> +				   ret, swap_dev_pos(folio->swap));
>  	}
>
>  	swap_write_end(sio, failed);
>
> --
> 2.39.5
>

--
Cheers, Lorenzo


  parent reply	other threads:[~2026-08-10 12:51 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-06 22:55 [PATCH 0/6] mm/page_io: folio conversion cleanups Tal Zussman
2026-08-06 22:55 ` [PATCH 1/6] mm/page_io: convert write completion handlers to folios Tal Zussman
2026-08-07 16:49   ` Johannes Weiner
2026-08-07 18:42     ` Matthew Wilcox
2026-08-10 12:50   ` Lorenzo Stoakes (ARM) [this message]
2026-08-06 22:55 ` [PATCH 2/6] mm: remove PageReclaim Tal Zussman
2026-08-07 16:50   ` Johannes Weiner
2026-08-07 18:48   ` Matthew Wilcox
2026-08-07 19:27     ` Tal Zussman
2026-08-10 11:38       ` David Hildenbrand (Arm)
2026-08-10 12:51         ` Lorenzo Stoakes (ARM)
2026-08-06 22:55 ` [PATCH 3/6] mm/page_io: use swap entries directly in zeromap helpers Tal Zussman
2026-08-07 16:53   ` Johannes Weiner
2026-08-07 18:50   ` Matthew Wilcox
2026-08-10 12:55   ` Lorenzo Stoakes (ARM)
2026-08-10 13:14     ` Tal Zussman
2026-08-10 14:49       ` Lorenzo Stoakes (ARM)
2026-08-06 22:55 ` [PATCH 4/6] mm/page_io: rename bio_associate_blkg_from_page() Tal Zussman
2026-08-07 16:53   ` Johannes Weiner
2026-08-07 18:56   ` Matthew Wilcox
2026-08-07 19:30     ` Tal Zussman
2026-08-10 12:55       ` Lorenzo Stoakes (ARM)
2026-08-10 12:57   ` Lorenzo Stoakes (ARM)
2026-08-06 22:55 ` [PATCH 5/6] mm/page_io: refer to folios in swap_writeout() comments Tal Zussman
2026-08-07 16:54   ` Johannes Weiner
2026-08-07 18:59   ` Matthew Wilcox
2026-08-10 12:57   ` Lorenzo Stoakes (ARM)
2026-08-06 22:55 ` [PATCH 6/6] mm/swap: rename __swap_writepage() to __swap_writeout() Tal Zussman
2026-08-07 17:01   ` Johannes Weiner
2026-08-07 19:05     ` Matthew Wilcox
2026-08-10 11:19       ` Tal Zussman
2026-08-07 19:44     ` Tal Zussman
2026-08-10 12:59       ` Lorenzo Stoakes (ARM)
2026-08-10 17:34     ` Christoph Hellwig
2026-08-07 19:06   ` Matthew Wilcox

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=annIJC0TtWS74rAw@lucifer \
    --to=ljs@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baoquan.he@linux.dev \
    --cc=chengming.zhou@linux.dev \
    --cc=chrisl@kernel.org \
    --cc=david@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=hch@lst.de \
    --cc=kasong@tencent.com \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=nphamcs@gmail.com \
    --cc=rppt@kernel.org \
    --cc=shikemeng@huaweicloud.com \
    --cc=surenb@google.com \
    --cc=tz2294@columbia.edu \
    --cc=vbabka@kernel.org \
    --cc=willy@infradead.org \
    --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.