[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <C091902C-F3C9-4A8C-8704-DDB321FAA317@dilger.ca>
Date: Mon, 28 Sep 2020 20:34:09 -0600
From: Andreas Dilger <adilger@...ger.ca>
To: Mauricio Faria de Oliveira <mfo@...onical.com>
Cc: Jan Kara <jack@...e.cz>, linux-ext4@...r.kernel.org,
dann frazier <dann.frazier@...onical.com>
Subject: Re: [RFC PATCH v4 3/4] ext4: data=journal: fixes for
ext4_page_mkwrite()
On Sep 28, 2020, at 1:41 PM, Mauricio Faria de Oliveira <mfo@...onical.com> wrote:
>
> These are two fixes for data journalling required by
> the next patch, discovered while testing it.
>
> First, the optimization to return early if all buffers
> are mapped is not appropriate for the next patch:
>
> The inode _must_ be added to the transaction's list in
> data=journal mode (so to write-protect pages on commit)
> thus we cannot return early there.
>
> Second, once that optimization to reduce transactions
> was disabled for data=journal mode, more transactions
> happened, and occasionally hit this warning message:
> 'JBD2: Spotted dirty metadata buffer'.
>
> Reason is, block_page_mkwrite() will set_buffer_dirty()
> before do_journal_get_write_access() that is there to
> prevent it. This issue was masked by the optimization.
>
> So, on data=journal use __block_write_begin() instead.
> This also requires page locking and len recalculation.
> (see block_page_mkwrite() for implementation details.)
>
> Finally, as Jan noted there is little sharing between
> data=journal and other modes in ext4_page_mkwrite().
>
> However, a prototype of ext4_journalled_page_mkwrite()
> showed there still would be lots of duplicated lines
> (tens of) that didn't seem worth it.
>
> Thus this patch ends up with an ugly goto to skip all
> non-data journalling code (to avoid long indentations,
> but that can be changed..) in the beginning, and just
> a conditional in the transaction section.
>
> Well, we skip a common part to data journalling which
> is the page truncated check, but we do it again after
> ext4_journal_start() when we re-acquire the page lock
> (so not to acquire the page lock twice needlessly for
> data journalling.)
>
> Signed-off-by: Mauricio Faria de Oliveira <mfo@...onical.com>
> Suggested-by: Jan Kara <jack@...e.cz>
Thanks for the clear commit message. It definitely would not
be clear why the patch was structured in this way without it.
Reviewed-by: Andreas Dilger <adilger@...ger.ca>
Cheers, Andreas
Download attachment "signature.asc" of type "application/pgp-signature" (874 bytes)
Powered by blists - more mailing lists