On Tue, 11 Sep 2007 14:03:58 -0400
Josef Bacik <jbacik@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