On 22/12/07 12:27PM, Jan Kara wrote: > jbd2_submit_inode_data() hardcoded use of > jbd2_journal_submit_inode_data_buffers() for submission of data pages. > Make it use j_submit_inode_data_buffers hook instead. This effectively > switches ext4 fastcommits to use ext4_writepages() for data writeout > instead of generic_writepages(). Very neat!! I agree, that jbd2_submit_inode_data() should have always used journal->j_submit_inode_data_buffers(). Looks good to me. Please feel free to add: Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@xxxxxxxxx> > > Signed-off-by: Jan Kara <jack@xxxxxxx> > --- > fs/ext4/fast_commit.c | 2 +- > fs/jbd2/commit.c | 5 ++--- > include/linux/jbd2.h | 2 +- > 3 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/fs/ext4/fast_commit.c b/fs/ext4/fast_commit.c > index 0f6d0a80467d..7c6694593497 100644 > --- a/fs/ext4/fast_commit.c > +++ b/fs/ext4/fast_commit.c > @@ -986,7 +986,7 @@ static int ext4_fc_submit_inode_data_all(journal_t *journal) > finish_wait(&ei->i_fc_wait, &wait); > } > spin_unlock(&sbi->s_fc_lock); > - ret = jbd2_submit_inode_data(ei->jinode); > + ret = jbd2_submit_inode_data(journal, ei->jinode); > if (ret) > return ret; > spin_lock(&sbi->s_fc_lock); > diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c > index 885a7a6cc53e..4810438b7856 100644 > --- a/fs/jbd2/commit.c > +++ b/fs/jbd2/commit.c > @@ -207,14 +207,13 @@ int jbd2_journal_submit_inode_data_buffers(struct jbd2_inode *jinode) > } > > /* Send all the data buffers related to an inode */ > -int jbd2_submit_inode_data(struct jbd2_inode *jinode) > +int jbd2_submit_inode_data(journal_t *journal, struct jbd2_inode *jinode) > { > - > if (!jinode || !(jinode->i_flags & JI_WRITE_DATA)) > return 0; > > trace_jbd2_submit_inode_data(jinode->i_vfs_inode); > - return jbd2_journal_submit_inode_data_buffers(jinode); > + return journal->j_submit_inode_data_buffers(jinode); > > } > EXPORT_SYMBOL(jbd2_submit_inode_data); > diff --git a/include/linux/jbd2.h b/include/linux/jbd2.h > index 0b7242370b56..2170e0cc279d 100644 > --- a/include/linux/jbd2.h > +++ b/include/linux/jbd2.h > @@ -1662,7 +1662,7 @@ int jbd2_fc_begin_commit(journal_t *journal, tid_t tid); > int jbd2_fc_end_commit(journal_t *journal); > int jbd2_fc_end_commit_fallback(journal_t *journal); > int jbd2_fc_get_buf(journal_t *journal, struct buffer_head **bh_out); > -int jbd2_submit_inode_data(struct jbd2_inode *jinode); > +int jbd2_submit_inode_data(journal_t *journal, struct jbd2_inode *jinode); > int jbd2_wait_inode_data(journal_t *journal, struct jbd2_inode *jinode); > int jbd2_fc_wait_bufs(journal_t *journal, int num_blks); > int jbd2_fc_release_bufs(journal_t *journal); > -- > 2.35.3 >