From: Will Cohen <wwcohen@gmail.com>
To: qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
Christian Schoenebeck <qemu_oss@crudebyte.com>,
Greg Kurz <groug@kaod.org>,
hi@alyssa.is, Michael Roitzsch <reactorcontrol@icloud.com>,
Will Cohen <wwcohen@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Keno Fischer <keno@juliacomputing.com>
Subject: [PATCH v3 08/11] 9p: darwin: Compatibility for f/l*xattr
Date: Thu, 27 Jan 2022 19:56:08 -0500 [thread overview]
Message-ID: <20220128005611.87185-9-wwcohen@gmail.com> (raw)
In-Reply-To: <20220128005611.87185-1-wwcohen@gmail.com>
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>
---
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 1a5e3eed73..2bfff79b12 100644
--- a/hw/9pfs/9p-local.c
+++ b/hw/9pfs/9p-local.c
@@ -781,16 +781,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 627baebaba..38ef8b289d 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.34.1
next prev parent reply other threads:[~2022-01-28 1:16 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-28 0:56 [PATCH v3 00/11] This is a followup to https://lists.gnu.org/archive/html/qemu-devel/2021-11/msg04325.html, Will Cohen
2022-01-28 0:56 ` [PATCH v3 01/11] 9p: linux: Fix a couple Linux assumptions Will Cohen
2022-01-28 15:52 ` Greg Kurz
2022-01-28 0:56 ` [PATCH v3 02/11] 9p: Rename 9p-util -> 9p-util-linux Will Cohen
2022-01-28 16:27 ` Greg Kurz
2022-01-28 0:56 ` [PATCH v3 03/11] 9p: darwin: Handle struct stat(fs) differences Will Cohen
2022-02-02 17:48 ` Christian Schoenebeck
2022-01-28 0:56 ` [PATCH v3 04/11] 9p: darwin: Handle struct dirent differences Will Cohen
2022-02-02 15:07 ` Will Cohen
2022-02-02 17:37 ` Christian Schoenebeck
2022-02-02 18:31 ` Will Cohen
2022-01-28 0:56 ` [PATCH v3 05/11] 9p: darwin: Ignore O_{NOATIME, DIRECT} Will Cohen
2022-01-28 0:56 ` [PATCH v3 06/11] 9p: darwin: Compatibility defn for XATTR_SIZE_MAX Will Cohen
2022-01-28 16:02 ` Christian Schoenebeck
2022-01-28 0:56 ` [PATCH v3 07/11] 9p: darwin: *xattr_nofollow implementations Will Cohen
2022-01-28 0:56 ` Will Cohen [this message]
2022-01-28 0:56 ` [PATCH v3 09/11] 9p: darwin: Implement compatibility for mknodat Will Cohen
2022-01-28 0:56 ` [PATCH v3 10/11] 9p: darwin: meson: Allow VirtFS on Darwin Will Cohen
2022-01-28 0:56 ` [PATCH v3 11/11] 9p: darwin: adjust assumption on virtio-9p-test Will Cohen
2022-01-28 7:03 ` Thomas Huth
2022-01-28 13:38 ` Will Cohen
2022-01-28 15:28 ` Christian Schoenebeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220128005611.87185-9-wwcohen@gmail.com \
--to=wwcohen@gmail.com \
--cc=groug@kaod.org \
--cc=hi@alyssa.is \
--cc=keno@juliacomputing.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu_oss@crudebyte.com \
--cc=reactorcontrol@icloud.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).