xfs
[Top] [All Lists]

[PATCH 0/9] xfs: metadata CRCs, kernel, first batch

To: xfs@xxxxxxxxxxx
Subject: [PATCH 0/9] xfs: metadata CRCs, kernel, first batch
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Tue, 22 Jan 2013 00:25:51 +1100
Delivered-to: xfs@xxxxxxxxxxx
Hi folks,

The following patches are the first set of kernel changes for
metadata CRC validation. This batch of patches covers inodes,
freespace, quota, superblock and symlinks. It does not cover
directory or attribute metadata - that will be sent as a separate
patch.

This series makes is through to 001-092 in xfstests - there is a
problem in the dquot verifier that causes log recovery of dquot
buffers to follow a NULL pointer. I'm slowly working through these
issues one by one, but given that I can run fsstress for extended
periods of time and not crash or corrupt a metadata CRC enabled
filesystem. Similarly, I've created, walked and removed about 500
million inodes today using fsmark, and that hasn't fallen over,
either, so I think the kernel patches are close enough to start
having them reviewed.

The current overhead of the metadata CRCs under fsmark workloads is
around 2.5-3% of the total CPU time. This is in a VM, so hardware
acceleration is not available, but the overhead is definitely within
the expected bounds at this point in time.

The most complex patch is the btree block conversion, simply because
it requires converting all the users of the generic btrees at the
same time. The changes are relatively straight forward, and you'll
see the same pattern throughout the patches:

        - add the fields to the structure
        - add the to/from disk translations
        - add support into the verifiers
        - add crc calculations to the verifiers
        - add buffer type support for log recovery

The AGFL is a bit special - it's adding a header where there wasn't
one before, so there's a bti fo dancing around that conversion in
places.

The symlink support is a bit different - I moved the symlink code
into it's own .c and .h file to make it easy to port to userspace,
and added all the new functionality there. It is also adding a
header where there wasn't one before.

I'll follow this series up with a posting of the userspace code. The
userspace code is functional, but is not ready for review. It will
allow you to create/test/repair filesystems that you can use with
this patch set, but I wouldn't bother looking at the code. It's
going to take a fair bit of work to clean up the mess...

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>