Heads up: e2fsprogs-1.42-WIP-0702 pushed to rawhide

Eric Sandeen sandeen at redhat.com
Thu Oct 6 14:34:37 UTC 2011


On 10/5/11 12:54 PM, Richard W.M. Jones wrote:
> On Wed, Oct 05, 2011 at 09:58:59AM -0500, Eric Sandeen wrote:
>> right; for large ext4 fs use (or testing), try 
>>
>> # mkfs.ext4 -E lazy_itable_init=1 /dev/blah
>>
>> this will cause it to skip inode table initialization, and speed up
>> mkfs a LOT.  It'll also keep sparse test images smaller.
>>
>> IMHO this should probably be made default above a certain size.
> 
> You almost preempted my question: Could I use this for every ext4
> filesystem I make?  Honestly from a virt / libguestfs p.o.v. it sounds
> like something we should always do.

Yes, and sorry for the earlier confusion - it should be on by default
for newer kernels + e2fsprogs.

>> The tradeoff is that inode table initialization happens in
>> kernelspace, post-mount - with efforts made to do it in the
>> background, and not impact other I/O too much.
> 
> Is there a circumstance where this is bad?  I'm thinking perhaps a
> case where you create a filesystem and immediately try to populate it
> with lots of files.

I do have some concerns about that.  I think it will take some careful
benchmarking to know for sure whether it is an issue.

Commit bfff68738f1cb5c93dab1114634cea02aae9e7ba has a good summary
of how it all works, and what some impact on early fs operations may
be:

>     We do not disturb regular inode allocations in any way, it just do not
>     care whether the inode table is, or is not zeroed. But when zeroing, we
>     have to skip used inodes, obviously. Also we should prevent new inode
>     allocations from the group, while zeroing is on the way. For that we
>     take write alloc_sem lock in ext4_init_inode_table() and read alloc_sem
>     in the ext4_claim_inode, so when we are unlucky and allocator hits the
>     group which is currently being zeroed, it just has to wait.

-Eric

> Rich.
> 



More information about the devel mailing list