From: Nathan Scott <nathans@sgi.com>
To: Daniel Phillips <phillips@bonn-fries.net>
Cc: Alexander Viro <viro@math.psu.edu>, Andi Kleen <ak@suse.de>,
Andreas Gruenbacher <ag@bestbits.at>,
Linus Torvalds <torvalds@transmeta.com>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-xfs@oss.sgi.com
Subject: Re: [RFC][PATCH] VFS interface for extended attributes
Date: Tue, 4 Dec 2001 10:14:39 +1100 [thread overview]
Message-ID: <20011204101439.E43856@wobbly.melbourne.sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.21.0111121152410.14344-100000@moses.parsec.at> <E16Agdh-0000BS-00@starship.berlin> <20011203115400.F39338@wobbly.melbourne.sgi.com> <E16AuSr-0000HG-00@starship.berlin>
In-Reply-To: <E16AuSr-0000HG-00@starship.berlin>; from phillips@bonn-fries.net on Mon, Dec 03, 2001 at 03:52:58PM +0100
hi Daniel,
On Mon, Dec 03, 2001 at 03:52:58PM +0100, Daniel Phillips wrote:
> On December 3, 2001 01:54 am, Nathan Scott wrote:
> > ...BTW, we have reworked the interfaces once more and
> > will send out the latest revision in the next couple of days -
> > it does away with commands and flags completely, except for this
> > one instance of flags in the set operation...
>
> OK, well I can see some patterns emerging already:
>
> long sys_getxattr(char *path, char *name, void *value, size_t size, int flags)
> long sys_setxattr(char *path, char *name, void *value, size_t size, int flags)
> long sys_listxattr(char *path, char *name, void *value, size_t size, int flags)
Not sure where you got those from (one of the early patches?), but
it looks more like this now:
long sys_setxattr(char *path, char *name, void *value, size_t size, int flags);
long sys_getxattr(char *path, char *name, void *value, size_t size);
long sys_listxattr(char *path, char *list, size_t size);
> Why don't I see 'delxattr'?
>
Hmm.. good question. I had been achieving this through a flag to `set',
but was never real happy about that - I guess a separate remove operation
is the cleaner interface.
> Why is there a need for separate 'path' and 'fd' variants?
Applications - the ready example is the POSIX ACL API, which specifies
path and file descriptor variants of its functions.
> <nit>Is there any other kind of 'attr' in the syscall interface?
> Why not spell it 'attr' instead of 'xaddr'? How about geta, seta,
> dela, lista?</nit>
We have "attr" inode_operations in the VFS, so the idea is to add...
int (*revalidate) (struct dentry *);
int (*setattr) (struct dentry *, struct iattr *);
int (*getattr) (struct dentry *, struct iattr *);
+ int (*setxattr) (struct dentry *, char *, void *, size_t, int);
+ int (*getxattr) (struct dentry *, char *, void *, size_t);
+ int (*listxattr) (struct dentry *, char *, size_t);
};
And I think I'll now separate out the remove operation too -
something like:
+ int (*removexattr) (struct dentry *, char *);
The system call names have been kept consistent with this VFS
naming convention.
> The idea of attribute class (namespace) isn't explicitly accomodated.
> I presume the intention is to encode the class as part of the
> attribute name and have the filesystem or vfs parse it out.
That's correct.
> Is that such a good idea?
It simplifies things. It has worked for Andreas for awhile (its an
idea directly from his current implementation), and I don't have any
problems with it - it has proven quite simple to implement in XFS.
> Why not pass the
> class explicitly and worry about the namespace parsing in user space?
>
> As far as listing attributes goes, is there ever a reason to list system
> and user attributes at the same time?
For this area of the design, we stuck with Andreas' implementation.
I suspect one of the main reasons Andreas did it this way is to be
able to get all attribute names at once - for efficiency in backup
programs, simplicity in file manager type programs, etc.
> IOW, the listxattr call needs a class
> parameter too. It doesn't name a 'name', at least if you accept my
> argument that the class should not be parsed inside the kernel.
Not sure I do - we had an initial version which separated name
and namespace, but we eventually scrapped it. In particular, we
ended up wanting this all-at-once list operation, which becomes
much simpler when using a "fully-qualified" name approach.
> There's no particular
> reason to force all the parameter lists to be the same is there?
No, I think you're looking at an early, draft version of the API.
See the XFS CVS tree - cmd/attr2/man/* in particular. I'll post
new patches here soon, just waiting to hear back from Andreas on
a couple of issues (he's been away from mail for a few days).
cheers.
--
Nathan
next prev parent reply other threads:[~2001-12-04 0:21 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-10 9:08 [RFC][PATCH] " Tim R.
2001-11-11 10:50 ` Nathan Scott
2001-11-12 1:57 ` Anton Altaparmakov
2001-11-12 3:20 ` Nathan Scott
2001-11-12 6:21 ` [RFC][PATCH] VFS interface for " Nathan Scott
2001-11-12 6:47 ` Alexander Viro
2001-11-12 11:39 ` Andreas Gruenbacher
2001-11-13 0:32 ` Alexander Viro
2001-11-13 5:27 ` Andi Kleen
2001-11-15 5:08 ` Nathan Scott
2001-11-15 6:01 ` Andreas Dilger
2001-11-15 23:18 ` Nathan Scott
2001-12-03 0:07 ` Daniel Phillips
2001-12-03 0:54 ` Nathan Scott
2001-12-03 14:52 ` Daniel Phillips
2001-12-03 23:14 ` Nathan Scott [this message]
2001-11-13 0:47 ` Anton Altaparmakov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20011204101439.E43856@wobbly.melbourne.sgi.com \
--to=nathans@sgi.com \
--cc=ag@bestbits.at \
--cc=ak@suse.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-xfs@oss.sgi.com \
--cc=phillips@bonn-fries.net \
--cc=torvalds@transmeta.com \
--cc=viro@math.psu.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®