9p-xattr.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*
  2. * 9p
  3. *
  4. * Copyright IBM, Corp. 2010
  5. *
  6. * Authors:
  7. * Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
  8. *
  9. * This work is licensed under the terms of the GNU GPL, version 2. See
  10. * the COPYING file in the top-level directory.
  11. *
  12. */
  13. #ifndef QEMU_9P_XATTR_H
  14. #define QEMU_9P_XATTR_H
  15. #include "qemu/xattr.h"
  16. struct XattrOperations {
  17. const char *name;
  18. ssize_t (*getxattr)(FsContext *ctx, const char *path,
  19. const char *name, void *value, size_t size);
  20. ssize_t (*listxattr)(FsContext *ctx, const char *path,
  21. char *name, void *value, size_t size);
  22. int (*setxattr)(FsContext *ctx, const char *path, const char *name,
  23. void *value, size_t size, int flags);
  24. int (*removexattr)(FsContext *ctx,
  25. const char *path, const char *name);
  26. };
  27. ssize_t local_getxattr_nofollow(FsContext *ctx, const char *path,
  28. const char *name, void *value, size_t size);
  29. ssize_t local_setxattr_nofollow(FsContext *ctx, const char *path,
  30. const char *name, void *value, size_t size,
  31. int flags);
  32. ssize_t local_removexattr_nofollow(FsContext *ctx, const char *path,
  33. const char *name);
  34. extern XattrOperations mapped_user_xattr;
  35. extern XattrOperations passthrough_user_xattr;
  36. extern XattrOperations mapped_pacl_xattr;
  37. extern XattrOperations mapped_dacl_xattr;
  38. extern XattrOperations passthrough_acl_xattr;
  39. extern XattrOperations none_acl_xattr;
  40. extern XattrOperations *mapped_xattr_ops[];
  41. extern XattrOperations *passthrough_xattr_ops[];
  42. extern XattrOperations *none_xattr_ops[];
  43. ssize_t v9fs_get_xattr(FsContext *ctx, const char *path, const char *name,
  44. void *value, size_t size);
  45. ssize_t v9fs_list_xattr(FsContext *ctx, const char *path, void *value,
  46. size_t vsize);
  47. int v9fs_set_xattr(FsContext *ctx, const char *path, const char *name,
  48. void *value, size_t size, int flags);
  49. int v9fs_remove_xattr(FsContext *ctx, const char *path, const char *name);
  50. ssize_t pt_listxattr(FsContext *ctx, const char *path, char *name, void *value,
  51. size_t size);
  52. ssize_t pt_getxattr(FsContext *ctx, const char *path, const char *name,
  53. void *value, size_t size);
  54. int pt_setxattr(FsContext *ctx, const char *path, const char *name, void *value,
  55. size_t size, int flags);
  56. int pt_removexattr(FsContext *ctx, const char *path, const char *name);
  57. ssize_t notsup_getxattr(FsContext *ctx, const char *path, const char *name,
  58. void *value, size_t size);
  59. int notsup_setxattr(FsContext *ctx, const char *path, const char *name,
  60. void *value, size_t size, int flags);
  61. ssize_t notsup_listxattr(FsContext *ctx, const char *path, char *name,
  62. void *value, size_t size);
  63. int notsup_removexattr(FsContext *ctx, const char *path, const char *name);
  64. #endif