Re: Required help for understanding ext4 block allocation

Jan Kara
2012-03-16T09:18:11Z

Hello,

On Thu 15-03-12 18:48:56, Akshay Nehe wrote:
> I am trying to understand the block allocation in ext4 file sytem, I
> have gone through all basic theory and browsing code to do it.
>
> I am writing a module in which i got ext4 on disk inode, now according
> to theory first 12 bytes of i_block points to ext4_extent_header, so
> can i use this array of i_block[EXT4_N_BLOCKS].
>
> Means how to fill objects of struct ext4_extent_header (using first
> 12 byte of i_block) and struct ext4_extent (using reminder bytes of
> i_block).
struct ext4_extent_header is just directly stored in the space occupied
by i_block[EXT4_N_BLOCKS]. So for example ext_inode_hdr() does:
(struct ext4_extent_header *)EXT4_I(inode)->i_data
(where i_data is just one-to-one copy of i_blocks from on disk inode).

And it's the same with struct ext4_extent. See for example macro
EXT_FIRST_EXTENT.

Honza

--
Jan Kara <jack@suse.cz>
SUSE Labs, CR