Skip to content

Commit

Permalink
ext4: Update ext2/3/4 superblock, group descriptor and inode structures
Browse files Browse the repository at this point in the history
Most importantly, the superblock provides the used group descriptor size,
which is required for the EXT4_FEATURE_INCOMPAT_64BIT.

Signed-off-by: Stefan Brüns <[email protected]>
  • Loading branch information
StefanBruens authored and trini committed Sep 23, 2016
1 parent b1edcf0 commit 3ee2f97
Showing 1 changed file with 46 additions and 4 deletions.
50 changes: 46 additions & 4 deletions include/ext_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,33 @@ struct ext2_sblock {
char volume_name[16];
char last_mounted_on[64];
__le32 compression_info;
uint8_t prealloc_blocks;
uint8_t prealloc_dir_blocks;
__le16 reserved_gdt_blocks;
uint8_t journal_uuid[16];
__le32 journal_inode;
__le32 journal_dev;
__le32 last_orphan;
__le32 hash_seed[4];
uint8_t default_hash_version;
uint8_t journal_backup_type;
__le16 descriptor_size;
__le32 default_mount_options;
__le32 first_meta_block_group;
__le32 mkfs_time;
__le32 journal_blocks[17];
__le32 total_blocks_high;
__le32 reserved_blocks_high;
__le32 free_blocks_high;
__le16 min_extra_inode_size;
__le16 want_extra_inode_size;
__le32 flags;
__le16 raid_stride;
__le16 mmp_interval;
__le64 mmp_block;
__le32 raid_stripe_width;
uint8_t log2_groups_per_flex;
uint8_t checksum_type;
};

struct ext2_block_group {
Expand All @@ -109,9 +136,23 @@ struct ext2_block_group {
__le16 free_inodes; /* Free inodes count */
__le16 used_dir_cnt; /* Directories count */
__le16 bg_flags;
__le32 bg_reserved[2];
__le32 bg_exclude_bitmap;
__le16 bg_block_id_csum;
__le16 bg_inode_id_csum;
__le16 bg_itable_unused; /* Unused inodes count */
__le16 bg_checksum; /* crc16(s_uuid+grouo_num+group_desc)*/
__le16 bg_checksum; /* crc16(s_uuid+group_num+group_desc)*/
/* following fields only exist if descriptor size is 64 */
__le32 block_id_high;
__le32 inode_id_high;
__le32 inode_table_id_high;
__le16 free_blocks_high;
__le16 free_inodes_high;
__le16 used_dir_cnt_high;
__le16 bg_itable_unused_high;
__le32 bg_exclude_bitmap_high;
__le16 bg_block_id_csum_high;
__le16 bg_inode_id_csum_high;
__le32 bg_reserved;
};

/* The ext2 inode. */
Expand All @@ -125,7 +166,7 @@ struct ext2_inode {
__le32 dtime;
__le16 gid;
__le16 nlinks;
__le32 blockcnt; /* Blocks of 512 bytes!! */
__le32 blockcnt; /* Blocks of either 512 or block_size bytes */
__le32 flags;
__le32 osd1;
union {
Expand All @@ -136,10 +177,11 @@ struct ext2_inode {
__le32 triple_indir_block;
} blocks;
char symlink[60];
char inline_data[60];
} b;
__le32 version;
__le32 acl;
__le32 dir_acl;
__le32 size_high; /* previously dir_acl, but never used */
__le32 fragment_addr;
__le32 osd2[3];
};
Expand Down

0 comments on commit 3ee2f97

Please sign in to comment.