After thinking about it some more, and looking at the code committed into the kernel git tree, I've changed my mind and agree that the extending current group descriptor is simpler than having two versions of the structure depending on the size of the group descriptor.
Does everyone agree this is what the 64-bit on-desk definition should be? Should 64-bit support also imply BIG_BG support? - Ted - EXT4_FEATURE_INCOMPAT_64BIT (0x0080) - support for 64-bit block count fields in the superblock (s_blocks_count_hi, s_free_blocks_count_hi), large group descriptors (s_desc_size), extents with high 16 bits (ee_start_hi, ei_leaf_hi), inode ACL (i_file_acl_hi). May also grow to encompass the previously proposed BIG_BG. Signed-off-by: "Theodore Ts'o" <[EMAIL PROTECTED]> Index: e2fsprogs/lib/ext2fs/ext2_fs.h =================================================================== --- e2fsprogs.orig/lib/ext2fs/ext2_fs.h 2006-10-18 00:33:56.000000000 -0400 +++ e2fsprogs/lib/ext2fs/ext2_fs.h 2006-10-18 01:08:06.000000000 -0400 @@ -147,6 +147,25 @@ __u32 bg_reserved[3]; }; +struct ext4_group_desc +{ + __u32 bg_block_bitmap; /* Blocks bitmap block */ + __u32 bg_inode_bitmap; /* Inodes bitmap block */ + __u32 bg_inode_table; /* Inodes table block */ + __u16 bg_free_blocks_count; /* Free blocks count */ + __u16 bg_free_inodes_count; /* Free inodes count */ + __u16 bg_used_dirs_count; /* Directories count */ + __u16 bg_flags; + __u32 bg_reserved[3]; + __u32 bg_block_bitmap_hi; /* Blocks bitmap block MSB */ + __u32 bg_inode_bitmap_hi; /* Inodes bitmap block MSB */ + __u32 bg_inode_table_hi; /* Inodes table block MSB */ + __u16 bg_free_blocks_count_hi; /* Free blocks count MSB */ + __u16 bg_free_inodes_count_hi; /* Free inodes count MSB */ + __u16 bg_used_dirs_count_hi; /* Directories count MSB */ + __u32 bg_reserved2[3]; +}; + #define EXT2_BG_INODE_UNINIT 0x0001 /* Inode table/bitmap not initialized */ #define EXT2_BG_BLOCK_UNINIT 0x0002 /* Block bitmap not initialized */ @@ -524,12 +543,15 @@ __u32 s_hash_seed[4]; /* HTREE hash seed */ __u8 s_def_hash_version; /* Default hash version to use */ __u8 s_jnl_backup_type; /* Default type of journal backup */ - __u16 s_reserved_word_pad; + __u16 s_desc_size; /* Group desc. size: INCOMPAT_64BIT */ __u32 s_default_mount_opts; __u32 s_first_meta_bg; /* First metablock group */ __u32 s_mkfs_time; /* When the filesystem was created */ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */ - __u32 s_reserved[172]; /* Padding to the end of the block */ + __u32 s_blocks_count_hi; /* Blocks count high 32bits */ + __u32 s_r_blocks_count_hi; /* Reserved blocks count high 32 bits*/ + __u32 s_free_blocks_hi; /* Free blocks count */ + __u32 s_reserved[169]; /* Padding to the end of the block */ }; /* @@ -586,6 +608,7 @@ #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 /* Journal device */ #define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 #define EXT3_FEATURE_INCOMPAT_EXTENTS 0x0040 +#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 #define EXT2_FEATURE_COMPAT_SUPP 0 - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html