xfs
[Top] [All Lists]

[PATCH 00/12, DEV-ONLY] xfsprogs: metadata CRC support, first batch

To: xfs@xxxxxxxxxxx
Subject: [PATCH 00/12, DEV-ONLY] xfsprogs: metadata CRC support, first batch
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 22 Jan 2013 00:52:59 +1100
Delivered-to: xfs@xxxxxxxxxxx
Hi folks,

Here is the userspace side of the first batch of kernel patches for
metadata CRC support. It needs to be applied on top of the kernel
sync patch I sent here:

http://oss.sgi.com/archives/xfs/2013-01/msg00188.html

This batch of patches covers the porting of the kernel crc32c code,
syncing the kernel log recovery code to libxlog, and metadata CRC
support for inodes, freespace, quota, superblock and symlinks. It
does not cover directory or attribute metadata - that will be sent
as a separate patch.

This code is functional, but not pretty and probably pretty much
unreviewable. There are outstanding issues like how to report
verifier errors in a sane way that is source compatible with the
kernel code, how to factor all the repeated copy-n-paste template
code so taht kernel and userspace share code sanely, and so on.

The xfs_db code is not fully converted - xfs_check does not work at
all on metadata CRC enabled filesystems, so if you want to run
xfstests, you need to set XFS_CHECK_PROG="/bin/true" in
common.config. I haven't touched xfs_copy, metadata, quota, io, etc,
and I know that xfs_io sees metadata CRC enabled filesystems as
foreign because it doesn't believe that version 5 superblocks are
valid....

xfs_reapir mostly works - it's got some interesting extra output to
do with verifier failure so that I can debug problems. I added these
filters to _filter_repair() in common.repair:

# crc enabled filesystems
/XFS_CORRUPTION_ERROR/ && next;
/^bad uuid/ && next;

so that most of the noise is filtered out and so most xfstests pass
just fine.

Quite a few tests have mkfs output in their golden image,
and hence they fail because of the new crc information line in the
output.

The userspace verifier support is pretty cool - if xfs_repair fixes
something incorrectly, the verifier will pick it up as being bad and
it doesn't get written to disk. Error handling of these situations
is currently non-existent, which is why there is error output in
these cases.  This has found several problems and lots of redundant
checks and fixes in xfs_repair - having to fix the same problem in 3
different phases which have 3 different implementations of the same
corruption detection gets old in a hurry....

The overall diffstat for this series currently stands at:

93 files changed, 4126 insertions(+), 961 deletions(-)

and that is on top of the initial kernel sync patch. Once again, I
don't expect this patch set to be reviewed - I'm providing it
so that the kernel code that needs review can be exercised and
tested .....

ObWarning to non-developers: This code eats babies for fun and
profit. Unless you are going to be testing, reviewing and reporting
problems with the code as part of the development process, do not
apply this patch set. Yeah, I know, all the cool kids are doing CRCs
these days - it'll be ready to go soon, and then you can get your
fix...

Cheers,

Dave.

<Prev in Thread] Current Thread [Next in Thread>