From: Dave Chinner <david@fromorbit.com>
To: Brian Foster <bfoster@redhat.com>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH 4/5] xfs: update metadata LSN in buffers during log recovery
Date: Mon, 29 Aug 2016 11:29:23 +1000 [thread overview]
Message-ID: <20160829012923.GM19025@dastard> (raw)
In-Reply-To: <1470935467-52772-5-git-send-email-bfoster@redhat.com>
On Thu, Aug 11, 2016 at 01:11:06PM -0400, Brian Foster wrote:
> @@ -2552,6 +2562,27 @@ xlog_recover_validate_buf_type(
> xfs_warn(mp, warnmsg);
> ASSERT(0);
> }
> +
> + /*
> + * We must update the metadata LSN of the buffer as it is written out to
> + * ensure that older transactions never replay over this one and corrupt
> + * the buffer. This can occur if log recovery is interrupted at some
> + * point after the current transaction completes, at which point a
> + * subsequent mount starts recovery from the beginning.
> + *
> + * Write verifiers update the metadata LSN from log items attached to
> + * the buffer. Therefore, initialize a bli purely to carry the LSN to
> + * the verifier. We'll clean it up in our ->iodone() callback.
> + */
> + if (bp->b_ops && current_lsn != NULLCOMMITLSN) {
> + struct xfs_buf_log_item *bip;
> +
> + ASSERT(!bp->b_iodone || bp->b_iodone == xlog_recover_iodone);
> + bp->b_iodone = xlog_recover_iodone;
> + xfs_buf_item_init(bp, mp);
> + bip = bp->b_fspriv;
> + bip->bli_item.li_lsn = current_lsn;
> + }
> }
Of, so now we have two things we do when current_lsn !=
NULLCOMMITLSN. I'd change this to something like:
ASSERT(bp->b_fspriv == NULL);
if (current_lsn == NULLCOMMITLSN)
return;
if (warn) {
....
}
if (!bp->b_ops)
return
/* add buf_item */
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2016-08-29 1:29 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-11 17:11 [PATCH 0/5] fix log recovery for v5 superblocks Brian Foster
2016-08-11 17:11 ` [PATCH 1/5] xfs: rework log recovery to submit buffers on LSN boundaries Brian Foster
2016-08-29 1:16 ` Dave Chinner
2016-08-29 18:17 ` Brian Foster
2016-09-20 0:13 ` Dave Chinner
2016-09-23 17:08 ` Brian Foster
2016-08-11 17:11 ` [PATCH 2/5] xfs: pass current lsn to log recovery buffer validation Brian Foster
2016-08-11 17:11 ` [PATCH 3/5] xfs: don't warn on buffers not being recovered due to LSN Brian Foster
2016-08-29 1:25 ` Dave Chinner
2016-08-29 18:17 ` Brian Foster
2016-08-11 17:11 ` [PATCH 4/5] xfs: update metadata LSN in buffers during log recovery Brian Foster
2016-08-29 1:29 ` Dave Chinner [this message]
2016-08-29 18:17 ` Brian Foster
2016-08-11 17:11 ` [PATCH 5/5] xfs: log recovery tracepoints to track current lsn and buffer submission Brian Foster
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=20160829012923.GM19025@dastard \
--to=david@fromorbit.com \
--cc=bfoster@redhat.com \
--cc=xfs@oss.sgi.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).