lkml.org 
[lkml]   [2011]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 07/22] ext4: Create bitmap checksum helper functions
    On Tue, Dec 06, 2011 at 10:19:12AM -0700, Andreas Dilger wrote:
    > On 2011-12-05, at 9:33, Ted Ts'o <tytso@mit.edu> wrote:
    > > Note: it's strictly speaking not necessary to mix in the group and
    > > s_csum_seed here. It's useful for the inode table blocks (ITB's)
    > > because the checksum for a particular ITB is located *in* the ITB
    > > itself. So if an ITB gets written to the wrong place, and in
    > > particular, on top of another ITB, we want to be able to know which
    > > cloned copy was written to the wrong place on disk.
    > >
    > > But in the case of the inode and block allocation bitmaps, the
    > > checksums are stored in the block group descriptors; so if the bitmap
    > > is written to the wrong place (and on top of another bitmap), the
    > > checksum will fail to verify, independent of whether we've mixed in
    > > the fs-specific csum seed and the group number.
    > >
    > > So I'd suggest dropping this, which will shave a few cycles off of the
    > > checksum calculation, and it will also simplify the code since we
    > > won't need this particular function.
    >
    > I wouldn't mind keeping the group just to be consistent with all of the other
    > checksums that are used in the filesystem, which are largely inside the
    > structure being checked.
    >
    > The s_uuid is definitely useful to keep as the seed because the block and
    > inode bitmaps are not initialized at mke2fs time with uninit_bg, and it is
    > possible to read a stale bitmap from disk that might belong to an earlier
    > instance of the filesystem in case of a failed or misplaced write of the
    > correct bitmap.

    Hmm... let's say you have bitmap B before mkfs and bitmap B' after mkfs + some
    file writes. B' is lost during write. It would be bad if B != B' and
    crc32c(B) == crc32c(B'), in which case you'd use the wrong bitmap.

    I suppose having the fsuuid + groupnum would probably help to make the inputs
    to crc32c() more distinct, which would be useful since iirc P(collision)
    decreases as the Hamming distance increases. I'm running a simulation to check
    that claim.

    --D

    > That isn't important for e2fsck, since it doesn't really use the bitmaps, but
    > it is important for the kernel not to use bad bitmaps and corrupt the
    > filesystem further.
    >
    > Cheers, Andreas--
    > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    >



    \
     
     \ /
      Last update: 2011-12-06 22:03    [W:0.024 / U:0.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site