ext4: switch to using write_cache_pages() for data=journal writeout
authorJan Kara <jack@suse.cz>
Wed, 7 Dec 2022 11:27:13 +0000 (12:27 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 9 Dec 2022 02:49:25 +0000 (21:49 -0500)
Instead of using generic_writepages(), let's use write_cache_pages() for
writeout of journalled data. It will allow us to stop providing
.writepage callback. Our data=journal writeback path would benefit from
a larger cleanup and refactoring but that's for a separate cleanup
series.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20221207112722.22220-10-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/inode.c

index 56f6ef52fe76931821016879cd8ee3d85d732c08..fd9a335d1411521fb66a11ba4cf8bad650d82c40 100644 (file)
@@ -2712,6 +2712,12 @@ out:
        return err;
 }
 
+static int ext4_writepage_cb(struct page *page, struct writeback_control *wbc,
+                            void *data)
+{
+       return ext4_writepage(page, wbc);
+}
+
 static int ext4_do_writepages(struct mpage_da_data *mpd)
 {
        struct writeback_control *wbc = mpd->wbc;
@@ -2738,7 +2744,9 @@ static int ext4_do_writepages(struct mpage_da_data *mpd)
                goto out_writepages;
 
        if (ext4_should_journal_data(inode)) {
-               ret = generic_writepages(mapping, wbc);
+               blk_start_plug(&plug);
+               ret = write_cache_pages(mapping, wbc, ext4_writepage_cb, NULL);
+               blk_finish_plug(&plug);
                goto out_writepages;
        }