From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: Re: [PATCH 9/9] xfs: inode unlinked list needs to recalculate the inode CRC
Date: Tue, 28 May 2013 21:51:50 +1000 [thread overview]
Message-ID: <20130528115150.GW29466@dastard> (raw)
In-Reply-To: <1369636707-15150-10-git-send-email-david@fromorbit.com>
On Mon, May 27, 2013 at 04:38:27PM +1000, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> The inode unlinked list manipulations operate directly on the inode
> buffer, and so bypass the inode CRC calculation mechanisms. Hence an
> inode on the unlinked list has an invalid CRC. Fix this by
> recalculating the CRC whenever we modify an unlinked list pointer in
> an inode. This is trivial to do, and the new CRC gets logged with
> the inode core so on replay of the unlinked list operations this
> will be updated as expected and remain consistent.
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
I need to rework this fix.
The fact that it actually requires log recovery to follow it's
documented recovery ordering constraints has exposed a bug in those
the log recovery transaction item re-ordering code. The bug has
been there since inode chunk deletion was introduced in 2003.
It has also shown up that there is no guarantee that the on-disk
inode in the buffer is actually uptodate, so recording the CRC in
the transaction for recovery is the wrong thing to do because it may
be different to what recovery ends up with after reordering all the
modifications. So the correct thing to do is to have recovery
recalculate the on-disk inode CRC are modifying the unlinked list...
So, there's 2-3 patches that need to replace this one....
Thank xfs/121 and the icreate patch set for finding this mess.
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:[~2013-05-28 11:51 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-27 6:38 [PATH 0/9] xfs: fixes for 3.10-rc4 Dave Chinner
2013-05-27 6:38 ` [PATCH 1/9] xfs: don't emit v5 superblock warnings on write Dave Chinner
2013-05-29 16:39 ` Brian Foster
2013-05-30 17:49 ` Ben Myers
2013-06-11 6:05 ` Dave Chinner
2013-06-11 21:29 ` Ben Myers
2013-05-27 6:38 ` [PATCH 2/9] xfs: fix incorrect remote symlink block count Dave Chinner
2013-05-29 16:39 ` Brian Foster
2013-05-30 0:46 ` Dave Chinner
2013-05-30 17:49 ` Ben Myers
2013-05-27 6:38 ` [PATCH 3/9] xfs: increase number of ACL entries for V5 superblocks Dave Chinner
2013-05-29 16:40 ` Brian Foster
2013-05-27 6:38 ` [PATCH 4/9] xfs: rework dquot CRCs Dave Chinner
2013-05-29 18:58 ` Brian Foster
2013-05-30 1:00 ` Dave Chinner
2013-05-30 12:02 ` Brian Foster
2013-06-03 4:12 ` Dave Chinner
2013-05-27 6:38 ` [PATCH 5/9] xfs: fix split buffer vector log recovery support Dave Chinner
2013-05-29 19:21 ` Mark Tinguely
2013-05-30 17:49 ` Ben Myers
2013-05-27 6:38 ` [PATCH 6/9] xfs: disable swap extents ioctl on CRC enabled filesystems Dave Chinner
2013-05-28 21:49 ` Ben Myers
2013-05-30 1:07 ` Dave Chinner
2013-05-29 21:06 ` Brian Foster
2013-05-30 17:56 ` Ben Myers
2013-05-27 6:38 ` [PATCH 7/9] xfs: kill suid/sgid through the truncate path Dave Chinner
2013-05-30 14:17 ` Brian Foster
2013-05-30 15:52 ` Ben Myers
2013-05-30 16:02 ` Brian Foster
2013-05-30 17:07 ` Ben Myers
2013-05-27 6:38 ` [PATCH 8/9] xfs: add fsgeom flag for v5 superblock support Dave Chinner
2013-05-29 15:10 ` Eric Sandeen
2013-05-29 21:43 ` Ben Myers
2013-05-29 21:47 ` Ben Myers
2013-05-30 1:28 ` Dave Chinner
2013-05-30 1:11 ` Dave Chinner
2013-05-30 14:17 ` Brian Foster
2013-05-30 17:57 ` Ben Myers
2013-05-27 6:38 ` [PATCH 9/9] xfs: inode unlinked list needs to recalculate the inode CRC Dave Chinner
2013-05-28 11:51 ` Dave Chinner [this message]
2013-05-28 20:36 ` [PATCH 9a,9b v2, replacements] xfs: unlinked list crcs Dave Chinner
2013-05-28 20:36 ` [PATCH 1/2] xfs: fix log recovery transaction item reordering Dave Chinner
2013-05-28 20:36 ` [PATCH 2/2] xfs: inode unlinked list needs to recalculate the inode CRC Dave Chinner
2013-05-30 14:17 ` Brian Foster
2013-05-30 20:27 ` Dave Chinner
2013-05-28 8:37 ` [PATCH 10/9] xfs: fix dir3 freespace block corruption Dave Chinner
2013-05-30 19:15 ` Ben Myers
2013-05-31 21:54 ` Ben Myers
2013-05-28 17:56 ` [PATH 0/9] xfs: fixes for 3.10-rc4 Ben Myers
2013-05-28 23:54 ` Dave Chinner
2013-05-29 19:01 ` Ben Myers
2013-05-29 19:27 ` Eric Sandeen
2013-05-29 19:45 ` Ben Myers
2013-05-28 21:27 ` [PATCH 11/9] xfs: fix remote attribute invalidation for a leaf Dave Chinner
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=20130528115150.GW29466@dastard \
--to=david@fromorbit.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