aboutsummaryrefslogtreecommitdiffstats
path: root/fs/9p
diff options
context:
space:
mode:
authorAndreas Gruenbacher <agruenba@redhat.com>2015-10-04 13:18:51 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2015-11-13 20:34:32 -0500
commitd9a82a04033f87bbd06efb29f78c0170a38154a8 (patch)
treeac074d813cda2a29a5f8a12a063e058ea588cb7c /fs/9p
parentbf781714b3e1421a0ebcd0137d081e6566a89f15 (diff)
xattr handlers: Pass handler to operations instead of flags
The xattr_handler operations are currently all passed a file system specific flags value which the operations can use to disambiguate between different handlers; some file systems use that to distinguish the xattr namespace, for example. In some oprations, it would be useful to also have access to the handler prefix. To allow that, pass a pointer to the handler to operations instead of the flags value alone. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/9p')
-rw-r--r--fs/9p/acl.c18
-rw-r--r--fs/9p/xattr_security.c10
-rw-r--r--fs/9p/xattr_trusted.c10
-rw-r--r--fs/9p/xattr_user.c10
4 files changed, 28 insertions, 20 deletions
diff --git a/fs/9p/acl.c b/fs/9p/acl.c
index 31c010372660..e6fe82462043 100644
--- a/fs/9p/acl.c
+++ b/fs/9p/acl.c
@@ -230,11 +230,13 @@ static int v9fs_remote_get_acl(struct dentry *dentry, const char *name,
230 return v9fs_xattr_get(dentry, full_name, buffer, size); 230 return v9fs_xattr_get(dentry, full_name, buffer, size);
231} 231}
232 232
233static int v9fs_xattr_get_acl(struct dentry *dentry, const char *name, 233static int v9fs_xattr_get_acl(const struct xattr_handler *handler,
234 void *buffer, size_t size, int type) 234 struct dentry *dentry, const char *name,
235 void *buffer, size_t size)
235{ 236{
236 struct v9fs_session_info *v9ses; 237 struct v9fs_session_info *v9ses;
237 struct posix_acl *acl; 238 struct posix_acl *acl;
239 int type = handler->flags;
238 int error; 240 int error;
239 241
240 if (strcmp(name, "") != 0) 242 if (strcmp(name, "") != 0)
@@ -278,9 +280,9 @@ static int v9fs_remote_set_acl(struct dentry *dentry, const char *name,
278} 280}
279 281
280 282
281static int v9fs_xattr_set_acl(struct dentry *dentry, const char *name, 283static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
282 const void *value, size_t size, 284 struct dentry *dentry, const char *name,
283 int flags, int type) 285 const void *value, size_t size, int flags)
284{ 286{
285 int retval; 287 int retval;
286 struct posix_acl *acl; 288 struct posix_acl *acl;
@@ -297,7 +299,7 @@ static int v9fs_xattr_set_acl(struct dentry *dentry, const char *name,
297 */ 299 */
298 if ((v9ses->flags & V9FS_ACCESS_MASK) != V9FS_ACCESS_CLIENT) 300 if ((v9ses->flags & V9FS_ACCESS_MASK) != V9FS_ACCESS_CLIENT)
299 return v9fs_remote_set_acl(dentry, name, 301 return v9fs_remote_set_acl(dentry, name,
300 value, size, flags, type); 302 value, size, flags, handler->flags);
301 303
302 if (S_ISLNK(inode->i_mode)) 304 if (S_ISLNK(inode->i_mode))
303 return -EOPNOTSUPP; 305 return -EOPNOTSUPP;
@@ -316,7 +318,7 @@ static int v9fs_xattr_set_acl(struct dentry *dentry, const char *name,
316 } else 318 } else
317 acl = NULL; 319 acl = NULL;
318 320
319 switch (type) { 321 switch (handler->flags) {
320 case ACL_TYPE_ACCESS: 322 case ACL_TYPE_ACCESS:
321 name = POSIX_ACL_XATTR_ACCESS; 323 name = POSIX_ACL_XATTR_ACCESS;
322 if (acl) { 324 if (acl) {
@@ -360,7 +362,7 @@ static int v9fs_xattr_set_acl(struct dentry *dentry, const char *name,
360 } 362 }
361 retval = v9fs_xattr_set(dentry, name, value, size, flags); 363 retval = v9fs_xattr_set(dentry, name, value, size, flags);
362 if (!retval) 364 if (!retval)
363 set_cached_acl(inode, type, acl); 365 set_cached_acl(inode, handler->flags, acl);
364err_out: 366err_out:
365 posix_acl_release(acl); 367 posix_acl_release(acl);
366 return retval; 368 return retval;
diff --git a/fs/9p/xattr_security.c b/fs/9p/xattr_security.c
index cb247a142a6e..c0a470add13c 100644
--- a/fs/9p/xattr_security.c
+++ b/fs/9p/xattr_security.c
@@ -19,8 +19,9 @@
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include "xattr.h" 20#include "xattr.h"
21 21
22static int v9fs_xattr_security_get(struct dentry *dentry, const char *name, 22static int v9fs_xattr_security_get(const struct xattr_handler *handler,
23 void *buffer, size_t size, int type) 23 struct dentry *dentry, const char *name,
24 void *buffer, size_t size)
24{ 25{
25 int retval; 26 int retval;
26 char *full_name; 27 char *full_name;
@@ -46,8 +47,9 @@ static int v9fs_xattr_security_get(struct dentry *dentry, const char *name,
46 return retval; 47 return retval;
47} 48}
48 49
49static int v9fs_xattr_security_set(struct dentry *dentry, const char *name, 50static int v9fs_xattr_security_set(const struct xattr_handler *handler,
50 const void *value, size_t size, int flags, int type) 51 struct dentry *dentry, const char *name,
52 const void *value, size_t size, int flags)
51{ 53{
52 int retval; 54 int retval;
53 char *full_name; 55 char *full_name;
diff --git a/fs/9p/xattr_trusted.c b/fs/9p/xattr_trusted.c
index e30d33b8a3fb..b888a4eecd1a 100644
--- a/fs/9p/xattr_trusted.c
+++ b/fs/9p/xattr_trusted.c
@@ -19,8 +19,9 @@
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include "xattr.h" 20#include "xattr.h"
21 21
22static int v9fs_xattr_trusted_get(struct dentry *dentry, const char *name, 22static int v9fs_xattr_trusted_get(const struct xattr_handler *handler,
23 void *buffer, size_t size, int type) 23 struct dentry *dentry, const char *name,
24 void *buffer, size_t size)
24{ 25{
25 int retval; 26 int retval;
26 char *full_name; 27 char *full_name;
@@ -46,8 +47,9 @@ static int v9fs_xattr_trusted_get(struct dentry *dentry, const char *name,
46 return retval; 47 return retval;
47} 48}
48 49
49static int v9fs_xattr_trusted_set(struct dentry *dentry, const char *name, 50static int v9fs_xattr_trusted_set(const struct xattr_handler *handler,
50 const void *value, size_t size, int flags, int type) 51 struct dentry *dentry, const char *name,
52 const void *value, size_t size, int flags)
51{ 53{
52 int retval; 54 int retval;
53 char *full_name; 55 char *full_name;
diff --git a/fs/9p/xattr_user.c b/fs/9p/xattr_user.c
index d0b701b72080..06f136cbe264 100644
--- a/fs/9p/xattr_user.c
+++ b/fs/9p/xattr_user.c
@@ -19,8 +19,9 @@
19#include <linux/slab.h> 19#include <linux/slab.h>
20#include "xattr.h" 20#include "xattr.h"
21 21
22static int v9fs_xattr_user_get(struct dentry *dentry, const char *name, 22static int v9fs_xattr_user_get(const struct xattr_handler *handler,
23 void *buffer, size_t size, int type) 23 struct dentry *dentry, const char *name,
24 void *buffer, size_t size)
24{ 25{
25 int retval; 26 int retval;
26 char *full_name; 27 char *full_name;
@@ -46,8 +47,9 @@ static int v9fs_xattr_user_get(struct dentry *dentry, const char *name,
46 return retval; 47 return retval;
47} 48}
48 49
49static int v9fs_xattr_user_set(struct dentry *dentry, const char *name, 50static int v9fs_xattr_user_set(const struct xattr_handler *handler,
50 const void *value, size_t size, int flags, int type) 51 struct dentry *dentry, const char *name,
52 const void *value, size_t size, int flags)
51{ 53{
52 int retval; 54 int retval;
53 char *full_name; 55 char *full_name;