fs: use writeback_iter directly in mpage_writepages

Stop using write_cache_pages and use writeback_iter directly.  This
removes an indirect call per written folio and makes the code easier
to follow.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/20250507062124.3933305-1-hch@lst.de
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
Christoph Hellwig 2025-05-07 08:21:24 +02:00 committed by Christian Brauner
parent 9f81d70702
commit bb01e8cc10
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2
1 changed files with 7 additions and 6 deletions

View File

@ -445,10 +445,9 @@ static void clean_buffers(struct folio *folio, unsigned first_unmapped)
try_to_free_buffers(folio); try_to_free_buffers(folio);
} }
static int __mpage_writepage(struct folio *folio, struct writeback_control *wbc, static int mpage_write_folio(struct writeback_control *wbc, struct folio *folio,
void *data) struct mpage_data *mpd)
{ {
struct mpage_data *mpd = data;
struct bio *bio = mpd->bio; struct bio *bio = mpd->bio;
struct address_space *mapping = folio->mapping; struct address_space *mapping = folio->mapping;
struct inode *inode = mapping->host; struct inode *inode = mapping->host;
@ -656,14 +655,16 @@ mpage_writepages(struct address_space *mapping,
struct mpage_data mpd = { struct mpage_data mpd = {
.get_block = get_block, .get_block = get_block,
}; };
struct folio *folio = NULL;
struct blk_plug plug; struct blk_plug plug;
int ret; int error;
blk_start_plug(&plug); blk_start_plug(&plug);
ret = write_cache_pages(mapping, wbc, __mpage_writepage, &mpd); while ((folio = writeback_iter(mapping, wbc, folio, &error)))
error = mpage_write_folio(wbc, folio, &mpd);
if (mpd.bio) if (mpd.bio)
mpage_bio_submit_write(mpd.bio); mpage_bio_submit_write(mpd.bio);
blk_finish_plug(&plug); blk_finish_plug(&plug);
return ret; return error;
} }
EXPORT_SYMBOL(mpage_writepages); EXPORT_SYMBOL(mpage_writepages);