Skip to content

Commit

Permalink
fs/9p: Add xattr callbacks for POSIX ACL
Browse files Browse the repository at this point in the history
This patch implement fetching POSIX ACL from the server

Signed-off-by: Aneesh Kumar K.V <[email protected]>
Signed-off-by: Venkateswararao Jujjuri <[email protected]>
Signed-off-by: Eric Van Hensbergen <[email protected]>
  • Loading branch information
kvaneesh authored and ericvh committed Oct 28, 2010
1 parent 85ff872 commit 7a4566b
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
41 changes: 41 additions & 0 deletions fs/9p/acl.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,44 @@ int v9fs_check_acl(struct inode *inode, int mask)
}
return -EAGAIN;
}

static int v9fs_xattr_get_acl(struct dentry *dentry, const char *name,
void *buffer, size_t size, int type)
{
struct posix_acl *acl;
int error;

if (strcmp(name, "") != 0)
return -EINVAL;

acl = v9fs_get_cached_acl(dentry->d_inode, type);
if (IS_ERR(acl))
return PTR_ERR(acl);
if (acl == NULL)
return -ENODATA;
error = posix_acl_to_xattr(acl, buffer, size);
posix_acl_release(acl);

return error;
}

static int v9fs_xattr_set_acl(struct dentry *dentry, const char *name,
const void *value, size_t size,
int flags, int type)
{
return 0;
}

const struct xattr_handler v9fs_xattr_acl_access_handler = {
.prefix = POSIX_ACL_XATTR_ACCESS,
.flags = ACL_TYPE_ACCESS,
.get = v9fs_xattr_get_acl,
.set = v9fs_xattr_set_acl,
};

const struct xattr_handler v9fs_xattr_acl_default_handler = {
.prefix = POSIX_ACL_XATTR_DEFAULT,
.flags = ACL_TYPE_DEFAULT,
.get = v9fs_xattr_get_acl,
.set = v9fs_xattr_set_acl,
};
4 changes: 4 additions & 0 deletions fs/9p/xattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,5 +164,9 @@ ssize_t v9fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size)

const struct xattr_handler *v9fs_xattr_handlers[] = {
&v9fs_xattr_user_handler,
#ifdef CONFIG_9P_FS_POSIX_ACL
&v9fs_xattr_acl_access_handler,
&v9fs_xattr_acl_default_handler,
#endif
NULL
};
2 changes: 2 additions & 0 deletions fs/9p/xattr.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

extern const struct xattr_handler *v9fs_xattr_handlers[];
extern struct xattr_handler v9fs_xattr_user_handler;
extern const struct xattr_handler v9fs_xattr_acl_access_handler;
extern const struct xattr_handler v9fs_xattr_acl_default_handler;

extern ssize_t v9fs_fid_xattr_get(struct p9_fid *, const char *,
void *, size_t);
Expand Down

0 comments on commit 7a4566b

Please sign in to comment.