mount: fix the wrongly stored fs creation time

This bug made our ext2 images non-mountable by ext4 driver.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2012-06-21 16:50:46 +02:00
parent 9ee4266490
commit c9a13116a4
3 changed files with 54 additions and 14 deletions

View File

@ -53,11 +53,6 @@
#define ENABLE_FEATURE_MKFS_EXT2_RESERVED_GDT 0
#define ENABLE_FEATURE_MKFS_EXT2_DIR_INDEX 1
// from e2fsprogs
#define s_reserved_gdt_blocks s_padding1
#define s_mkfs_time s_reserved[0]
#define s_flags s_reserved[22]
#define EXT2_HASH_HALF_MD4 1
#define EXT2_FLAGS_SIGNED_HASH 0x0001
#define EXT2_FLAGS_UNSIGNED_HASH 0x0002
@ -482,8 +477,10 @@ int mkfs_ext2_main(int argc UNUSED_PARAM, char **argv)
STORE_LE(sb->s_magic, EXT2_SUPER_MAGIC);
STORE_LE(sb->s_inode_size, inodesize);
// set "Required extra isize" and "Desired extra isize" fields to 28
if (inodesize != sizeof(*inode))
STORE_LE(sb->s_reserved[21], 0x001C001C);
if (inodesize != sizeof(*inode)) {
STORE_LE(sb->s_min_extra_isize, 0x001c);
STORE_LE(sb->s_want_extra_isize, 0x001c);
}
STORE_LE(sb->s_first_ino, EXT2_GOOD_OLD_FIRST_INO);
STORE_LE(sb->s_log_block_size, blocksize_log2 - EXT2_MIN_BLOCK_LOG_SIZE);
STORE_LE(sb->s_log_frag_size, blocksize_log2 - EXT2_MIN_BLOCK_LOG_SIZE);