On Thu, May 23, 2024 at 04:55:18PM GMT, Stefano Garzarella wrote:
These defines are also useful for vhost-user-blk when it is compiled
in some POSIX systems that do not define them, so let's move them to
“qemu/osdep.h”.
Suggested-by: Philippe Mathieu-Daudé <phi...@linaro.org>
Signed-off-by: Stefano Garzarella <sgarz...@redhat.com>
---
include/qemu/osdep.h | 14 ++++++++++++++
block/file-posix.c | 14 --------------
2 files changed, 14 insertions(+), 14 deletions(-)
This seems to break the compilation on win64:
https://gitlab.com/sgarzarella/qemu/-/jobs/6923403322
In file included from ../util/osdep.c:24:
../util/osdep.c: In function 'qemu_open_internal':
../include/qemu/osdep.h:339:18: error: 'O_DSYNC' undeclared (first use in
this function)
339 | #define O_DIRECT O_DSYNC
| ^~~~~~~
../util/osdep.c:334:41: note: in expansion of macro 'O_DIRECT'
334 | if (errno == EINVAL && (flags & O_DIRECT)) {
| ^~~~~~~~
../include/qemu/osdep.h:339:18: note: each undeclared identifier is
reported only once for each function it appears in
339 | #define O_DIRECT O_DSYNC
| ^~~~~~~
../util/osdep.c:334:41: note: in expansion of macro 'O_DIRECT'
334 | if (errno == EINVAL && (flags & O_DIRECT)) {
| ^~~~~~~~
../util/osdep.c: In function 'qemu_open_old':
../include/qemu/osdep.h:339:18: error: 'O_DSYNC' undeclared (first use in
this function)
339 | #define O_DIRECT O_DSYNC
| ^~~~~~~
../util/osdep.c:385:50: note: in expansion of macro 'O_DIRECT'
385 | if (ret == -1 && errno == EINVAL && (flags & O_DIRECT)) {
|
Indeed file-posix.c was not compiled on windows. Oops, I didn't think of
that :-(
I'm thinking on putting a guard on CONFIG_POSIX, or just checking that
O_DSYNC is defined. Any suggestion?
Thanks,
Stefano
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index f61edcfdc2..e165b5cb1b 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -325,6 +325,20 @@ void QEMU_ERROR("code path is reachable")
#define ESHUTDOWN 4099
#endif
+/* OS X does not have O_DSYNC */
+#ifndef O_DSYNC
+#ifdef O_SYNC
+#define O_DSYNC O_SYNC
+#elif defined(O_FSYNC)
+#define O_DSYNC O_FSYNC
+#endif
+#endif
+
+/* Approximate O_DIRECT with O_DSYNC if O_DIRECT isn't available */
+#ifndef O_DIRECT
+#define O_DIRECT O_DSYNC
+#endif
+
#define RETRY_ON_EINTR(expr) \
(__extension__ \
({ typeof(expr) __result; \
diff --git a/block/file-posix.c b/block/file-posix.c
index 35684f7e21..7a196a2abf 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -110,20 +110,6 @@
#include <sys/diskslice.h>
#endif
-/* OS X does not have O_DSYNC */
-#ifndef O_DSYNC
-#ifdef O_SYNC
-#define O_DSYNC O_SYNC
-#elif defined(O_FSYNC)
-#define O_DSYNC O_FSYNC
-#endif
-#endif
-
-/* Approximate O_DIRECT with O_DSYNC if O_DIRECT isn't available */
-#ifndef O_DIRECT
-#define O_DIRECT O_DSYNC
-#endif
-
#define FTYPE_FILE 0
#define FTYPE_CD 1
--
2.45.1