ext4: switch to using ext4_do_writepages() for ordered data writeout
authorJan Kara <jack@suse.cz>
Wed, 7 Dec 2022 11:27:11 +0000 (12:27 +0100)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 9 Dec 2022 02:49:25 +0000 (21:49 -0500)
Use the standard writepages method (ext4_do_writepages()) to perform
writeout of ordered data during journal commit.

Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20221207112722.22220-8-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/inode.c
fs/ext4/super.c

index 0540929630a14346c0190b31ae10f8f73e718159..140e1eb300d177c22e82c84af60ba30beff0f0db 100644 (file)
@@ -3000,6 +3000,7 @@ extern void ext4_set_inode_flags(struct inode *, bool init);
 extern int ext4_alloc_da_blocks(struct inode *inode);
 extern void ext4_set_aops(struct inode *inode);
 extern int ext4_writepage_trans_blocks(struct inode *);
+extern int ext4_normal_submit_inode_data_buffers(struct jbd2_inode *jinode);
 extern int ext4_chunk_trans_blocks(struct inode *, int nrblocks);
 extern int ext4_zero_partial_blocks(handle_t *handle, struct inode *inode,
                             loff_t lstart, loff_t lend);
index 3aa01a9d4664153816f0eadfb1367aaa62879436..56f6ef52fe76931821016879cd8ee3d85d732c08 100644 (file)
@@ -2960,6 +2960,22 @@ static int ext4_writepages(struct address_space *mapping,
        return ret;
 }
 
+int ext4_normal_submit_inode_data_buffers(struct jbd2_inode *jinode)
+{
+       struct writeback_control wbc = {
+               .sync_mode = WB_SYNC_ALL,
+               .nr_to_write = LONG_MAX,
+               .range_start = jinode->i_dirty_start,
+               .range_end = jinode->i_dirty_end,
+       };
+       struct mpage_da_data mpd = {
+               .inode = jinode->i_vfs_inode,
+               .wbc = &wbc,
+               .can_map = 0,
+       };
+       return ext4_do_writepages(&mpd);
+}
+
 static int ext4_dax_writepages(struct address_space *mapping,
                               struct writeback_control *wbc)
 {
index 28d009151d238ffa9f2f63c765666d0d7b9db46b..72ead3b567061d219021c8ed2a0b9f56399696bb 100644 (file)
@@ -540,8 +540,7 @@ static int ext4_journal_submit_inode_data_buffers(struct jbd2_inode *jinode)
        if (ext4_should_journal_data(jinode->i_vfs_inode))
                ret = ext4_journalled_submit_inode_data_buffers(jinode);
        else
-               ret = jbd2_journal_submit_inode_data_buffers(jinode);
-
+               ret = ext4_normal_submit_inode_data_buffers(jinode);
        return ret;
 }