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.
13
#ifndef _QEMU_VIRTIO_9P_XATTR_H
14
#define _QEMU_VIRTIO_9P_XATTR_H
16
#include <attr/xattr.h>
18
typedef struct xattr_operations
21
ssize_t (*getxattr)(FsContext *ctx, const char *path,
22
const char *name, void *value, size_t size);
23
ssize_t (*listxattr)(FsContext *ctx, const char *path,
24
char *name, void *value, size_t size);
25
int (*setxattr)(FsContext *ctx, const char *path, const char *name,
26
void *value, size_t size, int flags);
27
int (*removexattr)(FsContext *ctx,
28
const char *path, const char *name);
32
extern XattrOperations mapped_user_xattr;
33
extern XattrOperations passthrough_user_xattr;
35
extern XattrOperations mapped_pacl_xattr;
36
extern XattrOperations mapped_dacl_xattr;
37
extern XattrOperations passthrough_acl_xattr;
38
extern XattrOperations none_acl_xattr;
40
extern XattrOperations *mapped_xattr_ops[];
41
extern XattrOperations *passthrough_xattr_ops[];
42
extern XattrOperations *none_xattr_ops[];
44
ssize_t v9fs_get_xattr(FsContext *ctx, const char *path, const char *name,
45
void *value, size_t size);
46
ssize_t v9fs_list_xattr(FsContext *ctx, const char *path, void *value,
48
int v9fs_set_xattr(FsContext *ctx, const char *path, const char *name,
49
void *value, size_t size, int flags);
50
int v9fs_remove_xattr(FsContext *ctx, const char *path, const char *name);
51
ssize_t pt_listxattr(FsContext *ctx, const char *path, char *name, void *value,
54
static inline ssize_t pt_getxattr(FsContext *ctx, const char *path,
55
const char *name, void *value, size_t size)
57
char buffer[PATH_MAX];
58
return lgetxattr(rpath(ctx, path, buffer), name, value, size);
61
static inline int pt_setxattr(FsContext *ctx, const char *path,
62
const char *name, void *value,
63
size_t size, int flags)
65
char buffer[PATH_MAX];
66
return lsetxattr(rpath(ctx, path, buffer), name, value, size, flags);
69
static inline int pt_removexattr(FsContext *ctx,
70
const char *path, const char *name)
72
char buffer[PATH_MAX];
73
return lremovexattr(rpath(ctx, path, buffer), name);
76
static inline ssize_t notsup_getxattr(FsContext *ctx, const char *path,
77
const char *name, void *value,
84
static inline int notsup_setxattr(FsContext *ctx, const char *path,
85
const char *name, void *value,
86
size_t size, int flags)
92
static inline ssize_t notsup_listxattr(FsContext *ctx, const char *path,
93
char *name, void *value, size_t size)
98
static inline int notsup_removexattr(FsContext *ctx,
99
const char *path, const char *name)