On Mar 08, 2006 14:12 -0500, Jeff Mahoney wrote: > Jan Kara wrote: > >> The internal i/o patches don't support tails, and that's a silver bullet > >> against this working for xattrs. Most xattrs, such as ACLs, are likley > >> to be only a few tens of bytes long and allocating an entire block is > >> extremely wasteful. > > > > Umm, that is really nasty. Ext3 solves this by sharing a block among > > several inodes but that's far to much work to fix this bug... > > I had considered sharing files, and the code knows to drop a link to a > shared file when it's changed. That's one of the features I had wanted > from the beginning but never got around to implementing.
Just FYI, ext3 has recently implemented support for larger inodes exactly to store small EAs with the inode instead of an external block. For ACLs there is some benefit to sharing the block, because the overhead is amortized over many inodes. However, virtually all other EA data is unique per inode and the ext3 EA block sharing only works if ALL the EAs for an inode are identical, so that isn't very useful if you have anything other than ACLs to store. The performance of in-inode EAs is vastly better than external blocks because of seeks and not wasting 4kB of disk/RAM for 10-100 bytes of EA. Not sure if this is useful (haven't been following discussion too closely), but thought I would steer you away from the shared-block idea early. Cheers, Andreas -- Andreas Dilger Principal Software Engineer Cluster File Systems, Inc.