mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
ext4: Update ext2/3/4 superblock, group descriptor and inode structures
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 <stefan.bruens@rwth-aachen.de>
This commit is contained in:
parent
b1edcf0d80
commit
3ee2f977f3
1 changed files with 46 additions and 4 deletions
|
@ -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 {
|
||||
|
@ -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. */
|
||||
|
@ -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 {
|
||||
|
@ -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];
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue