]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
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 a48b696dde5a77ba3e2006e798bca2f7b9aac6d3..b3e6dcad1b31ae6a6a5208c20209ba73d94a6278 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));
 }