mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-28 09:31:14 +00:00
9p: xattr simplifications
Now that the xattr handler is passed to the xattr handler operations, we can use the same get and set operations for the user, trusted, and security xattr namespaces. In those namespaces, we can access the full attribute name by "reattaching" the name prefix the vfs has skipped for us. Add a xattr_full_name helper to make this obvious in the code. For the "system.posix_acl_access" and "system.posix_acl_default" attributes, handler->prefix is the full attribute name; the suffix is the empty string. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Cc: Eric Van Hensbergen <ericvh@gmail.com> Cc: Ron Minnich <rminnich@sandia.gov> Cc: Latchesar Ionkov <lucho@ionkov.net> Cc: v9fs-developer@lists.sourceforge.net Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
d9a82a0403
commit
e409de992e
9 changed files with 83 additions and 306 deletions
|
@ -21,15 +21,19 @@ struct dentry;
|
|||
|
||||
struct xattr_handler {
|
||||
const char *prefix;
|
||||
int flags; /* fs private flags passed back to the handlers */
|
||||
size_t (*list)(struct dentry *dentry, char *list, size_t list_size,
|
||||
const char *name, size_t name_len, int handler_flags);
|
||||
int (*get)(struct dentry *dentry, const char *name, void *buffer,
|
||||
size_t size, int handler_flags);
|
||||
int (*set)(struct dentry *dentry, const char *name, const void *buffer,
|
||||
size_t size, int flags, int handler_flags);
|
||||
int flags; /* fs private flags */
|
||||
size_t (*list)(const struct xattr_handler *, struct dentry *dentry,
|
||||
char *list, size_t list_size, const char *name,
|
||||
size_t name_len);
|
||||
int (*get)(const struct xattr_handler *, struct dentry *dentry,
|
||||
const char *name, void *buffer, size_t size);
|
||||
int (*set)(const struct xattr_handler *, struct dentry *dentry,
|
||||
const char *name, const void *buffer, size_t size,
|
||||
int flags);
|
||||
};
|
||||
|
||||
const char *xattr_full_name(const struct xattr_handler *, const char *);
|
||||
|
||||
struct xattr {
|
||||
const char *name;
|
||||
void *value;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue