Index: linux-2.6.22-rc4/fs/ext4/super.c =================================================================== --- linux-2.6.22-rc4.orig/fs/ext4/super.c +++ linux-2.6.22-rc4/fs/ext4/super.c @@ -1298,9 +1298,12 @@ __le16 ext4_group_desc_csum(struct ext4_ offset += sizeof(gdp->bg_checksum); /* skip checksum */ /*BUG_ON(offset != sizeof(*gdp)); /* XXX handle s_desc_size */ /* for checksum of struct ext4_group_desc do the rest...*/ - if (offset < sbi->s_es->s_desc_size) { + if ((sbi->s_es->s_feature_incompat & + cpu_to_le32(EXT4_FEATURE_INCOMPAT_64BIT)) && + offset < le16_to_cpu(sbi->s_es->s_desc_size)) { crc = crc16(crc, (__u8 *)gdp + offset, - sbi->s_es->s_desc_size - offset); + le16_to_cpu(sbi->s_es->s_desc_size) + - offset); } } Index: linux-2.6.22-rc4/include/linux/ext4_fs.h =================================================================== --- linux-2.6.22-rc4.orig/include/linux/ext4_fs.h +++ linux-2.6.22-rc4/include/linux/ext4_fs.h @@ -687,11 +687,11 @@ static inline int ext4_valid_inum(struct #define EXT4_FEATURE_COMPAT_EXT_ATTR 0x0008 #define EXT4_FEATURE_COMPAT_RESIZE_INODE 0x0010 #define EXT4_FEATURE_COMPAT_DIR_INDEX 0x0020 -#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0040 #define EXT4_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 #define EXT4_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 #define EXT4_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 +#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 #define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 #define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040