diff options
-rw-r--r-- | fs/ext4/ext4_common.c | 10 | ||||
-rw-r--r-- | include/ext4fs.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/fs/ext4/ext4_common.c b/fs/ext4/ext4_common.c index 40b798a..eb49fce 100644 --- a/fs/ext4/ext4_common.c +++ b/fs/ext4/ext4_common.c @@ -2229,6 +2229,16 @@ int ext4fs_mount(unsigned part_length) if (__le16_to_cpu(data->sblock.magic) != EXT2_MAGIC) goto fail; + /* + * The 64bit feature was enabled when metadata_csum was enabled + * and we do not support metadata_csum (and cannot reliably find + * files when it is set. Refuse to mount. + */ + if (data->sblock.feature_incompat & EXT4_FEATURE_INCOMPAT_64BIT) { + printf("Unsupported feature found (64bit, possibly metadata_csum), not mounting\n"); + goto fail; + } + if (__le32_to_cpu(data->sblock.revision_level == 0)) fs->inodesz = 128; else diff --git a/include/ext4fs.h b/include/ext4fs.h index cc765ae..13d2c56 100644 --- a/include/ext4fs.h +++ b/include/ext4fs.h @@ -32,6 +32,7 @@ #define EXT4_EXT_MAGIC 0xf30a #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 #define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 +#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 #define EXT4_INDIRECT_BLOCKS 12 #define EXT4_BG_INODE_UNINIT 0x0001 |