David Chinner wrote:
>> What would it take to add an option to mkfs.xfs (or to create a
>> dedicated tool) that would efficiently[1] pre-allocate a specified
>> number of inode chunks when a filesystem is created?
>>
>
> Like an extension to mkfs.xfs's prototype file?
>
I guess it could go there, e.g. the "number of inodes" parameter on line
2 of the prototype file (which is currently "merely for backward
compatibility"). Another possibility would be a "-i minpct=N" parameter
to mkfs.xfs, i.e. reserve N percent of the space on the disk for inodes,
and after that's full then allocate more chunks dynamically until the
"maxpct" limit is reached.
Ideally this pre-allocation would be able to reserve space for the inode
chunks without actually having to write to all of those disk blocks
(e.g. to be able to dedicate 25% of a 2 TB device to 1024-byte inodes
without having to write 500 GB of data to the device). I am not familiar
enough with the XFS data structures to know whether this would be an
easy or a hard thing to do.
>> This filesystem was created with "-i maxpct=0,size=2048", so a new chunk
>> of 64 inodes would require an extent of 128 KiB (32 * 4KiB blocks).
>>
>
> i.e. worst case.
>
Yes, although in this case the "maxpct" didn't matter because less than
25% of the disk was being used for inodes when the problem was
encountered. It is likely to occur with smaller inodes, but it can still
happen.
|