On Tue, 14 Aug 2007 11:44:37 -0400 Josef Bacik <[EMAIL PROTECTED]> wrote:
> Hello, > > I assume the block stuff I sent is OK so I'm going to start working > on xattrs, unless there are any objections? Want to make sure since > I have a tendancy to step on your toes Chris :). Hi, sorry for the delay. The top of my list right now is real tree locking, so xattrs won't cause too many problems. Your accounting stuff looks pretty good to me, but we need some btrfsctl command or sysfs code (sysfs would be better) to spit out information about usage/quotas. Xattrs are a fairly good sized chunk of work, as long as you don't mind having to go through a few iterations I'd be thrilled to see someone do it. Basically I would start with small xattrs that fit inside a tree block. The idea is to put these small xattrs inside directory items (similar to how we pack file bodies inside extents). But, you'll need a new key type because directories already have directory items. In ctree.h you'll find: #define BTRFS_INODE_ITEM_KEY 1 /* reserve 2-15 close to the inode for later flexibility */ We want the xattrs right after the inode on disk, so use key type 2. You'll have to refactor the directory code a little so you can reuse it to store the xattrs. directory items have a flags field and a type field. The type field stores things used by readdir, but the flags field is currently unused. For large xattrs the dir items would point to a key, which is just a regularly allocated inode. But you can get there later. -chris _______________________________________________ Btrfs-devel mailing list [email protected] http://oss.oracle.com/mailman/listinfo/btrfs-devel
