Re: [PATCH 0/9] ext4: Stop using ext4_writepage() for writeout of ordered data

Jan Kara
2022-12-01T11:55:14Z

On Thu 01-12-22 17:12:05, Ritesh Harjani (IBM) wrote:
> On 22/11/30 05:35PM, Jan Kara wrote:
> > Hello,
> >
> > this patch series modifies ext4 so that we stop using ext4_writepage() for
> > writeout of ordered data during transaction commit (through
> > generic_writepages() from jbd2_journal_submit_inode_data_buffers()). Instead we
> > directly call ext4_writepages() from the
> > ext4_journal_submit_inode_data_buffers().
>
> Hello Jan,
>
> Do you think we should add a WARN_ON_ONCE() or something in
> ext4_do_writepages() function where we might try to start a transaction
> at [J]. Since we can now enter into ext4_do_writepages() from two places:
> 1. writeback
> 2. jbd2_journal_commit_transaction()
> mpage_submit_page
> mpage_prepare_extent_to_map
> ext4_do_writepages
> ext4_normal_submit_inode_data_buffers
> ext4_journal_submit_inode_data_buffers
> journal_submit_data_buffers
> jbd2_journal_commit_transaction
> kjournald2
>
> So IIUC, we will call mpage_submit_page() in the first call to
> mpage_prepare_extent_to_map() [1] itself. That may set mpd->scanned_until_end = 1
> at the end of it. So then we should never enter into the while loop where we
> start a journal txn.

Yes, correct. But I agree a WARN_ON_ONCE in the loop might be useful just
in case. I'll add it. Thanks for the idea.

Honza

--
Jan Kara <jack@suse.com>
SUSE Labs, CR