On Aug 31, 2009 16:37 -0700, Justin Maggard wrote: > On Mon, Aug 31, 2009 at 4:13 PM, Andreas Dilger<adilger@xxxxxxx> wrote: > > Justin, could you please replicate this corruption, collecting some > > additional information before & after. My recollection is that the > > corruption appears in the first few groups, so 64kB should be plenty > > to capture the group descriptor tables (where the checksum is kept). > > > > - mke2fs > > - dd if=/dev/XXX bs=4k count=16 | gzip -9 > /tmp/gdt-new.gz > > - mkdir ... > > - sync > > - dd if=/dev/XXX bs=4k count=16 | gzip -9 > /tmp/gdt-mkdir.gz > > - umount > > - dd if=/dev/XXX bs=4k count=16 | gzip -9 > /tmp/gdt-umount.gz > > - e2fsck > > - dd if=/dev/XXX bs=4k count=16 | gzip -9 > /tmp/gdt-e2fsck.gz > > > > No problem. I just sent you an email with those four attached. If > anyone would like me to upload them somewhere else, just let me know. Comparing the GDT dumps you gave makes it fairly clear what is wrong: --- gdt-umount.od 2009-09-02 02:54:40.148704651 -0600 +++ gdt-e2fsck.od 2009-09-02 02:54:54.809699151 -0600 001000 00000ee5 00000ef5 00000f05 07f568f0 001010 00040002 00000000 00000000 339107f5 001020 00000000 00000000 00000000 00000000 -* +001030 00000000 00000000 00000000 000007fe It seems that e2fsck isn't keeping one of the reserved fields zero, so this is confusing the checksum. truct ext4_group_desc { : : /*30*/ __le16 bg_used_dirs_count_hi; /* Directories count MSB */ __le16 bg_itable_unused_hi; /* Unused inodes count MSB */ __u32 bg_reserved2[3]; } The bg_reserved[2] field is being changed incorrectly. Cheers, Andreas -- Andreas Dilger Sr. Staff Engineer, Lustre Group Sun Microsystems of Canada, Inc. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html