xref: /qemu/hw/9pfs/9p-xattr.h (revision 01847522)
1267ae092SWei Liu /*
2267ae092SWei Liu  * 9p
3267ae092SWei Liu  *
4267ae092SWei Liu  * Copyright IBM, Corp. 2010
5267ae092SWei Liu  *
6267ae092SWei Liu  * Authors:
7267ae092SWei Liu  *  Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
8267ae092SWei Liu  *
9267ae092SWei Liu  * This work is licensed under the terms of the GNU GPL, version 2.  See
10267ae092SWei Liu  * the COPYING file in the top-level directory.
11267ae092SWei Liu  *
12267ae092SWei Liu  */
132a6a4076SMarkus Armbruster 
142a6a4076SMarkus Armbruster #ifndef QEMU_9P_XATTR_H
152a6a4076SMarkus Armbruster #define QEMU_9P_XATTR_H
16267ae092SWei Liu 
17267ae092SWei Liu #include "qemu/xattr.h"
18267ae092SWei Liu 
19*01847522SGreg Kurz struct XattrOperations {
20267ae092SWei Liu     const char *name;
21267ae092SWei Liu     ssize_t (*getxattr)(FsContext *ctx, const char *path,
22267ae092SWei Liu                         const char *name, void *value, size_t size);
23267ae092SWei Liu     ssize_t (*listxattr)(FsContext *ctx, const char *path,
24267ae092SWei Liu                          char *name, void *value, size_t size);
25267ae092SWei Liu     int (*setxattr)(FsContext *ctx, const char *path, const char *name,
26267ae092SWei Liu                     void *value, size_t size, int flags);
27267ae092SWei Liu     int (*removexattr)(FsContext *ctx,
28267ae092SWei Liu                        const char *path, const char *name);
29*01847522SGreg Kurz };
30267ae092SWei Liu 
3156ad3e54SGreg Kurz ssize_t local_getxattr_nofollow(FsContext *ctx, const char *path,
3256ad3e54SGreg Kurz                                 const char *name, void *value, size_t size);
333e36aba7SGreg Kurz ssize_t local_setxattr_nofollow(FsContext *ctx, const char *path,
343e36aba7SGreg Kurz                                 const char *name, void *value, size_t size,
353e36aba7SGreg Kurz                                 int flags);
3672f0d0bfSGreg Kurz ssize_t local_removexattr_nofollow(FsContext *ctx, const char *path,
3772f0d0bfSGreg Kurz                                    const char *name);
38267ae092SWei Liu 
39267ae092SWei Liu extern XattrOperations mapped_user_xattr;
40267ae092SWei Liu extern XattrOperations passthrough_user_xattr;
41267ae092SWei Liu 
42267ae092SWei Liu extern XattrOperations mapped_pacl_xattr;
43267ae092SWei Liu extern XattrOperations mapped_dacl_xattr;
44267ae092SWei Liu extern XattrOperations passthrough_acl_xattr;
45267ae092SWei Liu extern XattrOperations none_acl_xattr;
46267ae092SWei Liu 
47267ae092SWei Liu extern XattrOperations *mapped_xattr_ops[];
48267ae092SWei Liu extern XattrOperations *passthrough_xattr_ops[];
49267ae092SWei Liu extern XattrOperations *none_xattr_ops[];
50267ae092SWei Liu 
51267ae092SWei Liu ssize_t v9fs_get_xattr(FsContext *ctx, const char *path, const char *name,
52267ae092SWei Liu                        void *value, size_t size);
53267ae092SWei Liu ssize_t v9fs_list_xattr(FsContext *ctx, const char *path, void *value,
54267ae092SWei Liu                         size_t vsize);
55267ae092SWei Liu int v9fs_set_xattr(FsContext *ctx, const char *path, const char *name,
56267ae092SWei Liu                           void *value, size_t size, int flags);
57267ae092SWei Liu int v9fs_remove_xattr(FsContext *ctx, const char *path, const char *name);
5856fc494bSGreg Kurz 
59267ae092SWei Liu ssize_t pt_listxattr(FsContext *ctx, const char *path, char *name, void *value,
60267ae092SWei Liu                      size_t size);
6156fc494bSGreg Kurz ssize_t pt_getxattr(FsContext *ctx, const char *path, const char *name,
6256fc494bSGreg Kurz                     void *value, size_t size);
6356fc494bSGreg Kurz int pt_setxattr(FsContext *ctx, const char *path, const char *name, void *value,
6456fc494bSGreg Kurz                 size_t size, int flags);
6556fc494bSGreg Kurz int pt_removexattr(FsContext *ctx, const char *path, const char *name);
66267ae092SWei Liu 
6756fc494bSGreg Kurz ssize_t notsup_getxattr(FsContext *ctx, const char *path, const char *name,
6856fc494bSGreg Kurz                         void *value, size_t size);
6956fc494bSGreg Kurz int notsup_setxattr(FsContext *ctx, const char *path, const char *name,
7056fc494bSGreg Kurz                     void *value, size_t size, int flags);
7156fc494bSGreg Kurz ssize_t notsup_listxattr(FsContext *ctx, const char *path, char *name,
7256fc494bSGreg Kurz                          void *value, size_t size);
7356fc494bSGreg Kurz int notsup_removexattr(FsContext *ctx, const char *path, const char *name);
74267ae092SWei Liu 
75267ae092SWei Liu #endif
76