mirror of https://github.com/torvalds/linux.git
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:
parent
9f81d70702
commit
bb01e8cc10
13
fs/mpage.c
13
fs/mpage.c
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue