[Btrfs-devel] use for the flags section of dir_item

Chris Mason chris.mason at oracle.com
Tue Sep 11 12:15:39 PDT 2007


On Tue, 11 Sep 2007 14:03:58 -0400
Josef Bacik <jbacik at redhat.com> wrote:

> Hello,
> 
> I don't need an "flags" type thing per se, I just think it would be
> useful to have a nice small sub-identifier for the dir_item so I can
> quickly figure out who the handler for the xattr I'm looking at is.
> Currently for my listxattr code, I do a search for type
> BTRFS_XATTR_ITEM_KEY and I get all of my xattr's back.  Now because I
> abstracted out the the handling of each prefix ("user.", "security."
> etc) i have a "list" function like ext3 et al has that just bascially
> copies the information from the dir item into the buffer to return
> back to user space.  This is why I originally didn't do the
> abstraction, because I thought this approach was dumb since we always
> do the same thing, but apparently it has its uses.  So when I pull
> out a dir item, I have to loop through all of my known prefixes until
> I find the one it matches, and send it off to the specific list
> handler to copy it into the buffer.  I can at this point do one of
> two things
> 
> 1) just not abstract out the list function.  I can't see anywhere
> where I would want to do something differently, but again I may have
> missed something so I'd like to know what other people think about
> this. 2) add a field that I can put the attr index for that
> particular attr, so when I read it off the disk, i just do something
> like
> 
> struct xattr_handler *handler =
> btrfs_xattr_handler(btrfs_dir_item_ident(di));
> 
> instead of having to loop through all of my handlers for each xattr
> attached to that inode.  Let me know what you think :),

I would do a hashed lookup on the prefix instead of iterating
manually.  Is there any reason that wouldn't work?

-chris



More information about the Btrfs-devel mailing list