Re: [PATCH V5 00/23] ext4: Add inline data support.
From: Andreas Dilger <hidden>
Date: 2012-08-14 02:43:46
On 2012-08-13, at 9:04, Theodore Ts'o [off-list ref] wrote:
I had an idea which I think would make inline directories more efficient, although it wouldn't be a backwards compatible change with the existing patch sets to date. We don't actually need to store the entry for '.', since we know what that should be, and we could just store the parent directory in a 4-byte entry.
By not storing the full directory entries for "." and "..", we would save 20 bytes, which for a 256 byte inode where only 120 bytes or so are available for the inline directory, is pretty significant. (We can just synthesize them for the benefit of readdir and lookup --- and I'm pretty sure the VFS is doing its own synthesis for "." and possibly ".." already as far as lookup is concerned.)
One concern is that we have expanded the dentries for "." and ".." to store the Lustre FID in the expanded dirent. The "." dirent isn't needed for in-inode directories, and I suppose we could get the Lustre ".." FID from the "link" xattr (parent inode+name) already stored in the inode as well... Both are useful for robustness with external directory files, but they aren't useful inside the inode. Other than that, it seems reasonable to economize on space inside the inode. It makes the handling a bit more complex. Cheers, Andreas