Whamcloud - gitweb
Fix EXT4_FEATURE_RO_COMPAT_HUGE_FILE check
authorJustin Maggard <jmaggard10@gmail.com>
Mon, 22 Nov 2010 22:32:28 +0000 (17:32 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 22 Nov 2010 22:32:28 +0000 (17:32 -0500)
Creating a 4TB file on a filesystem with the 64bit flag set results in
e2fsck consistently complaining about i_blocks being wrong, with
confusing messages like this:

Inode 29818882, i_blocks is 8388608816, should be 8388608816.  Fix? no

That appears to be caused by ext2fs_inode_i_blocks() checking for the
EXT4_FEATURE_RO_COMPAT_HUGE_FILE in the wrong place.  Fix it.

Signed-off-by: Justin Maggard <jmaggard10@gmail.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
lib/ext2fs/blknum.c

index a48b696..b3e6dca 100644 (file)
@@ -49,7 +49,7 @@ blk64_t ext2fs_inode_data_blocks2(ext2_filsys fs,
                                        struct ext2_inode *inode)
 {
        return (inode->i_blocks |
-               ((fs->super->s_feature_incompat &
+               ((fs->super->s_feature_ro_compat &
                  EXT4_FEATURE_RO_COMPAT_HUGE_FILE) ?
                 (__u64) inode->osd2.linux2.l_i_blocks_hi << 32 : 0)) -
                (inode->i_file_acl ? fs->blocksize >> 9 : 0);
@@ -62,7 +62,7 @@ blk64_t ext2fs_inode_i_blocks(ext2_filsys fs,
                                        struct ext2_inode *inode)
 {
        return (inode->i_blocks |
-               ((fs->super->s_feature_incompat & 
+               ((fs->super->s_feature_ro_compat &
                  EXT4_FEATURE_RO_COMPAT_HUGE_FILE) ?
                 (__u64)inode->osd2.linux2.l_i_blocks_hi << 32 : 0));
 }