On Fri, Aug 25, 2006 at 05:50:49PM -0600, Andreas Dilger wrote:
> On Aug 25, 2006 15:18 +0200, Alexandre Ratchov wrote:
> > add bg_{block_bitmap,inode_bitmap,inode_table}_hi fields in
> > struct ext2_group_desc and use absolute block numbers. While
> > this is not necessary, IMHO this is simpler than relative
> > addressing, and this change make e2fsprogs "just" work.
> >
> > {
> > + __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_block_bitmap_hi; /* Blocks bitmap block */
> > + __u32 bg_inode_bitmap_hi; /* Inodes bitmap block */
> > + __u32 bg_inode_table_hi; /* Inodes table block */
> > + /*__u16 bg_reserved[3];*/
>
> This consumes all of the blockgroup reserved fields, not leaving any
> for checksumming. In particular, for the UNINIT group changes this
> needs at least 16 bits for the checksum, and it would be good to have
> a 32-bit checksum for the block and inode bitmaps.
>
> Instead, why not put a 16-bit "_block_bitmap_hi" field here and then
> the inode bitmap and inode table are relative to that? Alternately,
> if we want a full 32-bit "hi" value, we can maybe live with smaller
> checksums on the bitmaps...
>
ok, that works for me. However there is still an issue:
in order tu use 48bit adressing, we have to use larger block groups (because
all group descriptors must fit in one block group). So we'll need 16bit
"_hi" bits for blocks_count, inodes_count and perhaps used_dirs_count. And
this leaves no room for additional fields.
There's already a patch that makes the descriptor structure size variable
(similarly to the inode size), see marc.theaimsgroup.com/?m=114968738307171
Here is the updated patch set:
linux-2.6.18-rc4:
http://www.bullopensource.org/ext4/20060904/ext4-linux-2.6.18-rc4.tar.gz
e2fsprogs-1.39:
http://www.bullopensource.org/ext4/20060904/ext4-e2fsprogs-1.39.tar.gz
cheers,
--
Alexandre
On Sep 04, 2006 16:59 +0200, Alexandre Ratchov wrote:
> in order tu use 48bit adressing, we have to use larger block groups (because
> all group descriptors must fit in one block group). So we'll need 16bit
> "_hi" bits for blocks_count, inodes_count and perhaps used_dirs_count. And
> this leaves no room for additional fields.
>
> There's already a patch that makes the descriptor structure size variable
> (similarly to the inode size), see marc.theaimsgroup.com/?m=114968738307171
> Here is the updated patch set:
It was always my desire to require the use of the larger group descriptors
when using a filesystem with > 32-bit blocks. That avoids the need to use
up the small group descriptors for the 64-bit block numbers, allowing them
to be used for other features that are still relevant for smaller filesystems
like checksums and UNINIT groups.
> linux-2.6.18-rc4:
>
> http://www.bullopensource.org/ext4/20060904/ext4-linux-2.6.18-rc4.tar.gz
>
> e2fsprogs-1.39:
>
> http://www.bullopensource.org/ext4/20060904/ext4-e2fsprogs-1.39.tar.gz
Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.