4 * Copyright IBM, Corp. 2010
7 * Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
9 * This work is licensed under the terms of the GNU GPL, version 2. See
10 * the COPYING file in the top-level directory.
14 #ifndef QEMU_9P_XATTR_H
15 #define QEMU_9P_XATTR_H
17 #include "qemu/xattr.h"
19 typedef struct xattr_operations
22 ssize_t (*getxattr
)(FsContext
*ctx
, const char *path
,
23 const char *name
, void *value
, size_t size
);
24 ssize_t (*listxattr
)(FsContext
*ctx
, const char *path
,
25 char *name
, void *value
, size_t size
);
26 int (*setxattr
)(FsContext
*ctx
, const char *path
, const char *name
,
27 void *value
, size_t size
, int flags
);
28 int (*removexattr
)(FsContext
*ctx
,
29 const char *path
, const char *name
);
32 ssize_t
local_getxattr_nofollow(FsContext
*ctx
, const char *path
,
33 const char *name
, void *value
, size_t size
);
34 ssize_t
local_setxattr_nofollow(FsContext
*ctx
, const char *path
,
35 const char *name
, void *value
, size_t size
,
37 ssize_t
local_removexattr_nofollow(FsContext
*ctx
, const char *path
,
40 extern XattrOperations mapped_user_xattr
;
41 extern XattrOperations passthrough_user_xattr
;
43 extern XattrOperations mapped_pacl_xattr
;
44 extern XattrOperations mapped_dacl_xattr
;
45 extern XattrOperations passthrough_acl_xattr
;
46 extern XattrOperations none_acl_xattr
;
48 extern XattrOperations
*mapped_xattr_ops
[];
49 extern XattrOperations
*passthrough_xattr_ops
[];
50 extern XattrOperations
*none_xattr_ops
[];
52 ssize_t
v9fs_get_xattr(FsContext
*ctx
, const char *path
, const char *name
,
53 void *value
, size_t size
);
54 ssize_t
v9fs_list_xattr(FsContext
*ctx
, const char *path
, void *value
,
56 int v9fs_set_xattr(FsContext
*ctx
, const char *path
, const char *name
,
57 void *value
, size_t size
, int flags
);
58 int v9fs_remove_xattr(FsContext
*ctx
, const char *path
, const char *name
);
60 ssize_t
pt_listxattr(FsContext
*ctx
, const char *path
, char *name
, void *value
,
62 ssize_t
pt_getxattr(FsContext
*ctx
, const char *path
, const char *name
,
63 void *value
, size_t size
);
64 int pt_setxattr(FsContext
*ctx
, const char *path
, const char *name
, void *value
,
65 size_t size
, int flags
);
66 int pt_removexattr(FsContext
*ctx
, const char *path
, const char *name
);
68 ssize_t
notsup_getxattr(FsContext
*ctx
, const char *path
, const char *name
,
69 void *value
, size_t size
);
70 int notsup_setxattr(FsContext
*ctx
, const char *path
, const char *name
,
71 void *value
, size_t size
, int flags
);
72 ssize_t
notsup_listxattr(FsContext
*ctx
, const char *path
, char *name
,
73 void *value
, size_t size
);
74 int notsup_removexattr(FsContext
*ctx
, const char *path
, const char *name
);