[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 08/19] 9p: darwin: Compatibility for f/l*xattr
From: |
Christian Schoenebeck |
Subject: |
[PULL v2 08/19] 9p: darwin: Compatibility for f/l*xattr |
Date: |
Mon, 07 Mar 2022 12:15:00 +0100 |
From: Keno Fischer <keno@juliacomputing.com>
On darwin `fgetxattr` takes two extra optional arguments,
and the l* variants are not defined (in favor of an extra
flag to the regular variants.
Signed-off-by: Keno Fischer <keno@juliacomputing.com>
[Michael Roitzsch: - Rebase for NixOS]
Signed-off-by: Michael Roitzsch <reactorcontrol@icloud.com>
Signed-off-by: Will Cohen <wwcohen@gmail.com>
Message-Id: <20220227223522.91937-9-wwcohen@gmail.com>
Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Acked-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
---
hw/9pfs/9p-local.c | 12 ++++++++----
hw/9pfs/9p-util.h | 17 +++++++++++++++++
2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
index f3272f0b43..a0d08e5216 100644
--- a/hw/9pfs/9p-local.c
+++ b/hw/9pfs/9p-local.c
@@ -790,16 +790,20 @@ static int local_fstat(FsContext *fs_ctx, int fid_type,
mode_t tmp_mode;
dev_t tmp_dev;
- if (fgetxattr(fd, "user.virtfs.uid", &tmp_uid, sizeof(uid_t)) > 0) {
+ if (qemu_fgetxattr(fd, "user.virtfs.uid",
+ &tmp_uid, sizeof(uid_t)) > 0) {
stbuf->st_uid = le32_to_cpu(tmp_uid);
}
- if (fgetxattr(fd, "user.virtfs.gid", &tmp_gid, sizeof(gid_t)) > 0) {
+ if (qemu_fgetxattr(fd, "user.virtfs.gid",
+ &tmp_gid, sizeof(gid_t)) > 0) {
stbuf->st_gid = le32_to_cpu(tmp_gid);
}
- if (fgetxattr(fd, "user.virtfs.mode", &tmp_mode, sizeof(mode_t)) > 0) {
+ if (qemu_fgetxattr(fd, "user.virtfs.mode",
+ &tmp_mode, sizeof(mode_t)) > 0) {
stbuf->st_mode = le32_to_cpu(tmp_mode);
}
- if (fgetxattr(fd, "user.virtfs.rdev", &tmp_dev, sizeof(dev_t)) > 0) {
+ if (qemu_fgetxattr(fd, "user.virtfs.rdev",
+ &tmp_dev, sizeof(dev_t)) > 0) {
stbuf->st_rdev = le64_to_cpu(tmp_dev);
}
} else if (fs_ctx->export_flags & V9FS_SM_MAPPED_FILE) {
diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h
index a48da32f04..be8dc1a43a 100644
--- a/hw/9pfs/9p-util.h
+++ b/hw/9pfs/9p-util.h
@@ -19,6 +19,23 @@
#define O_PATH_9P_UTIL 0
#endif
+#ifdef CONFIG_DARWIN
+#define qemu_fgetxattr(...) fgetxattr(__VA_ARGS__, 0, 0)
+#define qemu_lgetxattr(...) getxattr(__VA_ARGS__, 0, XATTR_NOFOLLOW)
+#define qemu_llistxattr(...) listxattr(__VA_ARGS__, XATTR_NOFOLLOW)
+#define qemu_lremovexattr(...) removexattr(__VA_ARGS__, XATTR_NOFOLLOW)
+static inline int qemu_lsetxattr(const char *path, const char *name,
+ const void *value, size_t size, int flags) {
+ return setxattr(path, name, value, size, 0, flags | XATTR_NOFOLLOW);
+}
+#else
+#define qemu_fgetxattr fgetxattr
+#define qemu_lgetxattr lgetxattr
+#define qemu_llistxattr llistxattr
+#define qemu_lremovexattr lremovexattr
+#define qemu_lsetxattr lsetxattr
+#endif
+
static inline void close_preserve_errno(int fd)
{
int serrno = errno;
--
2.20.1
- [PULL v2 00/19] 9p queue 2022-03-07 (previous 2022-03-04), Christian Schoenebeck, 2022/03/07
- [PULL v2 03/19] 9p: darwin: Handle struct stat(fs) differences, Christian Schoenebeck, 2022/03/07
- [PULL v2 04/19] 9p: darwin: Handle struct dirent differences, Christian Schoenebeck, 2022/03/07
- [PULL v2 05/19] 9p: darwin: Ignore O_{NOATIME, DIRECT}, Christian Schoenebeck, 2022/03/07
- [PULL v2 06/19] 9p: darwin: Move XATTR_SIZE_MAX->P9_XATTR_SIZE_MAX, Christian Schoenebeck, 2022/03/07
- [PULL v2 19/19] fsdev/p9array.h: convert Doxygen -> kerneldoc format, Christian Schoenebeck, 2022/03/07
- [PULL v2 02/19] 9p: Rename 9p-util -> 9p-util-linux, Christian Schoenebeck, 2022/03/07
- [PULL v2 08/19] 9p: darwin: Compatibility for f/l*xattr,
Christian Schoenebeck <=
- [PULL v2 07/19] 9p: darwin: *xattr_nofollow implementations, Christian Schoenebeck, 2022/03/07
- [PULL v2 01/19] 9p: linux: Fix a couple Linux assumptions, Christian Schoenebeck, 2022/03/07
- [PULL v2 16/19] 9pfs/9p.c: convert Doxygen -> kerneldoc format, Christian Schoenebeck, 2022/03/07
- [PULL v2 13/19] 9pfs: drop Doxygen format from qemu_dirent_dup() API comment, Christian Schoenebeck, 2022/03/07
- [PULL v2 15/19] 9pfs/codir.c: convert Doxygen -> kerneldoc format, Christian Schoenebeck, 2022/03/07
- [PULL v2 11/19] 9p: darwin: meson: Allow VirtFS on Darwin, Christian Schoenebeck, 2022/03/07
- [PULL v2 10/19] 9p: darwin: Adjust assumption on virtio-9p-test, Christian Schoenebeck, 2022/03/07
- [PULL v2 09/19] 9p: darwin: Implement compatibility for mknodat, Christian Schoenebeck, 2022/03/07
- [PULL v2 18/19] 9pfs/coth.h: drop Doxygen format on v9fs_co_run_in_worker(), Christian Schoenebeck, 2022/03/07
- [PULL v2 17/19] 9pfs/9p-util.h: convert Doxygen -> kerneldoc format, Christian Schoenebeck, 2022/03/07