From: Brian Foster <bfoster@redhat.com>
To: linux-xfs@vger.kernel.org
Subject: Re: [PATCH] xfs: finish dfops on every insert range shift iteration
Date: Tue, 18 Aug 2020 07:08:40 -0400 [thread overview]
Message-ID: <20200818110840.GA94675@bfoster> (raw)
In-Reply-To: <20200713202151.64750-1-bfoster@redhat.com>
On Mon, Jul 13, 2020 at 04:21:51PM -0400, Brian Foster wrote:
> The recent change to make insert range an atomic operation used the
> incorrect transaction rolling mechanism. The explicit transaction
> roll does not finish deferred operations. This means that intents
> for rmapbt updates caused by extent shifts are not logged until the
> final transaction commits. Thus if a crash occurs during an insert
> range, log recovery might leave the rmapbt in an inconsistent state.
> This was discovered by repeated runs of generic/455.
>
> Update insert range to finish dfops on every shift iteration. This
> is similar to collapse range and ensures that intents are logged
> with the transactions that make associated changes.
>
> Fixes: dd87f87d87fa ("xfs: rework insert range into an atomic operation")
> Signed-off-by: Brian Foster <bfoster@redhat.com>
> ---
Ping?
> fs/xfs/xfs_bmap_util.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
> index afdc7f8e0e70..feb277874a1f 100644
> --- a/fs/xfs/xfs_bmap_util.c
> +++ b/fs/xfs/xfs_bmap_util.c
> @@ -1165,7 +1165,7 @@ xfs_insert_file_space(
> goto out_trans_cancel;
>
> do {
> - error = xfs_trans_roll_inode(&tp, ip);
> + error = xfs_defer_finish(&tp);
> if (error)
> goto out_trans_cancel;
>
> --
> 2.21.3
>
next prev parent reply other threads:[~2020-08-18 11:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-13 20:21 [PATCH] xfs: finish dfops on every insert range shift iteration Brian Foster
2020-08-18 11:08 ` Brian Foster [this message]
2020-08-18 15:06 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200818110840.GA94675@bfoster \
--to=bfoster@redhat.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.