All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/26] Misc cleanups
@ 2022-04-26  9:26 marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD marcandre.lureau
                   ` (26 more replies)
  0 siblings, 27 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Hi,

v2:
- add patches to replace pipe() with g_unix_open_pipe()
- add patch "Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()"
- add patches to cleanup qemu_*block() usage (see "util: rename qemu_*block()
  socket functions" commit message)
- fix lost braces during code move
- replace TRUE/FALSE with true/false
- add reviewed/ack-by tags

Marc-André Lureau (26):
  Use QEMU_SANITIZE_THREAD
  Use QEMU_SANITIZE_ADDRESS
  include: move qemu_*_exec_dir() to cutils
  util/win32: simplify qemu_get_local_state_dir()
  tests: move libqtest.h back under qtest/
  libqtest: split QMP part in libqmp
  tests: make libqmp buildable for win32
  Use g_unix_set_fd_nonblocking()
  block: move fcntl_setfl()
  Replace qemu_pipe() with g_unix_open_pipe()
  util: replace pipe()+cloexec with g_unix_open_pipe()
  qga: replace pipe() with g_unix_open_pipe(CLOEXEC)
  tests: replace pipe() with g_unix_open_pipe(CLOEXEC)
  os-posix: replace pipe()+cloexec with g_unix_open_pipe(CLOEXEC)
  virtiofsd: replace pipe() with g_unix_open_pipe(CLOEXEC)
  io: replace pipe() with g_unix_open_pipe(CLOEXEC)
  Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()
  io: make qio_channel_command_new_pid() static
  chardev: replace qemu_set_nonblock()
  io: replace qemu_set{_non}block()
  qga: replace qemu_set_nonblock()
  hw: replace qemu_set_nonblock()
  ui: replace qemu_set_nonblock()
  net: replace qemu_set_nonblock()
  tests: replace qemu_set_nonblock()
  util: rename qemu_*block() socket functions

 docs/devel/qtest.rst                          |   2 +-
 include/io/channel-command.h                  |  25 --
 include/qemu/atomic.h                         |   8 +-
 include/qemu/cutils.h                         |   7 +
 include/qemu/osdep.h                          |  12 -
 include/qemu/sockets.h                        |   6 +-
 include/sysemu/os-posix.h                     |   2 -
 subprojects/libvhost-user/include/compiler.h  |   1 +
 tests/qtest/acpi-utils.h                      |   2 +-
 tests/qtest/boot-sector.h                     |   2 +-
 tests/qtest/fuzz/fuzz.h                       |   2 +-
 tests/qtest/libqmp.h                          |  52 ++++
 tests/qtest/libqos/fw_cfg.h                   |   2 +-
 tests/qtest/libqos/i2c.h                      |   2 +-
 tests/qtest/libqos/libqos.h                   |   2 +-
 tests/qtest/libqos/malloc.h                   |   2 +-
 tests/qtest/libqos/pci.h                      |   2 +-
 tests/qtest/libqos/sdhci-cmd.h                |   2 +-
 tests/qtest/libqtest-single.h                 |   2 +-
 tests/qtest/{libqos => }/libqtest.h           |  29 +-
 tests/qtest/migration-helpers.h               |   2 +-
 tests/qtest/tpm-emu.h                         |   2 +-
 block/file-posix.c                            |  15 +
 chardev/char-fd.c                             |   4 +-
 chardev/char-pty.c                            |   5 +-
 chardev/char-serial.c                         |   5 +-
 chardev/char-socket.c                         |   2 +-
 chardev/char-stdio.c                          |   5 +-
 contrib/ivshmem-server/ivshmem-server.c       |   2 +-
 hw/hyperv/syndbg.c                            |   2 +-
 hw/input/virtio-input-host.c                  |   5 +-
 hw/misc/ivshmem.c                             |   2 +-
 hw/virtio/vhost-user.c                        |   2 +-
 hw/virtio/vhost-vsock.c                       |  11 +-
 io/channel-command.c                          |  46 +++-
 io/channel-file.c                             |  13 +-
 io/channel-socket.c                           |   6 +-
 net/l2tpv3.c                                  |   2 +-
 net/socket.c                                  |  10 +-
 net/tap-bsd.c                                 |   4 +-
 net/tap-linux.c                               |   2 +-
 net/tap-solaris.c                             |   2 +-
 net/tap.c                                     |  33 ++-
 os-posix.c                                    |   3 +-
 qemu-io.c                                     |   1 +
 qemu-nbd.c                                    |   5 +-
 qga/channel-posix.c                           |   2 +-
 qga/commands-posix.c                          |   8 +-
 storage-daemon/qemu-storage-daemon.c          |   1 +
 tests/qtest/ac97-test.c                       |   2 +-
 tests/qtest/ahci-test.c                       |   2 +-
 tests/qtest/am53c974-test.c                   |   2 +-
 tests/qtest/arm-cpu-features.c                |   2 +-
 tests/qtest/aspeed_hace-test.c                |   2 +-
 tests/qtest/boot-order-test.c                 |   2 +-
 tests/qtest/boot-sector.c                     |   2 +-
 tests/qtest/boot-serial-test.c                |   2 +-
 tests/qtest/cdrom-test.c                      |   2 +-
 tests/qtest/dbus-display-test.c               |   2 +-
 tests/qtest/dbus-vmstate-test.c               |   2 +-
 tests/qtest/device-introspect-test.c          |   2 +-
 tests/qtest/device-plug-test.c                |   2 +-
 tests/qtest/drive_del-test.c                  |   2 +-
 tests/qtest/ds1338-test.c                     |   2 +-
 tests/qtest/e1000-test.c                      |   2 +-
 tests/qtest/eepro100-test.c                   |   2 +-
 tests/qtest/endianness-test.c                 |   2 +-
 tests/qtest/erst-test.c                       |   2 +-
 tests/qtest/es1370-test.c                     |   2 +-
 tests/qtest/fdc-test.c                        |   2 +-
 tests/qtest/fuzz-e1000e-test.c                |   2 +-
 tests/qtest/fuzz-lsi53c895a-test.c            |   2 +-
 tests/qtest/fuzz-megasas-test.c               |   2 +-
 tests/qtest/fuzz-sb16-test.c                  |   2 +-
 tests/qtest/fuzz-sdcard-test.c                |   2 +-
 tests/qtest/fuzz-virtio-scsi-test.c           |   2 +-
 tests/qtest/fuzz-xlnx-dp-test.c               |   2 +-
 tests/qtest/fuzz/fuzz.c                       |   3 +-
 tests/qtest/fuzz/generic_fuzz.c               |   2 +-
 tests/qtest/fuzz/i440fx_fuzz.c                |   2 +-
 tests/qtest/fuzz/qos_fuzz.c                   |   2 +-
 tests/qtest/fuzz/virtio_blk_fuzz.c            |   2 +-
 tests/qtest/fuzz/virtio_net_fuzz.c            |   4 +-
 tests/qtest/fuzz/virtio_scsi_fuzz.c           |   2 +-
 tests/qtest/fw_cfg-test.c                     |   2 +-
 tests/qtest/hd-geo-test.c                     |   2 +-
 tests/qtest/hexloader-test.c                  |   2 +-
 tests/qtest/ide-test.c                        |   2 +-
 tests/qtest/ipoctal232-test.c                 |   2 +-
 tests/qtest/ivshmem-test.c                    |   7 +-
 tests/qtest/libqmp.c                          | 258 ++++++++++++++++++
 .../libqos/aarch64-xlnx-zcu102-machine.c      |   2 +-
 tests/qtest/libqos/ahci.c                     |   2 +-
 tests/qtest/libqos/arm-imx25-pdk-machine.c    |   2 +-
 tests/qtest/libqos/arm-n800-machine.c         |   2 +-
 tests/qtest/libqos/arm-raspi2-machine.c       |   2 +-
 tests/qtest/libqos/arm-sabrelite-machine.c    |   2 +-
 tests/qtest/libqos/arm-smdkc210-machine.c     |   2 +-
 tests/qtest/libqos/arm-virt-machine.c         |   2 +-
 .../qtest/libqos/arm-xilinx-zynq-a9-machine.c |   2 +-
 tests/qtest/libqos/e1000e.c                   |   2 +-
 tests/qtest/libqos/fw_cfg.c                   |   2 +-
 tests/qtest/libqos/i2c-imx.c                  |   2 +-
 tests/qtest/libqos/i2c-omap.c                 |   2 +-
 tests/qtest/libqos/i2c.c                      |   2 +-
 tests/qtest/libqos/libqos.c                   |   2 +-
 tests/qtest/libqos/pci-pc.c                   |   2 +-
 tests/qtest/libqos/pci-spapr.c                |   2 +-
 tests/qtest/libqos/ppc64_pseries-machine.c    |   2 +-
 tests/qtest/libqos/qgraph.c                   |   2 +-
 tests/qtest/libqos/qos_external.c             |   2 +-
 tests/qtest/libqos/rtas.c                     |   2 +-
 tests/qtest/libqos/sdhci-cmd.c                |   2 +-
 tests/qtest/libqos/sdhci.c                    |   2 +-
 tests/qtest/libqos/tpci200.c                  |   2 +-
 tests/qtest/libqos/usb.c                      |   2 +-
 tests/qtest/libqos/vhost-user-blk.c           |   2 +-
 tests/qtest/libqos/virtio-9p.c                |   2 +-
 tests/qtest/libqos/virtio-balloon.c           |   2 +-
 tests/qtest/libqos/virtio-blk.c               |   2 +-
 tests/qtest/libqos/virtio-iommu.c             |   2 +-
 tests/qtest/libqos/virtio-mmio.c              |   2 +-
 tests/qtest/libqos/virtio-net.c               |   2 +-
 tests/qtest/libqos/virtio-pci.c               |   2 +-
 tests/qtest/libqos/virtio-rng.c               |   2 +-
 tests/qtest/libqos/virtio-scsi.c              |   2 +-
 tests/qtest/libqos/virtio-serial.c            |   2 +-
 tests/qtest/libqos/virtio.c                   |   2 +-
 tests/qtest/libqos/x86_64_pc-machine.c        |   2 +-
 tests/qtest/libqtest.c                        | 207 +-------------
 tests/qtest/lpc-ich9-test.c                   |   2 +-
 tests/qtest/m48t59-test.c                     |   2 +-
 tests/qtest/machine-none-test.c               |   2 +-
 tests/qtest/megasas-test.c                    |   2 +-
 tests/qtest/microbit-test.c                   |   2 +-
 tests/qtest/migration-test.c                  |   2 +-
 tests/qtest/modules-test.c                    |   2 +-
 tests/qtest/ne2000-test.c                     |   2 +-
 tests/qtest/npcm7xx_adc-test.c                |   2 +-
 tests/qtest/npcm7xx_pwm-test.c                |   2 +-
 tests/qtest/npcm7xx_sdhci-test.c              |   2 +-
 tests/qtest/npcm7xx_smbus-test.c              |   2 +-
 tests/qtest/npcm7xx_watchdog_timer-test.c     |   2 +-
 tests/qtest/numa-test.c                       |   2 +-
 tests/qtest/nvme-test.c                       |   2 +-
 tests/qtest/pca9552-test.c                    |   2 +-
 tests/qtest/pci-test.c                        |   2 +-
 tests/qtest/pcnet-test.c                      |   2 +-
 tests/qtest/pflash-cfi02-test.c               |   2 +-
 tests/qtest/pnv-xscom-test.c                  |   2 +-
 tests/qtest/prom-env-test.c                   |   2 +-
 tests/qtest/pvpanic-pci-test.c                |   2 +-
 tests/qtest/pvpanic-test.c                    |   2 +-
 tests/qtest/pxe-test.c                        |   2 +-
 tests/qtest/q35-test.c                        |   2 +-
 tests/qtest/qmp-cmd-test.c                    |   2 +-
 tests/qtest/qmp-test.c                        |   2 +-
 tests/qtest/qom-test.c                        |   2 +-
 tests/qtest/rtas-test.c                       |   2 +-
 tests/qtest/sdhci-test.c                      |   2 +-
 tests/qtest/spapr-phb-test.c                  |   2 +-
 tests/qtest/tco-test.c                        |   2 +-
 tests/qtest/test-filter-mirror.c              |   2 +-
 tests/qtest/test-filter-redirector.c          |   2 +-
 tests/qtest/test-hmp.c                        |   2 +-
 tests/qtest/tpm-crb-swtpm-test.c              |   2 +-
 tests/qtest/tpm-tis-device-swtpm-test.c       |   2 +-
 tests/qtest/tpm-tis-swtpm-test.c              |   2 +-
 tests/qtest/tpm-util.c                        |   2 +-
 tests/qtest/tulip-test.c                      |   2 +-
 tests/qtest/vhost-user-test.c                 |   4 +-
 tests/qtest/virtio-net-failover.c             |   2 +-
 tests/qtest/virtio-rng-test.c                 |   2 +-
 tests/qtest/virtio-test.c                     |   2 +-
 tests/qtest/vmgenid-test.c                    |   2 +-
 tests/qtest/vmxnet3-test.c                    |   2 +-
 tests/qtest/wdt_ib700-test.c                  |   2 +-
 tests/qtest/xlnx-can-test.c                   |   2 +-
 tests/unit/socket-helpers.c                   |   2 +-
 tests/unit/test-crypto-tlssession.c           |   8 +-
 tests/unit/test-io-channel-file.c             |   2 +-
 tests/unit/test-iov.c                         |   4 +-
 tests/unit/test-qga.c                         |   2 +-
 tools/virtiofsd/helper.c                      |   2 +-
 ui/input-linux.c                              |   5 +-
 util/compatfd.c                               |   5 +-
 util/coroutine-ucontext.c                     |   2 +-
 util/cutils.c                                 | 108 ++++++++
 util/event_notifier-posix.c                   |   8 +-
 util/main-loop.c                              |   2 +-
 util/oslib-posix.c                            | 142 +---------
 util/oslib-win32.c                            |  61 +----
 util/vhost-user-server.c                      |   4 +-
 scripts/oss-fuzz/output_reproducer.py         |   2 +-
 tests/qtest/libqos/meson.build                |   5 +-
 tests/unit/meson.build                        |   2 +-
 196 files changed, 758 insertions(+), 703 deletions(-)
 create mode 120000 subprojects/libvhost-user/include/compiler.h
 create mode 100644 tests/qtest/libqmp.h
 rename tests/qtest/{libqos => }/libqtest.h (95%)
 create mode 100644 tests/qtest/libqmp.c

-- 
2.36.0



^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26 20:43   ` Richard Henderson
  2022-04-26  9:26 ` [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
                   ` (25 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/qemu/atomic.h                        | 8 +++++---
 subprojects/libvhost-user/include/compiler.h | 1 +
 2 files changed, 6 insertions(+), 3 deletions(-)
 create mode 120000 subprojects/libvhost-user/include/compiler.h

diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h
index 112a29910bea..7e8fc8e7cde2 100644
--- a/include/qemu/atomic.h
+++ b/include/qemu/atomic.h
@@ -15,6 +15,8 @@
 #ifndef QEMU_ATOMIC_H
 #define QEMU_ATOMIC_H
 
+#include "compiler.h"
+
 /* Compiler barrier */
 #define barrier()   ({ asm volatile("" ::: "memory"); (void)0; })
 
@@ -81,7 +83,7 @@
  * no processors except Alpha need a barrier here.  Leave it in if
  * using Thread Sanitizer to avoid warnings, otherwise optimize it away.
  */
-#if defined(__SANITIZE_THREAD__)
+#ifdef QEMU_SANITIZE_THREAD
 #define smp_read_barrier_depends()   ({ barrier(); __atomic_thread_fence(__ATOMIC_CONSUME); })
 #elif defined(__alpha__)
 #define smp_read_barrier_depends()   asm volatile("mb":::"memory")
@@ -146,7 +148,7 @@
 /* See above: most compilers currently treat consume and acquire the
  * same, but this slows down qatomic_rcu_read unnecessarily.
  */
-#ifdef __SANITIZE_THREAD__
+#ifdef QEMU_SANITIZE_THREAD
 #define qatomic_rcu_read__nocheck(ptr, valptr)           \
     __atomic_load(ptr, valptr, __ATOMIC_CONSUME);
 #else
@@ -254,7 +256,7 @@
 #define qatomic_mb_read(ptr)                             \
     qatomic_load_acquire(ptr)
 
-#if !defined(__SANITIZE_THREAD__) && \
+#if !defined(QEMU_SANITIZE_THREAD) && \
     (defined(__i386__) || defined(__x86_64__) || defined(__s390x__))
 /* This is more efficient than a store plus a fence.  */
 # define qatomic_mb_set(ptr, i)  ((void)qatomic_xchg(ptr, i))
diff --git a/subprojects/libvhost-user/include/compiler.h b/subprojects/libvhost-user/include/compiler.h
new file mode 120000
index 000000000000..de7b70697cd2
--- /dev/null
+++ b/subprojects/libvhost-user/include/compiler.h
@@ -0,0 +1 @@
+../../../include/qemu/compiler.h
\ No newline at end of file
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26 20:46   ` Richard Henderson
  2022-04-27  9:36   ` Thomas Huth
  2022-04-26  9:26 ` [PATCH v2 03/26] include: move qemu_*_exec_dir() to cutils marcandre.lureau
                   ` (24 subsequent siblings)
  26 siblings, 2 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Kevin Wolf, Thomas Huth, Daniel P. Berrangé,
	open list:Floppy, Stefan Hajnoczi, Paolo Bonzini,
	Marc-André Lureau, John Snow

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/fdc-test.c    | 2 +-
 util/coroutine-ucontext.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/qtest/fdc-test.c b/tests/qtest/fdc-test.c
index 4aa72f36431f..0b3c2c0d523f 100644
--- a/tests/qtest/fdc-test.c
+++ b/tests/qtest/fdc-test.c
@@ -550,7 +550,7 @@ static void fuzz_registers(void)
 
 static bool qtest_check_clang_sanitizer(void)
 {
-#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
+#ifdef QEMU_SANITIZE_ADDRESS
     return true;
 #else
     g_test_skip("QEMU not configured using --enable-sanitizers");
diff --git a/util/coroutine-ucontext.c b/util/coroutine-ucontext.c
index 904b375192ca..ed368e1a3ec3 100644
--- a/util/coroutine-ucontext.c
+++ b/util/coroutine-ucontext.c
@@ -30,7 +30,7 @@
 #include <valgrind/valgrind.h>
 #endif
 
-#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
+#ifdef QEMU_SANITIZE_ADDRESS
 #ifdef CONFIG_ASAN_IFACE_FIBER
 #define CONFIG_ASAN 1
 #include <sanitizer/asan_interface.h>
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 03/26] include: move qemu_*_exec_dir() to cutils
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 04/26] util/win32: simplify qemu_get_local_state_dir() marcandre.lureau
                   ` (23 subsequent siblings)
  26 siblings, 0 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Laurent Vivier, Thomas Huth, Daniel P. Berrangé,
	open list:Block layer core, Darren Kenny, Stefan Weil,
	Bandan Das, Qiuhao Li, Alexander Bulekov, Hanna Reitz,
	Stefan Hajnoczi, Paolo Bonzini, Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The function is required by get_relocated_path() (already in cutils),
and used by qemu-ga and may be generally useful.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qemu/cutils.h                |   7 ++
 include/qemu/osdep.h                 |   8 --
 qemu-io.c                            |   1 +
 storage-daemon/qemu-storage-daemon.c |   1 +
 tests/qtest/fuzz/fuzz.c              |   1 +
 util/cutils.c                        | 108 +++++++++++++++++++++++++++
 util/oslib-posix.c                   |  81 --------------------
 util/oslib-win32.c                   |  36 ---------
 8 files changed, 118 insertions(+), 125 deletions(-)

diff --git a/include/qemu/cutils.h b/include/qemu/cutils.h
index 5c6572d44422..40e10e19a7ed 100644
--- a/include/qemu/cutils.h
+++ b/include/qemu/cutils.h
@@ -193,6 +193,13 @@ int uleb128_decode_small(const uint8_t *in, uint32_t *n);
  */
 int qemu_pstrcmp0(const char **str1, const char **str2);
 
+/* Find program directory, and save it for later usage with
+ * qemu_get_exec_dir().
+ * Try OS specific API first, if not working, parse from argv0. */
+void qemu_init_exec_dir(const char *argv0);
+
+/* Get the saved exec dir.  */
+const char *qemu_get_exec_dir(void);
 
 /**
  * get_relocated_path:
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index baaa23c1568d..220b44f710e5 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -564,14 +564,6 @@ bool fips_get_state(void);
  */
 char *qemu_get_local_state_dir(void);
 
-/* Find program directory, and save it for later usage with
- * qemu_get_exec_dir().
- * Try OS specific API first, if not working, parse from argv0. */
-void qemu_init_exec_dir(const char *argv0);
-
-/* Get the saved exec dir.  */
-const char *qemu_get_exec_dir(void);
-
 /**
  * qemu_getauxval:
  * @type: the auxiliary vector key to lookup
diff --git a/qemu-io.c b/qemu-io.c
index d70d3dd4fde5..2bd7bfb65073 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -16,6 +16,7 @@
 #endif
 
 #include "qemu/help-texts.h"
+#include "qemu/cutils.h"
 #include "qapi/error.h"
 #include "qemu-io.h"
 #include "qemu/error-report.h"
diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c
index 9b8b17f52e48..c104817cdddc 100644
--- a/storage-daemon/qemu-storage-daemon.c
+++ b/storage-daemon/qemu-storage-daemon.c
@@ -44,6 +44,7 @@
 
 #include "qemu/help-texts.h"
 #include "qemu-version.h"
+#include "qemu/cutils.h"
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
 #include "qemu/help_option.h"
diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c
index 5f77c849837f..d3afd294db24 100644
--- a/tests/qtest/fuzz/fuzz.c
+++ b/tests/qtest/fuzz/fuzz.c
@@ -15,6 +15,7 @@
 
 #include <wordexp.h>
 
+#include "qemu/cutils.h"
 #include "qemu/datadir.h"
 #include "sysemu/sysemu.h"
 #include "sysemu/qtest.h"
diff --git a/util/cutils.c b/util/cutils.c
index b2777210e7da..6cc7cc8cde99 100644
--- a/util/cutils.c
+++ b/util/cutils.c
@@ -931,6 +931,114 @@ static inline const char *next_component(const char *dir, int *p_len)
     return dir;
 }
 
+static const char *exec_dir;
+
+void qemu_init_exec_dir(const char *argv0)
+{
+#ifdef G_OS_WIN32
+    char *p;
+    char buf[MAX_PATH];
+    DWORD len;
+
+    if (exec_dir) {
+        return;
+    }
+
+    len = GetModuleFileName(NULL, buf, sizeof(buf) - 1);
+    if (len == 0) {
+        return;
+    }
+
+    buf[len] = 0;
+    p = buf + len - 1;
+    while (p != buf && *p != '\\') {
+        p--;
+    }
+    *p = 0;
+    if (access(buf, R_OK) == 0) {
+        exec_dir = g_strdup(buf);
+    } else {
+        exec_dir = CONFIG_BINDIR;
+    }
+#else
+    char *p = NULL;
+    char buf[PATH_MAX];
+
+    if (exec_dir) {
+        return;
+    }
+
+#if defined(__linux__)
+    {
+        int len;
+        len = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
+        if (len > 0) {
+            buf[len] = 0;
+            p = buf;
+        }
+    }
+#elif defined(__FreeBSD__) \
+      || (defined(__NetBSD__) && defined(KERN_PROC_PATHNAME))
+    {
+#if defined(__FreeBSD__)
+        static int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
+#else
+        static int mib[4] = {CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME};
+#endif
+        size_t len = sizeof(buf) - 1;
+
+        *buf = '\0';
+        if (!sysctl(mib, ARRAY_SIZE(mib), buf, &len, NULL, 0) &&
+            *buf) {
+            buf[sizeof(buf) - 1] = '\0';
+            p = buf;
+        }
+    }
+#elif defined(__APPLE__)
+    {
+        char fpath[PATH_MAX];
+        uint32_t len = sizeof(fpath);
+        if (_NSGetExecutablePath(fpath, &len) == 0) {
+            p = realpath(fpath, buf);
+            if (!p) {
+                return;
+            }
+        }
+    }
+#elif defined(__HAIKU__)
+    {
+        image_info ii;
+        int32_t c = 0;
+
+        *buf = '\0';
+        while (get_next_image_info(0, &c, &ii) == B_OK) {
+            if (ii.type == B_APP_IMAGE) {
+                strncpy(buf, ii.name, sizeof(buf));
+                buf[sizeof(buf) - 1] = 0;
+                p = buf;
+                break;
+            }
+        }
+    }
+#endif
+    /* If we don't have any way of figuring out the actual executable
+       location then try argv[0].  */
+    if (!p && argv0) {
+        p = realpath(argv0, buf);
+    }
+    if (p) {
+        exec_dir = g_path_get_dirname(p);
+    } else {
+        exec_dir = CONFIG_BINDIR;
+    }
+#endif
+}
+
+const char *qemu_get_exec_dir(void)
+{
+    return exec_dir;
+}
+
 char *get_relocated_path(const char *dir)
 {
     size_t prefix_len = strlen(CONFIG_PREFIX);
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index b8bf7d4070ce..03d97741562c 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -317,87 +317,6 @@ void qemu_set_tty_echo(int fd, bool echo)
     tcsetattr(fd, TCSANOW, &tty);
 }
 
-static const char *exec_dir;
-
-void qemu_init_exec_dir(const char *argv0)
-{
-    char *p = NULL;
-    char buf[PATH_MAX];
-
-    if (exec_dir) {
-        return;
-    }
-
-#if defined(__linux__)
-    {
-        int len;
-        len = readlink("/proc/self/exe", buf, sizeof(buf) - 1);
-        if (len > 0) {
-            buf[len] = 0;
-            p = buf;
-        }
-    }
-#elif defined(__FreeBSD__) \
-      || (defined(__NetBSD__) && defined(KERN_PROC_PATHNAME))
-    {
-#if defined(__FreeBSD__)
-        static int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
-#else
-        static int mib[4] = {CTL_KERN, KERN_PROC_ARGS, -1, KERN_PROC_PATHNAME};
-#endif
-        size_t len = sizeof(buf) - 1;
-
-        *buf = '\0';
-        if (!sysctl(mib, ARRAY_SIZE(mib), buf, &len, NULL, 0) &&
-            *buf) {
-            buf[sizeof(buf) - 1] = '\0';
-            p = buf;
-        }
-    }
-#elif defined(__APPLE__)
-    {
-        char fpath[PATH_MAX];
-        uint32_t len = sizeof(fpath);
-        if (_NSGetExecutablePath(fpath, &len) == 0) {
-            p = realpath(fpath, buf);
-            if (!p) {
-                return;
-            }
-        }
-    }
-#elif defined(__HAIKU__)
-    {
-        image_info ii;
-        int32_t c = 0;
-
-        *buf = '\0';
-        while (get_next_image_info(0, &c, &ii) == B_OK) {
-            if (ii.type == B_APP_IMAGE) {
-                strncpy(buf, ii.name, sizeof(buf));
-                buf[sizeof(buf) - 1] = 0;
-                p = buf;
-                break;
-            }
-        }
-    }
-#endif
-    /* If we don't have any way of figuring out the actual executable
-       location then try argv[0].  */
-    if (!p && argv0) {
-        p = realpath(argv0, buf);
-    }
-    if (p) {
-        exec_dir = g_path_get_dirname(p);
-    } else {
-        exec_dir = CONFIG_BINDIR;
-    }
-}
-
-const char *qemu_get_exec_dir(void)
-{
-    return exec_dir;
-}
-
 #ifdef CONFIG_LINUX
 static void sigbus_handler(int signal, siginfo_t *siginfo, void *ctx)
 #else /* CONFIG_LINUX */
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 9c1e8121fd6d..9483c4c1d5de 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -269,42 +269,6 @@ void qemu_set_tty_echo(int fd, bool echo)
     }
 }
 
-static const char *exec_dir;
-
-void qemu_init_exec_dir(const char *argv0)
-{
-
-    char *p;
-    char buf[MAX_PATH];
-    DWORD len;
-
-    if (exec_dir) {
-        return;
-    }
-
-    len = GetModuleFileName(NULL, buf, sizeof(buf) - 1);
-    if (len == 0) {
-        return;
-    }
-
-    buf[len] = 0;
-    p = buf + len - 1;
-    while (p != buf && *p != '\\') {
-        p--;
-    }
-    *p = 0;
-    if (access(buf, R_OK) == 0) {
-        exec_dir = g_strdup(buf);
-    } else {
-        exec_dir = CONFIG_BINDIR;
-    }
-}
-
-const char *qemu_get_exec_dir(void)
-{
-    return exec_dir;
-}
-
 int getpagesize(void)
 {
     SYSTEM_INFO system_info;
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 04/26] util/win32: simplify qemu_get_local_state_dir()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (2 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 03/26] include: move qemu_*_exec_dir() to cutils marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 05/26] tests: move libqtest.h back under qtest/ marcandre.lureau
                   ` (22 subsequent siblings)
  26 siblings, 0 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Stefan Weil

From: Marc-André Lureau <marcandre.lureau@redhat.com>

SHGetFolderPath() is a deprecated API:
https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpatha

It is a wrapper for SHGetKnownFolderPath() and CSIDL_COMMON_PATH is
mapped to FOLDERID_ProgramData:
https://docs.microsoft.com/en-us/windows/win32/shell/csidl

g_get_system_data_dirs() is a suitable replacement, as it will have
FOLDERID_ProgramData in the returned list. However, it follows the XDG
Base Directory Specification, if `XDG_DATA_DIRS` is defined, it will be
returned instead.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 util/oslib-win32.c | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 9483c4c1d5de..8f8523693c02 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -40,9 +40,6 @@
 #include "qemu/error-report.h"
 #include <malloc.h>
 
-/* this must come after including "trace.h" */
-#include <shlobj.h>
-
 static int get_allocation_granularity(void)
 {
     SYSTEM_INFO system_info;
@@ -237,17 +234,11 @@ int qemu_get_thread_id(void)
 char *
 qemu_get_local_state_dir(void)
 {
-    HRESULT result;
-    char base_path[MAX_PATH+1] = "";
+    const char * const *data_dirs = g_get_system_data_dirs();
 
-    result = SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL,
-                             /* SHGFP_TYPE_CURRENT */ 0, base_path);
-    if (result != S_OK) {
-        /* misconfigured environment */
-        g_critical("CSIDL_COMMON_APPDATA unavailable: %ld", (long)result);
-        abort();
-    }
-    return g_strdup(base_path);
+    g_assert(data_dirs && data_dirs[0]);
+
+    return g_strdup(data_dirs[0]);
 }
 
 void qemu_set_tty_echo(int fd, bool echo)
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 05/26] tests: move libqtest.h back under qtest/
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (3 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 04/26] util/win32: simplify qemu_get_local_state_dir() marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26 10:30   ` Stefan Berger
  2022-05-30 14:41   ` Juan Quintela
  2022-04-26  9:26 ` [PATCH v2 06/26] libqtest: split QMP part in libqmp marcandre.lureau
                   ` (21 subsequent siblings)
  26 siblings, 2 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Fam Zheng, Peter Maydell, Dmitry Fleytman, Michael S. Tsirkin,
	Bin Meng, Li Zhijian, Havard Skinnemoen, Klaus Jensen, Su Hang,
	Gerd Hoffmann, Zhang Chen, Ani Sinha, Hannes Reinecke,
	Vikram Garhwal, open list:IDE, Juan Quintela,
	Daniel Henrique Barboza, Qiuhao Li, Joel Stanley,
	Marc-André Lureau, Laurent Vivier, Thomas Huth, Amit Shah,
	Michael Roth, Greg Kurz, Dr. David Alan Gilbert, Darren Kenny,
	Bandan Das, open list:ARM TCG CPUs, Cédric Le Goater,
	Stefan Hajnoczi, Igor Mammedov, Keith Busch, John Snow,
	David Gibson, Francisco Iglesias, Daniel P. Berrangé,
	Alexander Bulekov, Andrew Jeffery, Markus Armbruster,
	Stefan Berger, Philippe Mathieu-Daudé,
	Coiby Xu, Tyrone Ting, open list:sPAPR pseries, Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Since commit a2ce7dbd917 ("meson: convert tests/qtest to meson"),
libqtest.h is under libqos/ directory, while libqtest.c is still in
qtest/. Move back to its original location to avoid mixing with libqos/.

Suggested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 docs/devel/qtest.rst                             | 2 +-
 tests/qtest/acpi-utils.h                         | 2 +-
 tests/qtest/boot-sector.h                        | 2 +-
 tests/qtest/fuzz/fuzz.h                          | 2 +-
 tests/qtest/libqos/fw_cfg.h                      | 2 +-
 tests/qtest/libqos/i2c.h                         | 2 +-
 tests/qtest/libqos/libqos.h                      | 2 +-
 tests/qtest/libqos/malloc.h                      | 2 +-
 tests/qtest/libqos/pci.h                         | 2 +-
 tests/qtest/libqos/sdhci-cmd.h                   | 2 +-
 tests/qtest/libqtest-single.h                    | 2 +-
 tests/qtest/{libqos => }/libqtest.h              | 0
 tests/qtest/migration-helpers.h                  | 2 +-
 tests/qtest/tpm-emu.h                            | 2 +-
 tests/qtest/ac97-test.c                          | 2 +-
 tests/qtest/ahci-test.c                          | 2 +-
 tests/qtest/am53c974-test.c                      | 2 +-
 tests/qtest/arm-cpu-features.c                   | 2 +-
 tests/qtest/aspeed_hace-test.c                   | 2 +-
 tests/qtest/boot-order-test.c                    | 2 +-
 tests/qtest/boot-sector.c                        | 2 +-
 tests/qtest/boot-serial-test.c                   | 2 +-
 tests/qtest/cdrom-test.c                         | 2 +-
 tests/qtest/dbus-display-test.c                  | 2 +-
 tests/qtest/dbus-vmstate-test.c                  | 2 +-
 tests/qtest/device-introspect-test.c             | 2 +-
 tests/qtest/device-plug-test.c                   | 2 +-
 tests/qtest/drive_del-test.c                     | 2 +-
 tests/qtest/ds1338-test.c                        | 2 +-
 tests/qtest/e1000-test.c                         | 2 +-
 tests/qtest/eepro100-test.c                      | 2 +-
 tests/qtest/endianness-test.c                    | 2 +-
 tests/qtest/erst-test.c                          | 2 +-
 tests/qtest/es1370-test.c                        | 2 +-
 tests/qtest/fuzz-e1000e-test.c                   | 2 +-
 tests/qtest/fuzz-lsi53c895a-test.c               | 2 +-
 tests/qtest/fuzz-megasas-test.c                  | 2 +-
 tests/qtest/fuzz-sb16-test.c                     | 2 +-
 tests/qtest/fuzz-sdcard-test.c                   | 2 +-
 tests/qtest/fuzz-virtio-scsi-test.c              | 2 +-
 tests/qtest/fuzz-xlnx-dp-test.c                  | 2 +-
 tests/qtest/fuzz/fuzz.c                          | 2 +-
 tests/qtest/fuzz/generic_fuzz.c                  | 2 +-
 tests/qtest/fuzz/i440fx_fuzz.c                   | 2 +-
 tests/qtest/fuzz/qos_fuzz.c                      | 2 +-
 tests/qtest/fuzz/virtio_blk_fuzz.c               | 2 +-
 tests/qtest/fuzz/virtio_net_fuzz.c               | 2 +-
 tests/qtest/fuzz/virtio_scsi_fuzz.c              | 2 +-
 tests/qtest/fw_cfg-test.c                        | 2 +-
 tests/qtest/hd-geo-test.c                        | 2 +-
 tests/qtest/hexloader-test.c                     | 2 +-
 tests/qtest/ide-test.c                           | 2 +-
 tests/qtest/ipoctal232-test.c                    | 2 +-
 tests/qtest/ivshmem-test.c                       | 2 +-
 tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c | 2 +-
 tests/qtest/libqos/ahci.c                        | 2 +-
 tests/qtest/libqos/arm-imx25-pdk-machine.c       | 2 +-
 tests/qtest/libqos/arm-n800-machine.c            | 2 +-
 tests/qtest/libqos/arm-raspi2-machine.c          | 2 +-
 tests/qtest/libqos/arm-sabrelite-machine.c       | 2 +-
 tests/qtest/libqos/arm-smdkc210-machine.c        | 2 +-
 tests/qtest/libqos/arm-virt-machine.c            | 2 +-
 tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c  | 2 +-
 tests/qtest/libqos/e1000e.c                      | 2 +-
 tests/qtest/libqos/fw_cfg.c                      | 2 +-
 tests/qtest/libqos/i2c-imx.c                     | 2 +-
 tests/qtest/libqos/i2c-omap.c                    | 2 +-
 tests/qtest/libqos/i2c.c                         | 2 +-
 tests/qtest/libqos/libqos.c                      | 2 +-
 tests/qtest/libqos/pci-pc.c                      | 2 +-
 tests/qtest/libqos/pci-spapr.c                   | 2 +-
 tests/qtest/libqos/ppc64_pseries-machine.c       | 2 +-
 tests/qtest/libqos/qgraph.c                      | 2 +-
 tests/qtest/libqos/qos_external.c                | 2 +-
 tests/qtest/libqos/rtas.c                        | 2 +-
 tests/qtest/libqos/sdhci-cmd.c                   | 2 +-
 tests/qtest/libqos/sdhci.c                       | 2 +-
 tests/qtest/libqos/tpci200.c                     | 2 +-
 tests/qtest/libqos/usb.c                         | 2 +-
 tests/qtest/libqos/vhost-user-blk.c              | 2 +-
 tests/qtest/libqos/virtio-9p.c                   | 2 +-
 tests/qtest/libqos/virtio-balloon.c              | 2 +-
 tests/qtest/libqos/virtio-blk.c                  | 2 +-
 tests/qtest/libqos/virtio-iommu.c                | 2 +-
 tests/qtest/libqos/virtio-mmio.c                 | 2 +-
 tests/qtest/libqos/virtio-net.c                  | 2 +-
 tests/qtest/libqos/virtio-pci.c                  | 2 +-
 tests/qtest/libqos/virtio-rng.c                  | 2 +-
 tests/qtest/libqos/virtio-scsi.c                 | 2 +-
 tests/qtest/libqos/virtio-serial.c               | 2 +-
 tests/qtest/libqos/virtio.c                      | 2 +-
 tests/qtest/libqos/x86_64_pc-machine.c           | 2 +-
 tests/qtest/libqtest.c                           | 2 +-
 tests/qtest/lpc-ich9-test.c                      | 2 +-
 tests/qtest/m48t59-test.c                        | 2 +-
 tests/qtest/machine-none-test.c                  | 2 +-
 tests/qtest/megasas-test.c                       | 2 +-
 tests/qtest/microbit-test.c                      | 2 +-
 tests/qtest/migration-test.c                     | 2 +-
 tests/qtest/modules-test.c                       | 2 +-
 tests/qtest/ne2000-test.c                        | 2 +-
 tests/qtest/npcm7xx_adc-test.c                   | 2 +-
 tests/qtest/npcm7xx_pwm-test.c                   | 2 +-
 tests/qtest/npcm7xx_sdhci-test.c                 | 2 +-
 tests/qtest/npcm7xx_smbus-test.c                 | 2 +-
 tests/qtest/npcm7xx_watchdog_timer-test.c        | 2 +-
 tests/qtest/numa-test.c                          | 2 +-
 tests/qtest/nvme-test.c                          | 2 +-
 tests/qtest/pca9552-test.c                       | 2 +-
 tests/qtest/pci-test.c                           | 2 +-
 tests/qtest/pcnet-test.c                         | 2 +-
 tests/qtest/pflash-cfi02-test.c                  | 2 +-
 tests/qtest/pnv-xscom-test.c                     | 2 +-
 tests/qtest/prom-env-test.c                      | 2 +-
 tests/qtest/pvpanic-pci-test.c                   | 2 +-
 tests/qtest/pvpanic-test.c                       | 2 +-
 tests/qtest/pxe-test.c                           | 2 +-
 tests/qtest/q35-test.c                           | 2 +-
 tests/qtest/qmp-cmd-test.c                       | 2 +-
 tests/qtest/qmp-test.c                           | 2 +-
 tests/qtest/qom-test.c                           | 2 +-
 tests/qtest/rtas-test.c                          | 2 +-
 tests/qtest/sdhci-test.c                         | 2 +-
 tests/qtest/spapr-phb-test.c                     | 2 +-
 tests/qtest/tco-test.c                           | 2 +-
 tests/qtest/test-filter-mirror.c                 | 2 +-
 tests/qtest/test-filter-redirector.c             | 2 +-
 tests/qtest/test-hmp.c                           | 2 +-
 tests/qtest/tpm-crb-swtpm-test.c                 | 2 +-
 tests/qtest/tpm-tis-device-swtpm-test.c          | 2 +-
 tests/qtest/tpm-tis-swtpm-test.c                 | 2 +-
 tests/qtest/tpm-util.c                           | 2 +-
 tests/qtest/tulip-test.c                         | 2 +-
 tests/qtest/virtio-net-failover.c                | 2 +-
 tests/qtest/virtio-rng-test.c                    | 2 +-
 tests/qtest/virtio-test.c                        | 2 +-
 tests/qtest/vmgenid-test.c                       | 2 +-
 tests/qtest/vmxnet3-test.c                       | 2 +-
 tests/qtest/wdt_ib700-test.c                     | 2 +-
 tests/qtest/xlnx-can-test.c                      | 2 +-
 tests/unit/test-qga.c                            | 2 +-
 scripts/oss-fuzz/output_reproducer.py            | 2 +-
 142 files changed, 141 insertions(+), 141 deletions(-)
 rename tests/qtest/{libqos => }/libqtest.h (100%)

diff --git a/docs/devel/qtest.rst b/docs/devel/qtest.rst
index add293d39700..0455aa06ab28 100644
--- a/docs/devel/qtest.rst
+++ b/docs/devel/qtest.rst
@@ -88,4 +88,4 @@ QTest Protocol
 libqtest API reference
 ----------------------
 
-.. kernel-doc:: tests/qtest/libqos/libqtest.h
+.. kernel-doc:: tests/qtest/libqtest.h
diff --git a/tests/qtest/acpi-utils.h b/tests/qtest/acpi-utils.h
index 261784d25189..0c8678068931 100644
--- a/tests/qtest/acpi-utils.h
+++ b/tests/qtest/acpi-utils.h
@@ -13,7 +13,7 @@
 #ifndef TEST_ACPI_UTILS_H
 #define TEST_ACPI_UTILS_H
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* DSDT and SSDTs format */
 typedef struct {
diff --git a/tests/qtest/boot-sector.h b/tests/qtest/boot-sector.h
index b339fdee4c84..6ee6bb4d97f4 100644
--- a/tests/qtest/boot-sector.h
+++ b/tests/qtest/boot-sector.h
@@ -14,7 +14,7 @@
 #ifndef TEST_BOOT_SECTOR_H
 #define TEST_BOOT_SECTOR_H
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* Create boot disk file. fname must be a suitable string for mkstemp() */
 int boot_sector_init(char *fname);
diff --git a/tests/qtest/fuzz/fuzz.h b/tests/qtest/fuzz/fuzz.h
index 3a8570e84c79..c5f0b7227a10 100644
--- a/tests/qtest/fuzz/fuzz.h
+++ b/tests/qtest/fuzz/fuzz.h
@@ -17,7 +17,7 @@
 #include "qemu/units.h"
 #include "qapi/error.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 
 /**
  * A libfuzzer fuzzing target
diff --git a/tests/qtest/libqos/fw_cfg.h b/tests/qtest/libqos/fw_cfg.h
index c6a7cf8cf053..b0456a15df19 100644
--- a/tests/qtest/libqos/fw_cfg.h
+++ b/tests/qtest/libqos/fw_cfg.h
@@ -13,7 +13,7 @@
 #ifndef LIBQOS_FW_CFG_H
 #define LIBQOS_FW_CFG_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 
 typedef struct QFWCFG QFWCFG;
 
diff --git a/tests/qtest/libqos/i2c.h b/tests/qtest/libqos/i2c.h
index 1341bac1c599..d0322409227c 100644
--- a/tests/qtest/libqos/i2c.h
+++ b/tests/qtest/libqos/i2c.h
@@ -9,7 +9,7 @@
 #ifndef LIBQOS_I2C_H
 #define LIBQOS_I2C_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 
 typedef struct I2CAdapter I2CAdapter;
diff --git a/tests/qtest/libqos/libqos.h b/tests/qtest/libqos/libqos.h
index e0b2bfe7caf9..ba7df448cad7 100644
--- a/tests/qtest/libqos/libqos.h
+++ b/tests/qtest/libqos/libqos.h
@@ -1,7 +1,7 @@
 #ifndef LIBQOS_H
 #define LIBQOS_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci.h"
 #include "malloc.h"
 
diff --git a/tests/qtest/libqos/malloc.h b/tests/qtest/libqos/malloc.h
index 4d1a2e2bef4a..bbb8c743cc5a 100644
--- a/tests/qtest/libqos/malloc.h
+++ b/tests/qtest/libqos/malloc.h
@@ -14,7 +14,7 @@
 #define LIBQOS_MALLOC_H
 
 #include "qemu/queue.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 typedef enum {
     ALLOC_NO_FLAGS    = 0x00,
diff --git a/tests/qtest/libqos/pci.h b/tests/qtest/libqos/pci.h
index becb800f9e6a..e705e06598c2 100644
--- a/tests/qtest/libqos/pci.h
+++ b/tests/qtest/libqos/pci.h
@@ -13,7 +13,7 @@
 #ifndef LIBQOS_PCI_H
 #define LIBQOS_PCI_H
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 
 #define QPCI_PIO_LIMIT    0x10000
diff --git a/tests/qtest/libqos/sdhci-cmd.h b/tests/qtest/libqos/sdhci-cmd.h
index 64763c5a2ace..9e61dd494464 100644
--- a/tests/qtest/libqos/sdhci-cmd.h
+++ b/tests/qtest/libqos/sdhci-cmd.h
@@ -14,7 +14,7 @@
  * for more details.
  */
 
-#include "libqtest.h"
+#include "../libqtest.h"
 
 /* more details at hw/sd/sdhci-internal.h */
 #define SDHC_BLKSIZE 0x04
diff --git a/tests/qtest/libqtest-single.h b/tests/qtest/libqtest-single.h
index b0838b9e0e71..4e7d0ae1dcd3 100644
--- a/tests/qtest/libqtest-single.h
+++ b/tests/qtest/libqtest-single.h
@@ -11,7 +11,7 @@
 #ifndef LIBQTEST_SINGLE_H
 #define LIBQTEST_SINGLE_H
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 QTestState *global_qtest __attribute__((common, weak));
 
diff --git a/tests/qtest/libqos/libqtest.h b/tests/qtest/libqtest.h
similarity index 100%
rename from tests/qtest/libqos/libqtest.h
rename to tests/qtest/libqtest.h
diff --git a/tests/qtest/migration-helpers.h b/tests/qtest/migration-helpers.h
index 555adafce129..c7872e84421f 100644
--- a/tests/qtest/migration-helpers.h
+++ b/tests/qtest/migration-helpers.h
@@ -12,7 +12,7 @@
 #ifndef MIGRATION_HELPERS_H_
 #define MIGRATION_HELPERS_H_
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 extern bool got_stop;
 
diff --git a/tests/qtest/tpm-emu.h b/tests/qtest/tpm-emu.h
index c33d99af3743..712cee9b7a54 100644
--- a/tests/qtest/tpm-emu.h
+++ b/tests/qtest/tpm-emu.h
@@ -22,7 +22,7 @@
 #include "qemu/sockets.h"
 #include "io/channel.h"
 #include "sysemu/tpm.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 struct tpm_hdr {
     uint16_t tag;
diff --git a/tests/qtest/ac97-test.c b/tests/qtest/ac97-test.c
index e09f2495d24d..b084e31bff5f 100644
--- a/tests/qtest/ac97-test.c
+++ b/tests/qtest/ac97-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c
index aff5f3f79776..f1e510b0ac00 100644
--- a/tests/qtest/ahci-test.c
+++ b/tests/qtest/ahci-test.c
@@ -25,7 +25,7 @@
 #include "qemu/osdep.h"
 #include <getopt.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos-pc.h"
 #include "libqos/ahci.h"
 #include "libqos/pci-pc.h"
diff --git a/tests/qtest/am53c974-test.c b/tests/qtest/am53c974-test.c
index d214a912b3b4..ed3ac7db20de 100644
--- a/tests/qtest/am53c974-test.c
+++ b/tests/qtest/am53c974-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 
 static void test_cmdfifo_underflow_ok(void)
diff --git a/tests/qtest/arm-cpu-features.c b/tests/qtest/arm-cpu-features.c
index f76652143acc..5a145273860c 100644
--- a/tests/qtest/arm-cpu-features.c
+++ b/tests/qtest/arm-cpu-features.c
@@ -10,7 +10,7 @@
  */
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qjson.h"
 
diff --git a/tests/qtest/aspeed_hace-test.c b/tests/qtest/aspeed_hace-test.c
index 58aa22014d04..be0dd71df9bd 100644
--- a/tests/qtest/aspeed_hace-test.c
+++ b/tests/qtest/aspeed_hace-test.c
@@ -7,7 +7,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/bitops.h"
 
 #define HACE_CMD                 0x10
diff --git a/tests/qtest/boot-order-test.c b/tests/qtest/boot-order-test.c
index f1f59b1261fe..0680d79d6da3 100644
--- a/tests/qtest/boot-order-test.c
+++ b/tests/qtest/boot-order-test.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 #include "libqos/fw_cfg.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "standard-headers/linux/qemu_fw_cfg.h"
 
diff --git a/tests/qtest/boot-sector.c b/tests/qtest/boot-sector.c
index 9d9825bc8145..44a109abd8f0 100644
--- a/tests/qtest/boot-sector.c
+++ b/tests/qtest/boot-sector.c
@@ -12,7 +12,7 @@
  */
 #include "qemu/osdep.h"
 #include "boot-sector.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #define LOW(x) ((x) & 0xff)
 #define HIGH(x) ((x) >> 8)
diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c
index d72a82d6292e..2f99d71cab35 100644
--- a/tests/qtest/boot-serial-test.c
+++ b/tests/qtest/boot-serial-test.c
@@ -14,7 +14,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos-spapr.h"
 
 static const uint8_t bios_avr[] = {
diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c
index fdd889a487db..a7766a9e6571 100644
--- a/tests/qtest/cdrom-test.c
+++ b/tests/qtest/cdrom-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "boot-sector.h"
 #include "qapi/qmp/qdict.h"
 
diff --git a/tests/qtest/dbus-display-test.c b/tests/qtest/dbus-display-test.c
index 81043162dfdd..8be597476315 100644
--- a/tests/qtest/dbus-display-test.c
+++ b/tests/qtest/dbus-display-test.c
@@ -2,7 +2,7 @@
 #include "qemu/dbus.h"
 #include <gio/gio.h>
 #include <gio/gunixfdlist.h>
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "dbus-display1.h"
 
 static GDBusConnection*
diff --git a/tests/qtest/dbus-vmstate-test.c b/tests/qtest/dbus-vmstate-test.c
index a8acab763f5d..74ede651f63d 100644
--- a/tests/qtest/dbus-vmstate-test.c
+++ b/tests/qtest/dbus-vmstate-test.c
@@ -1,7 +1,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 #include <gio/gio.h>
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "dbus-vmstate1.h"
 #include "migration-helpers.h"
 
diff --git a/tests/qtest/device-introspect-test.c b/tests/qtest/device-introspect-test.c
index adf39b2518e8..5b0ffe43f5f4 100644
--- a/tests/qtest/device-introspect-test.c
+++ b/tests/qtest/device-introspect-test.c
@@ -21,7 +21,7 @@
 #include "qapi/qmp/qstring.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 const char common_args[] = "-nodefaults -machine none";
 
diff --git a/tests/qtest/device-plug-test.c b/tests/qtest/device-plug-test.c
index 404a92e1328a..2e3137843e37 100644
--- a/tests/qtest/device-plug-test.c
+++ b/tests/qtest/device-plug-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qstring.h"
 
diff --git a/tests/qtest/drive_del-test.c b/tests/qtest/drive_del-test.c
index 0cc18dfa4aae..5e6d58b4dd26 100644
--- a/tests/qtest/drive_del-test.c
+++ b/tests/qtest/drive_del-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/virtio.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
diff --git a/tests/qtest/ds1338-test.c b/tests/qtest/ds1338-test.c
index c5d46bcc643d..f6ade9a050fb 100644
--- a/tests/qtest/ds1338-test.c
+++ b/tests/qtest/ds1338-test.c
@@ -18,7 +18,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/i2c.h"
 
 #define DS1338_ADDR 0x68
diff --git a/tests/qtest/e1000-test.c b/tests/qtest/e1000-test.c
index ea286d179304..c387984ef6d6 100644
--- a/tests/qtest/e1000-test.c
+++ b/tests/qtest/e1000-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/eepro100-test.c b/tests/qtest/eepro100-test.c
index d72ad099f1eb..8dbffff0b81b 100644
--- a/tests/qtest/eepro100-test.c
+++ b/tests/qtest/eepro100-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/endianness-test.c b/tests/qtest/endianness-test.c
index 2f5a88bf4ce5..222d116fae2d 100644
--- a/tests/qtest/endianness-test.c
+++ b/tests/qtest/endianness-test.c
@@ -13,7 +13,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/bswap.h"
 
 typedef struct TestCase TestCase;
diff --git a/tests/qtest/erst-test.c b/tests/qtest/erst-test.c
index a0adc35bef7f..4e768a126f6a 100644
--- a/tests/qtest/erst-test.c
+++ b/tests/qtest/erst-test.c
@@ -10,7 +10,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 #include "libqos/libqos-pc.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #include "hw/pci/pci.h"
 
diff --git a/tests/qtest/es1370-test.c b/tests/qtest/es1370-test.c
index 2fd7fd2d3d30..adccdac1be57 100644
--- a/tests/qtest/es1370-test.c
+++ b/tests/qtest/es1370-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/fuzz-e1000e-test.c b/tests/qtest/fuzz-e1000e-test.c
index 66229e60964a..5052883fb6a8 100644
--- a/tests/qtest/fuzz-e1000e-test.c
+++ b/tests/qtest/fuzz-e1000e-test.c
@@ -8,7 +8,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * https://bugs.launchpad.net/qemu/+bug/1879531
diff --git a/tests/qtest/fuzz-lsi53c895a-test.c b/tests/qtest/fuzz-lsi53c895a-test.c
index 031d9de2419b..2e8e67859efb 100644
--- a/tests/qtest/fuzz-lsi53c895a-test.c
+++ b/tests/qtest/fuzz-lsi53c895a-test.c
@@ -6,7 +6,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the assert in lsi_do_dma()
diff --git a/tests/qtest/fuzz-megasas-test.c b/tests/qtest/fuzz-megasas-test.c
index 129b182f830c..287fe19fc764 100644
--- a/tests/qtest/fuzz-megasas-test.c
+++ b/tests/qtest/fuzz-megasas-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the assert in scsi_dma_complete
diff --git a/tests/qtest/fuzz-sb16-test.c b/tests/qtest/fuzz-sb16-test.c
index 91fdcd1e8a0f..a65826b94378 100644
--- a/tests/qtest/fuzz-sb16-test.c
+++ b/tests/qtest/fuzz-sb16-test.c
@@ -7,7 +7,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the assert in audio_calloc
diff --git a/tests/qtest/fuzz-sdcard-test.c b/tests/qtest/fuzz-sdcard-test.c
index d0f4e0e93c0b..e7fd818148e8 100644
--- a/tests/qtest/fuzz-sdcard-test.c
+++ b/tests/qtest/fuzz-sdcard-test.c
@@ -7,7 +7,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * https://gitlab.com/qemu-project/qemu/-/issues/450
diff --git a/tests/qtest/fuzz-virtio-scsi-test.c b/tests/qtest/fuzz-virtio-scsi-test.c
index c9b6fe21231d..71c91b03568d 100644
--- a/tests/qtest/fuzz-virtio-scsi-test.c
+++ b/tests/qtest/fuzz-virtio-scsi-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * Here a MemoryRegionCache pointed to an MMIO region but had a
diff --git a/tests/qtest/fuzz-xlnx-dp-test.c b/tests/qtest/fuzz-xlnx-dp-test.c
index 69eb6c0eb104..51e9a373002c 100644
--- a/tests/qtest/fuzz-xlnx-dp-test.c
+++ b/tests/qtest/fuzz-xlnx-dp-test.c
@@ -7,7 +7,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * This used to trigger the out-of-bounds read in xlnx_dp_read
diff --git a/tests/qtest/fuzz/fuzz.c b/tests/qtest/fuzz/fuzz.c
index d3afd294db24..0ad4ba9e94dc 100644
--- a/tests/qtest/fuzz/fuzz.c
+++ b/tests/qtest/fuzz/fuzz.c
@@ -22,7 +22,7 @@
 #include "sysemu/runstate.h"
 #include "qemu/main-loop.h"
 #include "qemu/rcu.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/qgraph.h"
 #include "fuzz.h"
 
diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuzz.c
index bce83604825e..25df19fd5af3 100644
--- a/tests/qtest/fuzz/generic_fuzz.c
+++ b/tests/qtest/fuzz/generic_fuzz.c
@@ -15,7 +15,7 @@
 #include <wordexp.h>
 
 #include "hw/core/cpu.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/pci-pc.h"
 #include "fuzz.h"
 #include "fork_fuzz.h"
diff --git a/tests/qtest/fuzz/i440fx_fuzz.c b/tests/qtest/fuzz/i440fx_fuzz.c
index 86796bff2bca..b17fc725dfd6 100644
--- a/tests/qtest/fuzz/i440fx_fuzz.c
+++ b/tests/qtest/fuzz/i440fx_fuzz.c
@@ -13,7 +13,7 @@
 #include "qemu/osdep.h"
 
 #include "qemu/main-loop.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/pci.h"
 #include "tests/qtest/libqos/pci-pc.h"
 #include "fuzz.h"
diff --git a/tests/qtest/fuzz/qos_fuzz.c b/tests/qtest/fuzz/qos_fuzz.c
index dc891d838b6a..c856d3d500e8 100644
--- a/tests/qtest/fuzz/qos_fuzz.c
+++ b/tests/qtest/fuzz/qos_fuzz.c
@@ -22,7 +22,7 @@
 #include "exec/memory.h"
 #include "qemu/main-loop.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/malloc.h"
 #include "tests/qtest/libqos/qgraph.h"
 #include "tests/qtest/libqos/qgraph_internal.h"
diff --git a/tests/qtest/fuzz/virtio_blk_fuzz.c b/tests/qtest/fuzz/virtio_blk_fuzz.c
index 623a756fd472..236d078cc862 100644
--- a/tests/qtest/fuzz/virtio_blk_fuzz.c
+++ b/tests/qtest/fuzz/virtio_blk_fuzz.c
@@ -11,7 +11,7 @@
 
 #include "qemu/osdep.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/virtio-blk.h"
 #include "tests/qtest/libqos/virtio.h"
 #include "tests/qtest/libqos/virtio-pci.h"
diff --git a/tests/qtest/fuzz/virtio_net_fuzz.c b/tests/qtest/fuzz/virtio_net_fuzz.c
index 0e873ab8e25f..3df78d9c1c2a 100644
--- a/tests/qtest/fuzz/virtio_net_fuzz.c
+++ b/tests/qtest/fuzz/virtio_net_fuzz.c
@@ -13,7 +13,7 @@
 #include "qemu/osdep.h"
 
 #include "standard-headers/linux/virtio_config.h"
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/virtio-net.h"
 #include "fuzz.h"
 #include "fork_fuzz.h"
diff --git a/tests/qtest/fuzz/virtio_scsi_fuzz.c b/tests/qtest/fuzz/virtio_scsi_fuzz.c
index 6ff6fabe4ad3..b3220ef6cb20 100644
--- a/tests/qtest/fuzz/virtio_scsi_fuzz.c
+++ b/tests/qtest/fuzz/virtio_scsi_fuzz.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 
-#include "tests/qtest/libqos/libqtest.h"
+#include "tests/qtest/libqtest.h"
 #include "tests/qtest/libqos/virtio-scsi.h"
 #include "tests/qtest/libqos/virtio.h"
 #include "tests/qtest/libqos/virtio-pci.h"
diff --git a/tests/qtest/fw_cfg-test.c b/tests/qtest/fw_cfg-test.c
index 95b3907c18c4..5dc807ba2385 100644
--- a/tests/qtest/fw_cfg-test.c
+++ b/tests/qtest/fw_cfg-test.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "standard-headers/linux/qemu_fw_cfg.h"
 #include "libqos/fw_cfg.h"
 #include "qemu/bswap.h"
diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c
index da9c4c2792de..413cf964c05b 100644
--- a/tests/qtest/hd-geo-test.c
+++ b/tests/qtest/hd-geo-test.c
@@ -18,7 +18,7 @@
 #include "qemu/osdep.h"
 #include "qemu/bswap.h"
 #include "qapi/qmp/qlist.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/fw_cfg.h"
 #include "libqos/libqos.h"
 #include "standard-headers/linux/qemu_fw_cfg.h"
diff --git a/tests/qtest/hexloader-test.c b/tests/qtest/hexloader-test.c
index 561502052a67..8b7aa2d72d0d 100644
--- a/tests/qtest/hexloader-test.c
+++ b/tests/qtest/hexloader-test.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* Load 'test.hex' and verify that the in-memory contents are as expected.
  * 'test.hex' is a memory test pattern stored in Hexadecimal Object
diff --git a/tests/qtest/ide-test.c b/tests/qtest/ide-test.c
index b7243a17b11d..5bcb75a7e53d 100644
--- a/tests/qtest/ide-test.c
+++ b/tests/qtest/ide-test.c
@@ -25,7 +25,7 @@
 #include "qemu/osdep.h"
 
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos.h"
 #include "libqos/pci-pc.h"
 #include "libqos/malloc-pc.h"
diff --git a/tests/qtest/ipoctal232-test.c b/tests/qtest/ipoctal232-test.c
index 65ce10b81bef..53a8c9b13ce5 100644
--- a/tests/qtest/ipoctal232-test.c
+++ b/tests/qtest/ipoctal232-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 
diff --git a/tests/qtest/ivshmem-test.c b/tests/qtest/ivshmem-test.c
index 95628a418579..bfc91d1719d2 100644
--- a/tests/qtest/ivshmem-test.c
+++ b/tests/qtest/ivshmem-test.c
@@ -13,7 +13,7 @@
 #include "contrib/ivshmem-server/ivshmem-server.h"
 #include "libqos/libqos-pc.h"
 #include "libqos/libqos-spapr.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #define TMPSHMSIZE (1 << 20)
 static char *tmpshm;
diff --git a/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c b/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
index 79631cc7a9ad..c8a3ea11eb40 100644
--- a/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
+++ b/tests/qtest/libqos/aarch64-xlnx-zcu102-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/ahci.c b/tests/qtest/libqos/ahci.c
index 41c4be5efa93..f53f12aa9965 100644
--- a/tests/qtest/libqos/ahci.c
+++ b/tests/qtest/libqos/ahci.c
@@ -24,7 +24,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "ahci.h"
 #include "pci-pc.h"
 
diff --git a/tests/qtest/libqos/arm-imx25-pdk-machine.c b/tests/qtest/libqos/arm-imx25-pdk-machine.c
index 6692adfa4fcb..54d0c9533044 100644
--- a/tests/qtest/libqos/arm-imx25-pdk-machine.c
+++ b/tests/qtest/libqos/arm-imx25-pdk-machine.c
@@ -19,7 +19,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "malloc.h"
 #include "qgraph.h"
 #include "i2c.h"
diff --git a/tests/qtest/libqos/arm-n800-machine.c b/tests/qtest/libqos/arm-n800-machine.c
index ff2049c3a7eb..ecd46b1dafa0 100644
--- a/tests/qtest/libqos/arm-n800-machine.c
+++ b/tests/qtest/libqos/arm-n800-machine.c
@@ -19,7 +19,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "malloc.h"
 #include "qgraph.h"
 #include "i2c.h"
diff --git a/tests/qtest/libqos/arm-raspi2-machine.c b/tests/qtest/libqos/arm-raspi2-machine.c
index 09ca863c1030..0a2943440b28 100644
--- a/tests/qtest/libqos/arm-raspi2-machine.c
+++ b/tests/qtest/libqos/arm-raspi2-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-sabrelite-machine.c b/tests/qtest/libqos/arm-sabrelite-machine.c
index 72425f0ad404..ec19a01660c0 100644
--- a/tests/qtest/libqos/arm-sabrelite-machine.c
+++ b/tests/qtest/libqos/arm-sabrelite-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-smdkc210-machine.c b/tests/qtest/libqos/arm-smdkc210-machine.c
index 321b8826d4a2..4bff249ee89a 100644
--- a/tests/qtest/libqos/arm-smdkc210-machine.c
+++ b/tests/qtest/libqos/arm-smdkc210-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-virt-machine.c b/tests/qtest/libqos/arm-virt-machine.c
index e0f59322845a..2e0beaefb8d7 100644
--- a/tests/qtest/libqos/arm-virt-machine.c
+++ b/tests/qtest/libqos/arm-virt-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c b/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
index 56e53c745bff..3be80020a6bc 100644
--- a/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
+++ b/tests/qtest/libqos/arm-xilinx-zynq-a9-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "malloc.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/e1000e.c b/tests/qtest/libqos/e1000e.c
index a451f6168f63..f87e0e84b2aa 100644
--- a/tests/qtest/libqos/e1000e.c
+++ b/tests/qtest/libqos/e1000e.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci-pc.h"
 #include "qemu/sockets.h"
 #include "qemu/iov.h"
diff --git a/tests/qtest/libqos/fw_cfg.c b/tests/qtest/libqos/fw_cfg.c
index 6b8e1babe51e..89f053ccacbd 100644
--- a/tests/qtest/libqos/fw_cfg.c
+++ b/tests/qtest/libqos/fw_cfg.c
@@ -14,7 +14,7 @@
 
 #include "qemu/osdep.h"
 #include "fw_cfg.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/bswap.h"
 #include "hw/nvram/fw_cfg.h"
 
diff --git a/tests/qtest/libqos/i2c-imx.c b/tests/qtest/libqos/i2c-imx.c
index 8f9a7e383146..710cb926d62b 100644
--- a/tests/qtest/libqos/i2c-imx.c
+++ b/tests/qtest/libqos/i2c-imx.c
@@ -21,7 +21,7 @@
 #include "i2c.h"
 
 
-#include "libqtest.h"
+#include "../libqtest.h"
 
 #include "hw/i2c/imx_i2c.h"
 
diff --git a/tests/qtest/libqos/i2c-omap.c b/tests/qtest/libqos/i2c-omap.c
index eb4e453485db..6f98f54820be 100644
--- a/tests/qtest/libqos/i2c-omap.c
+++ b/tests/qtest/libqos/i2c-omap.c
@@ -11,7 +11,7 @@
 
 
 #include "qemu/bswap.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 enum OMAPI2CRegisters {
     OMAP_I2C_REV  = 0x00,
diff --git a/tests/qtest/libqos/i2c.c b/tests/qtest/libqos/i2c.c
index ade1bdb40e05..1a54c004eb41 100644
--- a/tests/qtest/libqos/i2c.c
+++ b/tests/qtest/libqos/i2c.c
@@ -8,7 +8,7 @@
  */
 #include "qemu/osdep.h"
 #include "i2c.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 void qi2c_send(QI2CDevice *i2cdev, const uint8_t *buf, uint16_t len)
 {
diff --git a/tests/qtest/libqos/libqos.c b/tests/qtest/libqos/libqos.c
index 2251e864efe1..85c7641add1b 100644
--- a/tests/qtest/libqos/libqos.c
+++ b/tests/qtest/libqos/libqos.c
@@ -1,7 +1,7 @@
 #include "qemu/osdep.h"
 #include <sys/wait.h>
 
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "libqos.h"
 #include "pci.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/libqos/pci-pc.c b/tests/qtest/libqos/pci-pc.c
index f97844289f13..e9dd5a57ec55 100644
--- a/tests/qtest/libqos/pci-pc.c
+++ b/tests/qtest/libqos/pci-pc.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci-pc.h"
 #include "qapi/qmp/qdict.h"
 #include "hw/pci/pci_regs.h"
diff --git a/tests/qtest/libqos/pci-spapr.c b/tests/qtest/libqos/pci-spapr.c
index 262226985f37..76bf9a855d5c 100644
--- a/tests/qtest/libqos/pci-spapr.c
+++ b/tests/qtest/libqos/pci-spapr.c
@@ -6,7 +6,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "pci-spapr.h"
 #include "rtas.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/ppc64_pseries-machine.c b/tests/qtest/libqos/ppc64_pseries-machine.c
index 24ca1799765f..364e9c689bb9 100644
--- a/tests/qtest/libqos/ppc64_pseries-machine.c
+++ b/tests/qtest/libqos/ppc64_pseries-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 #include "pci-spapr.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/libqos/qgraph.c b/tests/qtest/libqos/qgraph.c
index 109ff04e1e8f..0a2dddfafa4f 100644
--- a/tests/qtest/libqos/qgraph.c
+++ b/tests/qtest/libqos/qgraph.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/queue.h"
 #include "qgraph_internal.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/qos_external.c b/tests/qtest/libqos/qos_external.c
index 10ee0f75b288..b7a0b873a362 100644
--- a/tests/qtest/libqos/qos_external.c
+++ b/tests/qtest/libqos/qos_external.c
@@ -18,7 +18,7 @@
 
 #include "qemu/osdep.h"
 #include <getopt.h>
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qbool.h"
 #include "qapi/qmp/qstring.h"
diff --git a/tests/qtest/libqos/rtas.c b/tests/qtest/libqos/rtas.c
index db29d5554dcb..dedbfb4cb3a6 100644
--- a/tests/qtest/libqos/rtas.c
+++ b/tests/qtest/libqos/rtas.c
@@ -4,7 +4,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "rtas.h"
 
 static void qrtas_copy_args(QTestState *qts, uint64_t target_args,
diff --git a/tests/qtest/libqos/sdhci-cmd.c b/tests/qtest/libqos/sdhci-cmd.c
index 2d9e51834114..a6f073ac1ac9 100644
--- a/tests/qtest/libqos/sdhci-cmd.c
+++ b/tests/qtest/libqos/sdhci-cmd.c
@@ -16,7 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "sdhci-cmd.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 
 static ssize_t read_fifo(QTestState *qts, uint64_t reg, char *msg, size_t count)
 {
diff --git a/tests/qtest/libqos/sdhci.c b/tests/qtest/libqos/sdhci.c
index 65f0d07fc5ac..71696980f83e 100644
--- a/tests/qtest/libqos/sdhci.c
+++ b/tests/qtest/libqos/sdhci.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 #include "pci.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/libqos/tpci200.c b/tests/qtest/libqos/tpci200.c
index 1787b1f188d3..8b0060324728 100644
--- a/tests/qtest/libqos/tpci200.c
+++ b/tests/qtest/libqos/tpci200.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "pci.h"
diff --git a/tests/qtest/libqos/usb.c b/tests/qtest/libqos/usb.c
index 8b45b0298446..446fdb5796c4 100644
--- a/tests/qtest/libqos/usb.c
+++ b/tests/qtest/libqos/usb.c
@@ -12,7 +12,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "hw/usb/uhci-regs.h"
 #include "usb.h"
 
diff --git a/tests/qtest/libqos/vhost-user-blk.c b/tests/qtest/libqos/vhost-user-blk.c
index 568c3426ed3a..2f3c9cb5336d 100644
--- a/tests/qtest/libqos/vhost-user-blk.c
+++ b/tests/qtest/libqos/vhost-user-blk.c
@@ -21,7 +21,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_blk.h"
 #include "vhost-user-blk.h"
diff --git a/tests/qtest/libqos/virtio-9p.c b/tests/qtest/libqos/virtio-9p.c
index f51f0635cc0c..70aea8bf6287 100644
--- a/tests/qtest/libqos/virtio-9p.c
+++ b/tests/qtest/libqos/virtio-9p.c
@@ -22,7 +22,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_ids.h"
 #include "virtio-9p.h"
diff --git a/tests/qtest/libqos/virtio-balloon.c b/tests/qtest/libqos/virtio-balloon.c
index a3da5c234d49..29b5d175845a 100644
--- a/tests/qtest/libqos/virtio-balloon.c
+++ b/tests/qtest/libqos/virtio-balloon.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-balloon.h"
diff --git a/tests/qtest/libqos/virtio-blk.c b/tests/qtest/libqos/virtio-blk.c
index 5da02591bcc2..ee4943f32b99 100644
--- a/tests/qtest/libqos/virtio-blk.c
+++ b/tests/qtest/libqos/virtio-blk.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_blk.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/virtio-iommu.c b/tests/qtest/libqos/virtio-iommu.c
index 18cba4ca36b6..afc7d14e9a60 100644
--- a/tests/qtest/libqos/virtio-iommu.c
+++ b/tests/qtest/libqos/virtio-iommu.c
@@ -12,7 +12,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-iommu.h"
diff --git a/tests/qtest/libqos/virtio-mmio.c b/tests/qtest/libqos/virtio-mmio.c
index 75efda30299a..a6cca8613b2c 100644
--- a/tests/qtest/libqos/virtio-mmio.c
+++ b/tests/qtest/libqos/virtio-mmio.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "virtio.h"
 #include "virtio-mmio.h"
diff --git a/tests/qtest/libqos/virtio-net.c b/tests/qtest/libqos/virtio-net.c
index 1cae07f60d6c..2ac73ac0b416 100644
--- a/tests/qtest/libqos/virtio-net.c
+++ b/tests/qtest/libqos/virtio-net.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-net.h"
diff --git a/tests/qtest/libqos/virtio-pci.c b/tests/qtest/libqos/virtio-pci.c
index cd3c0f5bf335..67c2498c84af 100644
--- a/tests/qtest/libqos/virtio-pci.c
+++ b/tests/qtest/libqos/virtio-pci.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "virtio.h"
 #include "virtio-pci.h"
 #include "pci.h"
diff --git a/tests/qtest/libqos/virtio-rng.c b/tests/qtest/libqos/virtio-rng.c
index 2e09dd7c48cb..078e3abaa72a 100644
--- a/tests/qtest/libqos/virtio-rng.c
+++ b/tests/qtest/libqos/virtio-rng.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-rng.h"
diff --git a/tests/qtest/libqos/virtio-scsi.c b/tests/qtest/libqos/virtio-scsi.c
index 5644e32fc319..c4d046142012 100644
--- a/tests/qtest/libqos/virtio-scsi.c
+++ b/tests/qtest/libqos/virtio-scsi.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "standard-headers/linux/virtio_ids.h"
 #include "qgraph.h"
diff --git a/tests/qtest/libqos/virtio-serial.c b/tests/qtest/libqos/virtio-serial.c
index ee34afd95ad8..1d689c3e38fc 100644
--- a/tests/qtest/libqos/virtio-serial.c
+++ b/tests/qtest/libqos/virtio-serial.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qemu/module.h"
 #include "qgraph.h"
 #include "virtio-serial.h"
diff --git a/tests/qtest/libqos/virtio.c b/tests/qtest/libqos/virtio.c
index fba918665951..09ec09b655cd 100644
--- a/tests/qtest/libqos/virtio.c
+++ b/tests/qtest/libqos/virtio.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/bswap.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "virtio.h"
 #include "standard-headers/linux/virtio_config.h"
 #include "standard-headers/linux/virtio_ring.h"
diff --git a/tests/qtest/libqos/x86_64_pc-machine.c b/tests/qtest/libqos/x86_64_pc-machine.c
index ad96742a92d6..dce0c9463a47 100644
--- a/tests/qtest/libqos/x86_64_pc-machine.c
+++ b/tests/qtest/libqos/x86_64_pc-machine.c
@@ -17,7 +17,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqtest.h"
+#include "../libqtest.h"
 #include "qgraph.h"
 #include "pci-pc.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index 5098d71485cc..aaf5ab0ca533 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -20,7 +20,7 @@
 #include <sys/wait.h>
 #include <sys/un.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/ctype.h"
 #include "qemu/cutils.h"
 #include "qapi/error.h"
diff --git a/tests/qtest/lpc-ich9-test.c b/tests/qtest/lpc-ich9-test.c
index fe0bef998075..8ac95b89f729 100644
--- a/tests/qtest/lpc-ich9-test.c
+++ b/tests/qtest/lpc-ich9-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 static void test_lp1878642_pci_bus_get_irq_level_assert(void)
 {
diff --git a/tests/qtest/m48t59-test.c b/tests/qtest/m48t59-test.c
index 6db3234100a3..b94a1230f7fd 100644
--- a/tests/qtest/m48t59-test.c
+++ b/tests/qtest/m48t59-test.c
@@ -14,7 +14,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #define RTC_SECONDS             0x9
 #define RTC_MINUTES             0xa
diff --git a/tests/qtest/machine-none-test.c b/tests/qtest/machine-none-test.c
index 8ca18074b9f9..d0f8cd990245 100644
--- a/tests/qtest/machine-none-test.c
+++ b/tests/qtest/machine-none-test.c
@@ -13,7 +13,7 @@
 #include "qemu/osdep.h"
 
 #include "qemu/cutils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 
diff --git a/tests/qtest/megasas-test.c b/tests/qtest/megasas-test.c
index eae70ff95f9c..d6796b9bd74d 100644
--- a/tests/qtest/megasas-test.c
+++ b/tests/qtest/megasas-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/bswap.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
diff --git a/tests/qtest/microbit-test.c b/tests/qtest/microbit-test.c
index 2b255579dfdd..04e199ec33f4 100644
--- a/tests/qtest/microbit-test.c
+++ b/tests/qtest/microbit-test.c
@@ -16,7 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "exec/hwaddr.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #include "hw/arm/nrf51.h"
 #include "hw/char/nrf51_uart.h"
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 2af36c16a371..cba6023eb500 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -12,7 +12,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/error.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/module.h"
diff --git a/tests/qtest/modules-test.c b/tests/qtest/modules-test.c
index c238b3f42216..88217686e14e 100644
--- a/tests/qtest/modules-test.c
+++ b/tests/qtest/modules-test.c
@@ -1,5 +1,5 @@
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 const char common_args[] = "-nodefaults -machine none";
 
diff --git a/tests/qtest/ne2000-test.c b/tests/qtest/ne2000-test.c
index 43cfc4535aab..3fc0e555d5e2 100644
--- a/tests/qtest/ne2000-test.c
+++ b/tests/qtest/ne2000-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/npcm7xx_adc-test.c b/tests/qtest/npcm7xx_adc-test.c
index 5ce8ce13b3d7..3fa6d9ece0bd 100644
--- a/tests/qtest/npcm7xx_adc-test.c
+++ b/tests/qtest/npcm7xx_adc-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
 #include "qemu/timer.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 #define REF_HZ          (25000000)
diff --git a/tests/qtest/npcm7xx_pwm-test.c b/tests/qtest/npcm7xx_pwm-test.c
index a54fd70d273b..c4a5fdcacd79 100644
--- a/tests/qtest/npcm7xx_pwm-test.c
+++ b/tests/qtest/npcm7xx_pwm-test.c
@@ -16,7 +16,7 @@
 
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qnum.h"
 
diff --git a/tests/qtest/npcm7xx_sdhci-test.c b/tests/qtest/npcm7xx_sdhci-test.c
index c1f496fb29bb..aa35a77e8d37 100644
--- a/tests/qtest/npcm7xx_sdhci-test.c
+++ b/tests/qtest/npcm7xx_sdhci-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "hw/sd/npcm7xx_sdhci.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqtest-single.h"
 #include "libqos/sdhci-cmd.h"
 
diff --git a/tests/qtest/npcm7xx_smbus-test.c b/tests/qtest/npcm7xx_smbus-test.c
index 6b3038ac596f..a878cdc00142 100644
--- a/tests/qtest/npcm7xx_smbus-test.c
+++ b/tests/qtest/npcm7xx_smbus-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "qemu/bitops.h"
 #include "libqos/i2c.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "hw/sensor/tmp105_regs.h"
 
 #define NR_SMBUS_DEVICES    16
diff --git a/tests/qtest/npcm7xx_watchdog_timer-test.c b/tests/qtest/npcm7xx_watchdog_timer-test.c
index 3aae5a043813..4773a673b207 100644
--- a/tests/qtest/npcm7xx_watchdog_timer-test.c
+++ b/tests/qtest/npcm7xx_watchdog_timer-test.c
@@ -17,7 +17,7 @@
 #include "qemu/osdep.h"
 #include "qemu/timer.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 #define WTCR_OFFSET     0x1c
diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c
index 90bf68a5b33c..749429dd27e6 100644
--- a/tests/qtest/numa-test.c
+++ b/tests/qtest/numa-test.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
 
diff --git a/tests/qtest/nvme-test.c b/tests/qtest/nvme-test.c
index f8bafb5d70fb..008d189b0faf 100644
--- a/tests/qtest/nvme-test.c
+++ b/tests/qtest/nvme-test.c
@@ -10,7 +10,7 @@
 #include "qemu/osdep.h"
 #include "qemu/module.h"
 #include "qemu/units.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
 #include "include/block/nvme.h"
diff --git a/tests/qtest/pca9552-test.c b/tests/qtest/pca9552-test.c
index 42a131266512..d80ed93cd3a5 100644
--- a/tests/qtest/pca9552-test.c
+++ b/tests/qtest/pca9552-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/qgraph.h"
 #include "libqos/i2c.h"
 #include "hw/misc/pca9552_regs.h"
diff --git a/tests/qtest/pci-test.c b/tests/qtest/pci-test.c
index e15d4d94d1d0..4b2092b94973 100644
--- a/tests/qtest/pci-test.c
+++ b/tests/qtest/pci-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/pcnet-test.c b/tests/qtest/pcnet-test.c
index 7583aeb3c38f..900944fa7e34 100644
--- a/tests/qtest/pcnet-test.c
+++ b/tests/qtest/pcnet-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/pflash-cfi02-test.c b/tests/qtest/pflash-cfi02-test.c
index 6168edc821a8..7fce614b6412 100644
--- a/tests/qtest/pflash-cfi02-test.c
+++ b/tests/qtest/pflash-cfi02-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /*
  * To test the pflash_cfi02 device, we run QEMU with the musicpal machine with
diff --git a/tests/qtest/pnv-xscom-test.c b/tests/qtest/pnv-xscom-test.c
index c8d40433620a..2c46d5cf6de3 100644
--- a/tests/qtest/pnv-xscom-test.c
+++ b/tests/qtest/pnv-xscom-test.c
@@ -8,7 +8,7 @@
  */
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 typedef enum PnvChipType {
     PNV_CHIP_POWER8E,     /* AKA Murano (default) */
diff --git a/tests/qtest/prom-env-test.c b/tests/qtest/prom-env-test.c
index bdbb01d8e584..c2b0448e551d 100644
--- a/tests/qtest/prom-env-test.c
+++ b/tests/qtest/prom-env-test.c
@@ -20,7 +20,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/libqos-spapr.h"
 
 #define MAGIC   0xcafec0de
diff --git a/tests/qtest/pvpanic-pci-test.c b/tests/qtest/pvpanic-pci-test.c
index 2358852d356f..c82c365c267d 100644
--- a/tests/qtest/pvpanic-pci-test.c
+++ b/tests/qtest/pvpanic-pci-test.c
@@ -12,7 +12,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
diff --git a/tests/qtest/pvpanic-test.c b/tests/qtest/pvpanic-test.c
index 6dcad2db4984..bc7b7dfc39e2 100644
--- a/tests/qtest/pvpanic-test.c
+++ b/tests/qtest/pvpanic-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 static void test_panic_nopause(void)
diff --git a/tests/qtest/pxe-test.c b/tests/qtest/pxe-test.c
index 3cb47d2c5496..52f0b5c67c03 100644
--- a/tests/qtest/pxe-test.c
+++ b/tests/qtest/pxe-test.c
@@ -14,7 +14,7 @@
 
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "boot-sector.h"
 #include "libqos/libqos-spapr.h"
 
diff --git a/tests/qtest/q35-test.c b/tests/qtest/q35-test.c
index b7cf1449906f..c922d81bc020 100644
--- a/tests/qtest/q35-test.c
+++ b/tests/qtest/q35-test.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
 #include "hw/pci-host/q35.h"
diff --git a/tests/qtest/qmp-cmd-test.c b/tests/qtest/qmp-cmd-test.c
index 7f103ea3fd2a..056b40e67f60 100644
--- a/tests/qtest/qmp-cmd-test.c
+++ b/tests/qtest/qmp-cmd-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/error.h"
 #include "qapi/qapi-visit-introspect.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/qmp-test.c b/tests/qtest/qmp-test.c
index cd27fae3deb2..9a42480cef0a 100644
--- a/tests/qtest/qmp-test.c
+++ b/tests/qtest/qmp-test.c
@@ -11,7 +11,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/error.h"
 #include "qapi/qapi-visit-control.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/qom-test.c b/tests/qtest/qom-test.c
index 6b162e12b5aa..7b871b2a3107 100644
--- a/tests/qtest/qom-test.c
+++ b/tests/qtest/qom-test.c
@@ -12,7 +12,7 @@
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
 #include "qemu/cutils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 static void test_properties(QTestState *qts, const char *path, bool recurse)
 {
diff --git a/tests/qtest/rtas-test.c b/tests/qtest/rtas-test.c
index 5f1194a6eb53..50df60e5b20e 100644
--- a/tests/qtest/rtas-test.c
+++ b/tests/qtest/rtas-test.c
@@ -1,6 +1,6 @@
 #include "qemu/osdep.h"
 #include "qemu/cutils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 #include "libqos/libqos-spapr.h"
 #include "libqos/rtas.h"
diff --git a/tests/qtest/sdhci-test.c b/tests/qtest/sdhci-test.c
index a110cfe3219c..6275e7626c21 100644
--- a/tests/qtest/sdhci-test.c
+++ b/tests/qtest/sdhci-test.c
@@ -10,7 +10,7 @@
 
 #include "qemu/osdep.h"
 #include "hw/registerfields.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/pci-pc.h"
 #include "hw/pci/pci.h"
diff --git a/tests/qtest/spapr-phb-test.c b/tests/qtest/spapr-phb-test.c
index ea8d59650721..093dc22f2f41 100644
--- a/tests/qtest/spapr-phb-test.c
+++ b/tests/qtest/spapr-phb-test.c
@@ -9,7 +9,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 
diff --git a/tests/qtest/tco-test.c b/tests/qtest/tco-test.c
index 47bc7ad3019d..254f7353701c 100644
--- a/tests/qtest/tco-test.c
+++ b/tests/qtest/tco-test.c
@@ -9,7 +9,7 @@
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/test-filter-mirror.c b/tests/qtest/test-filter-mirror.c
index fdf66cebd62f..c8b0a92b53b7 100644
--- a/tests/qtest/test-filter-mirror.c
+++ b/tests/qtest/test-filter-mirror.c
@@ -9,7 +9,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/iov.h"
 #include "qemu/sockets.h"
diff --git a/tests/qtest/test-filter-redirector.c b/tests/qtest/test-filter-redirector.c
index 339d3c04cedc..24ca9280f814 100644
--- a/tests/qtest/test-filter-redirector.c
+++ b/tests/qtest/test-filter-redirector.c
@@ -51,7 +51,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/iov.h"
 #include "qemu/sockets.h"
diff --git a/tests/qtest/test-hmp.c b/tests/qtest/test-hmp.c
index 413eb95d2a0c..f8b22abe4cac 100644
--- a/tests/qtest/test-hmp.c
+++ b/tests/qtest/test-hmp.c
@@ -15,7 +15,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 static int verbose;
 
diff --git a/tests/qtest/tpm-crb-swtpm-test.c b/tests/qtest/tpm-crb-swtpm-test.c
index 1d82a48c04be..55fdb5657d91 100644
--- a/tests/qtest/tpm-crb-swtpm-test.c
+++ b/tests/qtest/tpm-crb-swtpm-test.c
@@ -15,7 +15,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "tpm-tests.h"
 #include "hw/acpi/tpm.h"
diff --git a/tests/qtest/tpm-tis-device-swtpm-test.c b/tests/qtest/tpm-tis-device-swtpm-test.c
index f7126eff9e74..7b200351426a 100644
--- a/tests/qtest/tpm-tis-device-swtpm-test.c
+++ b/tests/qtest/tpm-tis-device-swtpm-test.c
@@ -16,7 +16,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "tpm-tests.h"
 #include "hw/acpi/tpm.h"
diff --git a/tests/qtest/tpm-tis-swtpm-test.c b/tests/qtest/tpm-tis-swtpm-test.c
index fa590e68f115..90131cb3c487 100644
--- a/tests/qtest/tpm-tis-swtpm-test.c
+++ b/tests/qtest/tpm-tis-swtpm-test.c
@@ -15,7 +15,7 @@
 #include "qemu/osdep.h"
 #include <glib/gstdio.h>
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "tpm-tests.h"
 #include "hw/acpi/tpm.h"
diff --git a/tests/qtest/tpm-util.c b/tests/qtest/tpm-util.c
index 3a40ff3f96c2..e0dc5da0af1e 100644
--- a/tests/qtest/tpm-util.c
+++ b/tests/qtest/tpm-util.c
@@ -15,7 +15,7 @@
 #include "qemu/osdep.h"
 
 #include "hw/acpi/tpm.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "tpm-util.h"
 #include "qapi/qmp/qdict.h"
 
diff --git a/tests/qtest/tulip-test.c b/tests/qtest/tulip-test.c
index da16cbfafcc2..2fb6c4d5a781 100644
--- a/tests/qtest/tulip-test.c
+++ b/tests/qtest/tulip-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/virtio-net-failover.c b/tests/qtest/virtio-net-failover.c
index 78811f1c9216..443ee56de966 100644
--- a/tests/qtest/virtio-net-failover.c
+++ b/tests/qtest/virtio-net-failover.c
@@ -8,7 +8,7 @@
  * SPDX-License-Identifier: GPL-2.0-or-later
  */
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "libqos/pci.h"
 #include "libqos/pci-pc.h"
 #include "qapi/qmp/qdict.h"
diff --git a/tests/qtest/virtio-rng-test.c b/tests/qtest/virtio-rng-test.c
index e6b8cd8e0cfa..092ba130684d 100644
--- a/tests/qtest/virtio-rng-test.c
+++ b/tests/qtest/virtio-rng-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/virtio-rng.h"
diff --git a/tests/qtest/virtio-test.c b/tests/qtest/virtio-test.c
index 63134176303a..f7c6afdcf111 100644
--- a/tests/qtest/virtio-test.c
+++ b/tests/qtest/virtio-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/vmgenid-test.c b/tests/qtest/vmgenid-test.c
index 6781a514479b..efba76e7164e 100644
--- a/tests/qtest/vmgenid-test.c
+++ b/tests/qtest/vmgenid-test.c
@@ -14,7 +14,7 @@
 #include "hw/acpi/acpi-defs.h"
 #include "boot-sector.h"
 #include "acpi-utils.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 
 #define VGID_GUID "324e6eaf-d1d1-4bf6-bf41-b9bb6c91fb87"
diff --git a/tests/qtest/vmxnet3-test.c b/tests/qtest/vmxnet3-test.c
index 97c23fd3a8f6..a81025252c87 100644
--- a/tests/qtest/vmxnet3-test.c
+++ b/tests/qtest/vmxnet3-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qemu/module.h"
 #include "libqos/qgraph.h"
 #include "libqos/pci.h"
diff --git a/tests/qtest/wdt_ib700-test.c b/tests/qtest/wdt_ib700-test.c
index 6c36e43fb835..797288d939fa 100644
--- a/tests/qtest/wdt_ib700-test.c
+++ b/tests/qtest/wdt_ib700-test.c
@@ -8,7 +8,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qemu/timer.h"
 
diff --git a/tests/qtest/xlnx-can-test.c b/tests/qtest/xlnx-can-test.c
index 54de71a68643..89610fc499b6 100644
--- a/tests/qtest/xlnx-can-test.c
+++ b/tests/qtest/xlnx-can-test.c
@@ -25,7 +25,7 @@
  */
 
 #include "qemu/osdep.h"
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
 /* Base address. */
 #define CAN0_BASE_ADDR          0xFF060000
diff --git a/tests/unit/test-qga.c b/tests/unit/test-qga.c
index e17a288034bc..d6df1ee92ea1 100644
--- a/tests/unit/test-qga.c
+++ b/tests/unit/test-qga.c
@@ -4,7 +4,7 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-#include "../qtest/libqos/libqtest.h"
+#include "../qtest/libqtest.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qlist.h"
 
diff --git a/scripts/oss-fuzz/output_reproducer.py b/scripts/oss-fuzz/output_reproducer.py
index 3608b0600e00..e8ef76b34138 100755
--- a/scripts/oss-fuzz/output_reproducer.py
+++ b/scripts/oss-fuzz/output_reproducer.py
@@ -36,7 +36,7 @@ def c_header(owner):
 
 #include "qemu/osdep.h"
 
-#include "libqos/libqtest.h"
+#include "libqtest.h"
 
     """.format(date=date.today().year, owner=owner)
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 06/26] libqtest: split QMP part in libqmp
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (4 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 05/26] tests: move libqtest.h back under qtest/ marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 07/26] tests: make libqmp buildable for win32 marcandre.lureau
                   ` (20 subsequent siblings)
  26 siblings, 0 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Marc-André Lureau, Thomas Huth,
	Daniel P. Berrangé,
	Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

This will help moving QAPI/QMP in a common subproject.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Thomas Huth <thuth@redhat.com>
---
 tests/qtest/libqmp.h           |  50 +++++++
 tests/qtest/libqtest.h         |  29 +---
 tests/qtest/libqmp.c           | 233 +++++++++++++++++++++++++++++++++
 tests/qtest/libqtest.c         | 205 +----------------------------
 tests/qtest/libqos/meson.build |   5 +-
 tests/unit/meson.build         |   2 +-
 6 files changed, 290 insertions(+), 234 deletions(-)
 create mode 100644 tests/qtest/libqmp.h
 create mode 100644 tests/qtest/libqmp.c

diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
new file mode 100644
index 000000000000..94aa97328a17
--- /dev/null
+++ b/tests/qtest/libqmp.h
@@ -0,0 +1,50 @@
+/*
+ * libqmp test unit
+ *
+ * Copyright IBM, Corp. 2012
+ * Copyright Red Hat, Inc. 2012
+ * Copyright SUSE LINUX Products GmbH 2013
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *  Paolo Bonzini     <pbonzini@redhat.com>
+ *  Andreas Färber    <afaerber@suse.de>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+#ifndef LIBQMP_H_
+#define LIBQMP_H_
+
+#include "qapi/qmp/qdict.h"
+
+QDict *qmp_fd_receive(int fd);
+void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                      const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
+void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
+void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
+void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
+void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
+QDict *qmp_fdv(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
+QDict *qmp_fd(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
+
+/**
+ * qmp_rsp_is_err:
+ * @rsp: QMP response to check for error
+ *
+ * Test @rsp for error and discard @rsp.
+ * Returns 'true' if there is error in @rsp and 'false' otherwise.
+ */
+bool qmp_rsp_is_err(QDict *rsp);
+
+/**
+ * qmp_expect_error_and_unref:
+ * @rsp: QMP response to check for error
+ * @class: an error class
+ *
+ * Assert the response has the given error class and discard @rsp.
+ */
+void qmp_expect_error_and_unref(QDict *rsp, const char *class);
+
+#endif /* LIBQMP_H_ */
diff --git a/tests/qtest/libqtest.h b/tests/qtest/libqtest.h
index 552667f17e37..4ab0cad3266d 100644
--- a/tests/qtest/libqtest.h
+++ b/tests/qtest/libqtest.h
@@ -19,6 +19,7 @@
 
 #include "qapi/qmp/qobject.h"
 #include "qapi/qmp/qdict.h"
+#include "libqmp.h"
 
 typedef struct QTestState QTestState;
 
@@ -690,16 +691,6 @@ void qtest_remove_abrt_handler(void *data);
 void qtest_qmp_assert_success(QTestState *qts, const char *fmt, ...)
     G_GNUC_PRINTF(2, 3);
 
-QDict *qmp_fd_receive(int fd);
-void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
-                      const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
-void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
-void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
-void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
-void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
-QDict *qmp_fdv(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
-QDict *qmp_fd(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
-
 /**
  * qtest_cb_for_every_machine:
  * @cb: Pointer to the callback function
@@ -771,24 +762,6 @@ void qtest_qmp_add_client(QTestState *qts, const char *protocol, int fd);
  */
 void qtest_qmp_device_del(QTestState *qts, const char *id);
 
-/**
- * qmp_rsp_is_err:
- * @rsp: QMP response to check for error
- *
- * Test @rsp for error and discard @rsp.
- * Returns 'true' if there is error in @rsp and 'false' otherwise.
- */
-bool qmp_rsp_is_err(QDict *rsp);
-
-/**
- * qmp_expect_error_and_unref:
- * @rsp: QMP response to check for error
- * @class: an error class
- *
- * Assert the response has the given error class and discard @rsp.
- */
-void qmp_expect_error_and_unref(QDict *rsp, const char *class);
-
 /**
  * qtest_probe_child:
  * @s: QTestState instance to operate on.
diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
new file mode 100644
index 000000000000..0358b8313dc4
--- /dev/null
+++ b/tests/qtest/libqmp.c
@@ -0,0 +1,233 @@
+/*
+ * QTest
+ *
+ * Copyright IBM, Corp. 2012
+ * Copyright Red Hat, Inc. 2012
+ * Copyright SUSE LINUX Products GmbH 2013
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *  Paolo Bonzini     <pbonzini@redhat.com>
+ *  Andreas Färber    <afaerber@suse.de>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+
+#include "qemu/osdep.h"
+
+#include "libqmp.h"
+
+#include "qapi/error.h"
+#include "qapi/qmp/json-parser.h"
+#include "qapi/qmp/qjson.h"
+
+#define SOCKET_MAX_FDS 16
+
+typedef struct {
+    JSONMessageParser parser;
+    QDict *response;
+} QMPResponseParser;
+
+static void socket_send(int fd, const char *buf, size_t size)
+{
+    size_t res = qemu_write_full(fd, buf, size);
+
+    assert(res == size);
+}
+
+static void qmp_response(void *opaque, QObject *obj, Error *err)
+{
+    QMPResponseParser *qmp = opaque;
+
+    assert(!obj != !err);
+
+    if (err) {
+        error_prepend(&err, "QMP JSON response parsing failed: ");
+        error_report_err(err);
+        abort();
+    }
+
+    g_assert(!qmp->response);
+    qmp->response = qobject_to(QDict, obj);
+    g_assert(qmp->response);
+}
+
+QDict *qmp_fd_receive(int fd)
+{
+    QMPResponseParser qmp;
+    bool log = getenv("QTEST_LOG") != NULL;
+
+    qmp.response = NULL;
+    json_message_parser_init(&qmp.parser, qmp_response, &qmp, NULL);
+    while (!qmp.response) {
+        ssize_t len;
+        char c;
+
+        len = read(fd, &c, 1);
+        if (len == -1 && errno == EINTR) {
+            continue;
+        }
+
+        if (len == -1 || len == 0) {
+            fprintf(stderr, "Broken pipe\n");
+            abort();
+        }
+
+        if (log) {
+            g_assert(write(2, &c, 1) == 1);
+        }
+        json_message_parser_feed(&qmp.parser, &c, 1);
+    }
+    if (log) {
+        g_assert(write(2, "\n", 1) == 1);
+    }
+    json_message_parser_destroy(&qmp.parser);
+
+    return qmp.response;
+}
+
+/* Sends a message and file descriptors to the socket.
+ * It's needed for qmp-commands like getfd/add-fd */
+static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
+                            const char *buf, size_t buf_size)
+{
+    ssize_t ret;
+    struct msghdr msg = { 0 };
+    char control[CMSG_SPACE(sizeof(int) * SOCKET_MAX_FDS)] = { 0 };
+    size_t fdsize = sizeof(int) * fds_num;
+    struct cmsghdr *cmsg;
+    struct iovec iov = { .iov_base = (char *)buf, .iov_len = buf_size };
+
+    msg.msg_iov = &iov;
+    msg.msg_iovlen = 1;
+
+    if (fds && fds_num > 0) {
+        g_assert_cmpuint(fds_num, <, SOCKET_MAX_FDS);
+
+        msg.msg_control = control;
+        msg.msg_controllen = CMSG_SPACE(fdsize);
+
+        cmsg = CMSG_FIRSTHDR(&msg);
+        cmsg->cmsg_len = CMSG_LEN(fdsize);
+        cmsg->cmsg_level = SOL_SOCKET;
+        cmsg->cmsg_type = SCM_RIGHTS;
+        memcpy(CMSG_DATA(cmsg), fds, fdsize);
+    }
+
+    do {
+        ret = sendmsg(socket_fd, &msg, 0);
+    } while (ret < 0 && errno == EINTR);
+    g_assert_cmpint(ret, >, 0);
+}
+
+/**
+ * Allow users to send a message without waiting for the reply,
+ * in the case that they choose to discard all replies up until
+ * a particular EVENT is received.
+ */
+void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                      const char *fmt, va_list ap)
+{
+    QObject *qobj;
+
+    /* Going through qobject ensures we escape strings properly */
+    qobj = qobject_from_vjsonf_nofail(fmt, ap);
+
+    /* No need to send anything for an empty QObject.  */
+    if (qobj) {
+        int log = getenv("QTEST_LOG") != NULL;
+        GString *str = qobject_to_json(qobj);
+
+        /*
+         * BUG: QMP doesn't react to input until it sees a newline, an
+         * object, or an array.  Work-around: give it a newline.
+         */
+        g_string_append_c(str, '\n');
+
+        if (log) {
+            fprintf(stderr, "%s", str->str);
+        }
+        /* Send QMP request */
+        if (fds && fds_num > 0) {
+            socket_send_fds(fd, fds, fds_num, str->str, str->len);
+        } else {
+            socket_send(fd, str->str, str->len);
+        }
+
+        g_string_free(str, true);
+        qobject_unref(qobj);
+    }
+}
+
+void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
+{
+    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+}
+
+
+QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
+{
+    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+
+    return qmp_fd_receive(fd);
+}
+
+QDict *qmp_fd(int fd, const char *fmt, ...)
+{
+    va_list ap;
+    QDict *response;
+
+    va_start(ap, fmt);
+    response = qmp_fdv(fd, fmt, ap);
+    va_end(ap);
+    return response;
+}
+
+void qmp_fd_send(int fd, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    qmp_fd_vsend(fd, fmt, ap);
+    va_end(ap);
+}
+
+void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap)
+{
+    bool log = getenv("QTEST_LOG") != NULL;
+    char *str = g_strdup_vprintf(fmt, ap);
+
+    if (log) {
+        fprintf(stderr, "%s", str);
+    }
+    socket_send(fd, str, strlen(str));
+    g_free(str);
+}
+
+void qmp_fd_send_raw(int fd, const char *fmt, ...)
+{
+    va_list ap;
+
+    va_start(ap, fmt);
+    qmp_fd_vsend_raw(fd, fmt, ap);
+    va_end(ap);
+}
+
+bool qmp_rsp_is_err(QDict *rsp)
+{
+    QDict *error = qdict_get_qdict(rsp, "error");
+    qobject_unref(rsp);
+    return !!error;
+}
+
+void qmp_expect_error_and_unref(QDict *rsp, const char *class)
+{
+    QDict *error = qdict_get_qdict(rsp, "error");
+
+    g_assert_cmpstr(qdict_get_try_str(error, "class"), ==, class);
+    g_assert_nonnull(qdict_get_try_str(error, "desc"));
+    g_assert(!qdict_haskey(rsp, "return"));
+
+    qobject_unref(rsp);
+}
diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index aaf5ab0ca533..228357f1eade 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -21,10 +21,9 @@
 #include <sys/un.h>
 
 #include "libqtest.h"
+#include "libqmp.h"
 #include "qemu/ctype.h"
 #include "qemu/cutils.h"
-#include "qapi/error.h"
-#include "qapi/qmp/json-parser.h"
 #include "qapi/qmp/qdict.h"
 #include "qapi/qmp/qjson.h"
 #include "qapi/qmp/qlist.h"
@@ -32,8 +31,6 @@
 
 #define MAX_IRQ 256
 #define SOCKET_TIMEOUT 50
-#define SOCKET_MAX_FDS 16
-
 
 typedef void (*QTestSendFn)(QTestState *s, const char *buf);
 typedef void (*ExternalSendFn)(void *s, const char *buf);
@@ -440,40 +437,6 @@ static void G_GNUC_PRINTF(2, 3) qtest_sendf(QTestState *s, const char *fmt, ...)
     g_free(str);
 }
 
-/* Sends a message and file descriptors to the socket.
- * It's needed for qmp-commands like getfd/add-fd */
-static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
-                            const char *buf, size_t buf_size)
-{
-    ssize_t ret;
-    struct msghdr msg = { 0 };
-    char control[CMSG_SPACE(sizeof(int) * SOCKET_MAX_FDS)] = { 0 };
-    size_t fdsize = sizeof(int) * fds_num;
-    struct cmsghdr *cmsg;
-    struct iovec iov = { .iov_base = (char *)buf, .iov_len = buf_size };
-
-    msg.msg_iov = &iov;
-    msg.msg_iovlen = 1;
-
-    if (fds && fds_num > 0) {
-        g_assert_cmpuint(fds_num, <, SOCKET_MAX_FDS);
-
-        msg.msg_control = control;
-        msg.msg_controllen = CMSG_SPACE(fdsize);
-
-        cmsg = CMSG_FIRSTHDR(&msg);
-        cmsg->cmsg_len = CMSG_LEN(fdsize);
-        cmsg->cmsg_level = SOL_SOCKET;
-        cmsg->cmsg_type = SCM_RIGHTS;
-        memcpy(CMSG_DATA(cmsg), fds, fdsize);
-    }
-
-    do {
-        ret = sendmsg(socket_fd, &msg, 0);
-    } while (ret < 0 && errno == EINTR);
-    g_assert_cmpint(ret, >, 0);
-}
-
 static GString *qtest_client_socket_recv_line(QTestState *s)
 {
     GString *line;
@@ -568,62 +531,6 @@ static int qtest_query_target_endianness(QTestState *s)
     return big_endian;
 }
 
-typedef struct {
-    JSONMessageParser parser;
-    QDict *response;
-} QMPResponseParser;
-
-static void qmp_response(void *opaque, QObject *obj, Error *err)
-{
-    QMPResponseParser *qmp = opaque;
-
-    assert(!obj != !err);
-
-    if (err) {
-        error_prepend(&err, "QMP JSON response parsing failed: ");
-        error_report_err(err);
-        abort();
-    }
-
-    g_assert(!qmp->response);
-    qmp->response = qobject_to(QDict, obj);
-    g_assert(qmp->response);
-}
-
-QDict *qmp_fd_receive(int fd)
-{
-    QMPResponseParser qmp;
-    bool log = getenv("QTEST_LOG") != NULL;
-
-    qmp.response = NULL;
-    json_message_parser_init(&qmp.parser, qmp_response, &qmp, NULL);
-    while (!qmp.response) {
-        ssize_t len;
-        char c;
-
-        len = read(fd, &c, 1);
-        if (len == -1 && errno == EINTR) {
-            continue;
-        }
-
-        if (len == -1 || len == 0) {
-            fprintf(stderr, "Broken pipe\n");
-            abort();
-        }
-
-        if (log) {
-            g_assert(write(2, &c, 1) == 1);
-        }
-        json_message_parser_feed(&qmp.parser, &c, 1);
-    }
-    if (log) {
-        g_assert(write(2, "\n", 1) == 1);
-    }
-    json_message_parser_destroy(&qmp.parser);
-
-    return qmp.response;
-}
-
 QDict *qtest_qmp_receive(QTestState *s)
 {
     while (true) {
@@ -664,50 +571,6 @@ int qtest_socket_server(const char *socket_path)
     return sock;
 }
 
-/**
- * Allow users to send a message without waiting for the reply,
- * in the case that they choose to discard all replies up until
- * a particular EVENT is received.
- */
-void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
-                      const char *fmt, va_list ap)
-{
-    QObject *qobj;
-
-    /* Going through qobject ensures we escape strings properly */
-    qobj = qobject_from_vjsonf_nofail(fmt, ap);
-
-    /* No need to send anything for an empty QObject.  */
-    if (qobj) {
-        int log = getenv("QTEST_LOG") != NULL;
-        GString *str = qobject_to_json(qobj);
-
-        /*
-         * BUG: QMP doesn't react to input until it sees a newline, an
-         * object, or an array.  Work-around: give it a newline.
-         */
-        g_string_append_c(str, '\n');
-
-        if (log) {
-            fprintf(stderr, "%s", str->str);
-        }
-        /* Send QMP request */
-        if (fds && fds_num > 0) {
-            socket_send_fds(fd, fds, fds_num, str->str, str->len);
-        } else {
-            socket_send(fd, str->str, str->len);
-        }
-
-        g_string_free(str, true);
-        qobject_unref(qobj);
-    }
-}
-
-void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
-{
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
-}
-
 void qtest_qmp_vsend_fds(QTestState *s, int *fds, size_t fds_num,
                          const char *fmt, va_list ap)
 {
@@ -719,13 +582,6 @@ void qtest_qmp_vsend(QTestState *s, const char *fmt, va_list ap)
     qmp_fd_vsend_fds(s->qmp_fd, NULL, 0, fmt, ap);
 }
 
-QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
-{
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
-
-    return qmp_fd_receive(fd);
-}
-
 QDict *qtest_vqmp_fds(QTestState *s, int *fds, size_t fds_num,
                       const char *fmt, va_list ap)
 {
@@ -743,26 +599,6 @@ QDict *qtest_vqmp(QTestState *s, const char *fmt, va_list ap)
     return qtest_qmp_receive(s);
 }
 
-QDict *qmp_fd(int fd, const char *fmt, ...)
-{
-    va_list ap;
-    QDict *response;
-
-    va_start(ap, fmt);
-    response = qmp_fdv(fd, fmt, ap);
-    va_end(ap);
-    return response;
-}
-
-void qmp_fd_send(int fd, const char *fmt, ...)
-{
-    va_list ap;
-
-    va_start(ap, fmt);
-    qmp_fd_vsend(fd, fmt, ap);
-    va_end(ap);
-}
-
 QDict *qtest_qmp_fds(QTestState *s, int *fds, size_t fds_num,
                      const char *fmt, ...)
 {
@@ -795,27 +631,6 @@ void qtest_qmp_send(QTestState *s, const char *fmt, ...)
     va_end(ap);
 }
 
-void qmp_fd_vsend_raw(int fd, const char *fmt, va_list ap)
-{
-    bool log = getenv("QTEST_LOG") != NULL;
-    char *str = g_strdup_vprintf(fmt, ap);
-
-    if (log) {
-        fprintf(stderr, "%s", str);
-    }
-    socket_send(fd, str, strlen(str));
-    g_free(str);
-}
-
-void qmp_fd_send_raw(int fd, const char *fmt, ...)
-{
-    va_list ap;
-
-    va_start(ap, fmt);
-    qmp_fd_vsend_raw(fd, fmt, ap);
-    va_end(ap);
-}
-
 void qtest_qmp_send_raw(QTestState *s, const char *fmt, ...)
 {
     va_list ap;
@@ -1539,24 +1354,6 @@ void qtest_qmp_device_del(QTestState *qts, const char *id)
     qtest_qmp_eventwait(qts, "DEVICE_DELETED");
 }
 
-bool qmp_rsp_is_err(QDict *rsp)
-{
-    QDict *error = qdict_get_qdict(rsp, "error");
-    qobject_unref(rsp);
-    return !!error;
-}
-
-void qmp_expect_error_and_unref(QDict *rsp, const char *class)
-{
-    QDict *error = qdict_get_qdict(rsp, "error");
-
-    g_assert_cmpstr(qdict_get_try_str(error, "class"), ==, class);
-    g_assert_nonnull(qdict_get_try_str(error, "desc"));
-    g_assert(!qdict_haskey(rsp, "return"));
-
-    qobject_unref(rsp);
-}
-
 static void qtest_client_set_tx_handler(QTestState *s,
                     QTestSendFn send)
 {
diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build
index e988d1579172..9f292339f9cf 100644
--- a/tests/qtest/libqos/meson.build
+++ b/tests/qtest/libqos/meson.build
@@ -1,4 +1,7 @@
-libqos_srcs = files('../libqtest.c',
+libqos_srcs = files(
+        '../libqtest.c',
+        '../libqmp.c',
+
         'qgraph.c',
         'qos_external.c',
         'pci.c',
diff --git a/tests/unit/meson.build b/tests/unit/meson.build
index ab01e00f12cf..264f2bc0c81d 100644
--- a/tests/unit/meson.build
+++ b/tests/unit/meson.build
@@ -154,7 +154,7 @@ if have_system
 endif
 
 if have_ga and targetos == 'linux'
-  tests += {'test-qga': ['../qtest/libqtest.c']}
+  tests += {'test-qga': ['../qtest/libqmp.c']}
   test_deps += {'test-qga': qga}
 endif
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 07/26] tests: make libqmp buildable for win32
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (5 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 06/26] libqtest: split QMP part in libqmp marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-26  9:32   ` Thomas Huth
  2022-04-26  9:26 ` [PATCH v2 08/26] Use g_unix_set_fd_nonblocking() marcandre.lureau
                   ` (19 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Marc-André Lureau, Thomas Huth,
	Daniel P. Berrangé,
	Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/libqmp.h |  2 ++
 tests/qtest/libqmp.c | 37 +++++++++++++++++++++++++++++++------
 2 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
index 94aa97328a17..772f18b73ba3 100644
--- a/tests/qtest/libqmp.h
+++ b/tests/qtest/libqmp.h
@@ -20,8 +20,10 @@
 #include "qapi/qmp/qdict.h"
 
 QDict *qmp_fd_receive(int fd);
+#ifndef G_OS_WIN32
 void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
                       const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
+#endif
 void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
 void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
 void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
index 0358b8313dc4..5f451ebee796 100644
--- a/tests/qtest/libqmp.c
+++ b/tests/qtest/libqmp.c
@@ -15,9 +15,15 @@
  */
 
 #include "qemu/osdep.h"
-
 #include "libqmp.h"
 
+#include <unistd.h>
+#include <stdlib.h>
+#ifndef G_OS_WIN32
+#include <sys/socket.h>
+#endif
+
+#include "qemu/cutils.h"
 #include "qapi/error.h"
 #include "qapi/qmp/json-parser.h"
 #include "qapi/qmp/qjson.h"
@@ -87,6 +93,7 @@ QDict *qmp_fd_receive(int fd)
     return qmp.response;
 }
 
+#ifndef G_OS_WIN32
 /* Sends a message and file descriptors to the socket.
  * It's needed for qmp-commands like getfd/add-fd */
 static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
@@ -120,17 +127,23 @@ static void socket_send_fds(int socket_fd, int *fds, size_t fds_num,
     } while (ret < 0 && errno == EINTR);
     g_assert_cmpint(ret, >, 0);
 }
+#endif
 
 /**
  * Allow users to send a message without waiting for the reply,
  * in the case that they choose to discard all replies up until
  * a particular EVENT is received.
  */
-void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
-                      const char *fmt, va_list ap)
+static void
+_qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                  const char *fmt, va_list ap)
 {
     QObject *qobj;
 
+#ifdef G_OS_WIN32
+    assert(fds_num == 0);
+#endif
+
     /* Going through qobject ensures we escape strings properly */
     qobj = qobject_from_vjsonf_nofail(fmt, ap);
 
@@ -148,10 +161,14 @@ void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
         if (log) {
             fprintf(stderr, "%s", str->str);
         }
+
+#ifndef G_OS_WIN32
         /* Send QMP request */
         if (fds && fds_num > 0) {
             socket_send_fds(fd, fds, fds_num, str->str, str->len);
-        } else {
+        } else
+#endif
+        {
             socket_send(fd, str->str, str->len);
         }
 
@@ -160,15 +177,23 @@ void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
     }
 }
 
+#ifndef G_OS_WIN32
+void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
+                      const char *fmt, va_list ap)
+{
+    _qmp_fd_vsend_fds(fd, fds, fds_num, fmt, ap);
+}
+#endif
+
 void qmp_fd_vsend(int fd, const char *fmt, va_list ap)
 {
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+    _qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
 }
 
 
 QDict *qmp_fdv(int fd, const char *fmt, va_list ap)
 {
-    qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
+    _qmp_fd_vsend_fds(fd, NULL, 0, fmt, ap);
 
     return qmp_fd_receive(fd);
 }
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 08/26] Use g_unix_set_fd_nonblocking()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (6 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 07/26] tests: make libqmp buildable for win32 marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-27  1:00   ` Richard Henderson
  2022-04-26  9:26 ` [PATCH v2 09/26] block: move fcntl_setfl() marcandre.lureau
                   ` (18 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

API available since glib 2.30. It also preserves errno.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/misc/ivshmem.c           | 2 +-
 util/event_notifier-posix.c | 6 ++----
 util/main-loop.c            | 2 +-
 3 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index e7c0099bdaf6..8270db53cda7 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -537,7 +537,7 @@ static void process_msg_connect(IVShmemState *s, uint16_t posn, int fd,
 
     IVSHMEM_DPRINTF("eventfds[%d][%d] = %d\n", posn, vector, fd);
     event_notifier_init_fd(&peer->eventfds[vector], fd);
-    fcntl_setfl(fd, O_NONBLOCK); /* msix/irqfd poll non block */
+    g_unix_set_fd_nonblocking(fd, true, NULL); /* msix/irqfd poll non block */
 
     if (posn == s->vm_id) {
         setup_interrupt(s, vector, errp);
diff --git a/util/event_notifier-posix.c b/util/event_notifier-posix.c
index 8dc30c51414d..2aa14eabb38e 100644
--- a/util/event_notifier-posix.c
+++ b/util/event_notifier-posix.c
@@ -52,13 +52,11 @@ int event_notifier_init(EventNotifier *e, int active)
         if (qemu_pipe(fds) < 0) {
             return -errno;
         }
-        ret = fcntl_setfl(fds[0], O_NONBLOCK);
-        if (ret < 0) {
+        if (!g_unix_set_fd_nonblocking(fds[0], true, NULL)) {
             ret = -errno;
             goto fail;
         }
-        ret = fcntl_setfl(fds[1], O_NONBLOCK);
-        if (ret < 0) {
+        if (!g_unix_set_fd_nonblocking(fds[1], true, NULL)) {
             ret = -errno;
             goto fail;
         }
diff --git a/util/main-loop.c b/util/main-loop.c
index b7b0ce4ca087..9afac10dff0f 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -114,7 +114,7 @@ static int qemu_signal_init(Error **errp)
         return -errno;
     }
 
-    fcntl_setfl(sigfd, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(sigfd, true, NULL);
 
     qemu_set_fd_handler(sigfd, sigfd_handler, NULL, (void *)(intptr_t)sigfd);
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 09/26] block: move fcntl_setfl()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (7 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 08/26] Use g_unix_set_fd_nonblocking() marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-27  1:00   ` Richard Henderson
  2022-04-26  9:26 ` [PATCH v2 10/26] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
                   ` (17 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	open list:raw, Hanna Reitz, Paolo Bonzini,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

It is only used by block/file-posix.c, move it there.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/sysemu/os-posix.h |  2 --
 block/file-posix.c        | 15 +++++++++++++++
 util/oslib-posix.c        | 15 ---------------
 3 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/include/sysemu/os-posix.h b/include/sysemu/os-posix.h
index adbe19d3e468..58de7c994d85 100644
--- a/include/sysemu/os-posix.h
+++ b/include/sysemu/os-posix.h
@@ -96,8 +96,6 @@ static inline void qemu_funlockfile(FILE *f)
     funlockfile(f);
 }
 
-int fcntl_setfl(int fd, int flag);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/block/file-posix.c b/block/file-posix.c
index bfd9b2111143..48cd0966249d 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1022,6 +1022,21 @@ static int raw_handle_perm_lock(BlockDriverState *bs,
     return ret;
 }
 
+/* Sets a specific flag */
+static int fcntl_setfl(int fd, int flag)
+{
+    int flags;
+
+    flags = fcntl(fd, F_GETFL);
+    if (flags == -1) {
+        return -errno;
+    }
+    if (fcntl(fd, F_SETFL, flags | flag) == -1) {
+        return -errno;
+    }
+    return 0;
+}
+
 static int raw_reconfigure_getfd(BlockDriverState *bs, int flags,
                                  int *open_flags, uint64_t perm, bool force_dup,
                                  Error **errp)
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 03d97741562c..43f4b0d2a7ca 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -816,21 +816,6 @@ size_t qemu_get_host_physmem(void)
     return 0;
 }
 
-/* Sets a specific flag */
-int fcntl_setfl(int fd, int flag)
-{
-    int flags;
-
-    flags = fcntl(fd, F_GETFL);
-    if (flags == -1) {
-        return -errno;
-    }
-    if (fcntl(fd, F_SETFL, flags | flag) == -1) {
-        return -errno;
-    }
-    return 0;
-}
-
 int qemu_msync(void *addr, size_t length, int fd)
 {
     size_t align_mask = ~(qemu_real_host_page_size() - 1);
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 10/26] Replace qemu_pipe() with g_unix_open_pipe()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (8 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 09/26] block: move fcntl_setfl() marcandre.lureau
@ 2022-04-26  9:26 ` marcandre.lureau
  2022-04-27  1:06   ` Richard Henderson
  2022-04-26  9:27 ` [PATCH v2 11/26] util: replace pipe()+cloexec " marcandre.lureau
                   ` (16 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: Vladimir Sementsov-Ogievskiy, Daniel P. Berrangé,
	open list:Network Block Dev...,
	Paolo Bonzini, Marc-André Lureau, Eric Blake

From: Marc-André Lureau <marcandre.lureau@redhat.com>

GLib g_unix_open_pipe() is essentially like qemu_pipe(), available since
2.30.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qemu/osdep.h        |  4 ----
 qemu-nbd.c                  |  5 +++--
 util/event_notifier-posix.c |  2 +-
 util/oslib-posix.c          | 22 ----------------------
 4 files changed, 4 insertions(+), 29 deletions(-)

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 220b44f710e5..241d249d7e5b 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -547,10 +547,6 @@ static inline void qemu_timersub(const struct timeval *val1,
 ssize_t qemu_write_full(int fd, const void *buf, size_t count)
     G_GNUC_WARN_UNUSED_RESULT;
 
-#ifndef _WIN32
-int qemu_pipe(int pipefd[2]);
-#endif
-
 void qemu_set_cloexec(int fd);
 
 void fips_set_state(bool requested);
diff --git a/qemu-nbd.c b/qemu-nbd.c
index 397ffa64d768..a184c6b9992f 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -902,13 +902,14 @@ int main(int argc, char **argv)
 
     if ((device && !verbose) || fork_process) {
 #ifndef WIN32
+        g_autoptr(GError) err = NULL;
         int stderr_fd[2];
         pid_t pid;
         int ret;
 
-        if (qemu_pipe(stderr_fd) < 0) {
+        if (!g_unix_open_pipe(stderr_fd, FD_CLOEXEC, &err)) {
             error_report("Error setting up communication pipe: %s",
-                         strerror(errno));
+                         err->message);
             exit(EXIT_FAILURE);
         }
 
diff --git a/util/event_notifier-posix.c b/util/event_notifier-posix.c
index 2aa14eabb38e..76420c5b560c 100644
--- a/util/event_notifier-posix.c
+++ b/util/event_notifier-posix.c
@@ -49,7 +49,7 @@ int event_notifier_init(EventNotifier *e, int active)
         if (errno != ENOSYS) {
             return -errno;
         }
-        if (qemu_pipe(fds) < 0) {
+        if (!g_unix_open_pipe(fds, FD_CLOEXEC, NULL)) {
             return -errno;
         }
         if (!g_unix_set_fd_nonblocking(fds[0], true, NULL)) {
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 43f4b0d2a7ca..1c231087408f 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -274,28 +274,6 @@ void qemu_set_cloexec(int fd)
     assert(f != -1);
 }
 
-/*
- * Creates a pipe with FD_CLOEXEC set on both file descriptors
- */
-int qemu_pipe(int pipefd[2])
-{
-    int ret;
-
-#ifdef CONFIG_PIPE2
-    ret = pipe2(pipefd, O_CLOEXEC);
-    if (ret != -1 || errno != ENOSYS) {
-        return ret;
-    }
-#endif
-    ret = pipe(pipefd);
-    if (ret == 0) {
-        qemu_set_cloexec(pipefd[0]);
-        qemu_set_cloexec(pipefd[1]);
-    }
-
-    return ret;
-}
-
 char *
 qemu_get_local_state_dir(void)
 {
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 11/26] util: replace pipe()+cloexec with g_unix_open_pipe()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (9 preceding siblings ...)
  2022-04-26  9:26 ` [PATCH v2 10/26] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-27  1:06   ` Richard Henderson
  2022-04-26  9:27 ` [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC) marcandre.lureau
                   ` (15 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 util/compatfd.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/util/compatfd.c b/util/compatfd.c
index 55b6e0b7fb27..147e39e2c62b 100644
--- a/util/compatfd.c
+++ b/util/compatfd.c
@@ -60,14 +60,11 @@ static int qemu_signalfd_compat(const sigset_t *mask)
 
     info = g_malloc(sizeof(*info));
 
-    if (pipe(fds) == -1) {
+    if (!g_unix_open_pipe(fds, FD_CLOEXEC, NULL)) {
         g_free(info);
         return -1;
     }
 
-    qemu_set_cloexec(fds[0]);
-    qemu_set_cloexec(fds[1]);
-
     memcpy(&info->mask, mask, sizeof(*mask));
     info->fd = fds[1];
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (10 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 11/26] util: replace pipe()+cloexec " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-27  1:08   ` Richard Henderson
  2022-04-26  9:27 ` [PATCH v2 13/26] tests: " marcandre.lureau
                   ` (14 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Michael Roth

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 qga/commands-posix.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 77f4672ca2c9..094487c2c395 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -2529,7 +2529,7 @@ void qmp_guest_set_user_password(const char *username,
         goto out;
     }
 
-    if (pipe(datafd) < 0) {
+    if (!g_unix_open_pipe(datafd, FD_CLOEXEC, NULL)) {
         error_setg(errp, "cannot create pipe FDs");
         goto out;
     }
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 13/26] tests: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (11 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC) marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:11   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 14/26] os-posix: replace pipe()+cloexec " marcandre.lureau
                   ` (13 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Marc-André Lureau, Thomas Huth,
	Daniel P. Berrangé,
	Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/ivshmem-test.c        | 5 +++--
 tests/unit/test-io-channel-file.c | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/tests/qtest/ivshmem-test.c b/tests/qtest/ivshmem-test.c
index bfc91d1719d2..e23a97fa8ef4 100644
--- a/tests/qtest/ivshmem-test.c
+++ b/tests/qtest/ivshmem-test.c
@@ -304,6 +304,7 @@ static void setup_vm_with_server(IVState *s, int nvectors)
 
 static void test_ivshmem_server(void)
 {
+    g_autoptr(GError) err = NULL;
     IVState state1, state2, *s1, *s2;
     ServerThread thread;
     IvshmemServer server;
@@ -320,8 +321,8 @@ static void test_ivshmem_server(void)
     g_assert_cmpint(ret, ==, 0);
 
     thread.server = &server;
-    ret = pipe(thread.pipe);
-    g_assert_cmpint(ret, ==, 0);
+    g_unix_open_pipe(thread.pipe, FD_CLOEXEC, &err);
+    g_assert_no_error(err);
     thread.thread = g_thread_new("ivshmem-server", server_thread, &thread);
     g_assert(thread.thread != NULL);
 
diff --git a/tests/unit/test-io-channel-file.c b/tests/unit/test-io-channel-file.c
index 29038e67b64d..1977006ce922 100644
--- a/tests/unit/test-io-channel-file.c
+++ b/tests/unit/test-io-channel-file.c
@@ -109,7 +109,7 @@ static void test_io_channel_pipe(bool async)
     QIOChannelTest *test;
     int fd[2];
 
-    if (pipe(fd) < 0) {
+    if (!g_unix_open_pipe(fd, FD_CLOEXEC, NULL)) {
         perror("pipe");
         abort();
     }
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 14/26] os-posix: replace pipe()+cloexec with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (12 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 13/26] tests: " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-27  1:11   ` Richard Henderson
  2022-04-26  9:27   ` [Virtio-fs] " marcandre.lureau
                   ` (12 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 os-posix.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/os-posix.c b/os-posix.c
index faf6e6978b9f..52526c2e3f76 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -223,7 +223,7 @@ void os_daemonize(void)
         pid_t pid;
         int fds[2];
 
-        if (pipe(fds) == -1) {
+        if (!g_unix_open_pipe(fds, FD_CLOEXEC, NULL)) {
             exit(1);
         }
 
@@ -248,7 +248,6 @@ void os_daemonize(void)
 
         close(fds[0]);
         daemon_pipe = fds[1];
-        qemu_set_cloexec(daemon_pipe);
 
         setsid();
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 15/26] virtiofsd: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
@ 2022-04-26  9:27   ` marcandre.lureau
  2022-04-26  9:26 ` [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
                     ` (25 subsequent siblings)
  26 siblings, 0 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: open list:virtiofs, Marc-André Lureau,
	Daniel P. Berrangé,
	Dr. David Alan Gilbert, Stefan Hajnoczi

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tools/virtiofsd/helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/virtiofsd/helper.c b/tools/virtiofsd/helper.c
index f8981e5bdf1a..f5f66f292c70 100644
--- a/tools/virtiofsd/helper.c
+++ b/tools/virtiofsd/helper.c
@@ -275,7 +275,7 @@ int fuse_daemonize(int foreground)
         int waiter[2];
         char completed;
 
-        if (pipe(waiter)) {
+        if (!g_unix_open_pipe(waiter, FD_CLOEXEC, NULL)) {
             fuse_log(FUSE_LOG_ERR, "fuse_daemonize: pipe: %s\n",
                      strerror(errno));
             return -1;
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [Virtio-fs] [PATCH v2 15/26] virtiofsd: replace pipe() with g_unix_open_pipe(CLOEXEC)
@ 2022-04-26  9:27   ` marcandre.lureau
  0 siblings, 0 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: Daniel P. Berrangé,
	Marc-André Lureau, Dr. David Alan Gilbert, Stefan Hajnoczi,
	open list:virtiofs

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tools/virtiofsd/helper.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/virtiofsd/helper.c b/tools/virtiofsd/helper.c
index f8981e5bdf1a..f5f66f292c70 100644
--- a/tools/virtiofsd/helper.c
+++ b/tools/virtiofsd/helper.c
@@ -275,7 +275,7 @@ int fuse_daemonize(int foreground)
         int waiter[2];
         char completed;
 
-        if (pipe(waiter)) {
+        if (!g_unix_open_pipe(waiter, FD_CLOEXEC, NULL)) {
             fuse_log(FUSE_LOG_ERR, "fuse_daemonize: pipe: %s\n",
                      strerror(errno));
             return -1;
-- 
2.36.0


^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 16/26] io: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (14 preceding siblings ...)
  2022-04-26  9:27   ` [Virtio-fs] " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:29   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking() marcandre.lureau
                   ` (10 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 io/channel-command.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/io/channel-command.c b/io/channel-command.c
index 338da73ade56..539685ea8340 100644
--- a/io/channel-command.c
+++ b/io/channel-command.c
@@ -76,8 +76,8 @@ qio_channel_command_new_spawn(const char *const argv[],
         }
     }
 
-    if ((!stdinnull && pipe(stdinfd) < 0) ||
-        (!stdoutnull && pipe(stdoutfd) < 0)) {
+    if ((!stdinnull && !g_unix_open_pipe(stdinfd, FD_CLOEXEC, NULL)) ||
+        (!stdoutnull && !g_unix_open_pipe(stdoutfd, FD_CLOEXEC, NULL))) {
         error_setg_errno(errp, errno,
                          "Unable to open pipe");
         goto error;
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (15 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 16/26] io: " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-27  1:15   ` Richard Henderson
  2022-04-26  9:27 ` [PATCH v2 18/26] io: make qio_channel_command_new_pid() static marcandre.lureau
                   ` (9 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Thomas Huth, Daniel P. Berrangé,
	Darren Kenny, Jason Wang, Qiuhao Li, Alexander Bulekov,
	Bandan Das, Stefan Hajnoczi, Paolo Bonzini,
	Marc-André Lureau

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 net/tap-bsd.c                      |  4 ++--
 net/tap-linux.c                    |  2 +-
 net/tap-solaris.c                  |  2 +-
 tests/qtest/fuzz/virtio_net_fuzz.c |  2 +-
 tests/unit/test-iov.c              |  4 ++--
 util/oslib-posix.c                 | 16 ++--------------
 6 files changed, 9 insertions(+), 21 deletions(-)

diff --git a/net/tap-bsd.c b/net/tap-bsd.c
index 7e65bd391f0b..005ce05c6e07 100644
--- a/net/tap-bsd.c
+++ b/net/tap-bsd.c
@@ -98,7 +98,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
             return -1;
         }
     }
-    fcntl(fd, F_SETFL, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(fd, true, NULL);
     return fd;
 }
 
@@ -189,7 +189,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
         goto error;
     }
 
-    fcntl(fd, F_SETFL, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(fd, true, NULL);
     return fd;
 
 error:
diff --git a/net/tap-linux.c b/net/tap-linux.c
index 3e24d232e782..304ff45071dd 100644
--- a/net/tap-linux.c
+++ b/net/tap-linux.c
@@ -113,7 +113,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
         return -1;
     }
     pstrcpy(ifname, ifname_size, ifr.ifr_name);
-    fcntl(fd, F_SETFL, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(fd, true, NULL);
     return fd;
 }
 
diff --git a/net/tap-solaris.c b/net/tap-solaris.c
index 79919785c9f6..a44f8805c23e 100644
--- a/net/tap-solaris.c
+++ b/net/tap-solaris.c
@@ -198,7 +198,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
             return -1;
         }
     }
-    fcntl(fd, F_SETFL, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(fd, true, NULL);
     return fd;
 }
 
diff --git a/tests/qtest/fuzz/virtio_net_fuzz.c b/tests/qtest/fuzz/virtio_net_fuzz.c
index 3df78d9c1c2a..c2c15f07f062 100644
--- a/tests/qtest/fuzz/virtio_net_fuzz.c
+++ b/tests/qtest/fuzz/virtio_net_fuzz.c
@@ -151,7 +151,7 @@ static void *virtio_net_test_setup_socket(GString *cmd_line, void *arg)
 {
     int ret = socketpair(PF_UNIX, SOCK_STREAM, 0, sockfds);
     g_assert_cmpint(ret, !=, -1);
-    fcntl(sockfds[0], F_SETFL, O_NONBLOCK);
+    g_unix_set_fd_nonblocking(sockfds[0], true, NULL);
     sockfds_initialized = true;
     g_string_append_printf(cmd_line, " -netdev socket,fd=%d,id=hs0 ",
                            sockfds[1]);
diff --git a/tests/unit/test-iov.c b/tests/unit/test-iov.c
index 0d2ba9ba87d9..93bda00f0e10 100644
--- a/tests/unit/test-iov.c
+++ b/tests/unit/test-iov.c
@@ -186,7 +186,7 @@ static void test_io(void)
 
        close(sv[0]);
        FD_SET(sv[1], &fds);
-       fcntl(sv[1], F_SETFL, O_RDWR|O_NONBLOCK);
+       g_unix_set_fd_nonblocking(sv[1], true, NULL);
        r = g_test_rand_int_range(sz / 2, sz);
        setsockopt(sv[1], SOL_SOCKET, SO_SNDBUF, &r, sizeof(r));
 
@@ -220,7 +220,7 @@ static void test_io(void)
 
        close(sv[1]);
        FD_SET(sv[0], &fds);
-       fcntl(sv[0], F_SETFL, O_RDWR|O_NONBLOCK);
+       g_unix_set_fd_nonblocking(sv[0], true, NULL);
        r = g_test_rand_int_range(sz / 2, sz);
        setsockopt(sv[0], SOL_SOCKET, SO_RCVBUF, &r, sizeof(r));
        usleep(500000);
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 1c231087408f..d75dfad6b625 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -226,24 +226,12 @@ void qemu_anon_ram_free(void *ptr, size_t size)
 
 void qemu_set_block(int fd)
 {
-    int f;
-    f = fcntl(fd, F_GETFL);
-    assert(f != -1);
-    f = fcntl(fd, F_SETFL, f & ~O_NONBLOCK);
-    assert(f != -1);
+    g_unix_set_fd_nonblocking(fd, false, NULL);
 }
 
 int qemu_try_set_nonblock(int fd)
 {
-    int f;
-    f = fcntl(fd, F_GETFL);
-    if (f == -1) {
-        return -errno;
-    }
-    if (fcntl(fd, F_SETFL, f | O_NONBLOCK) == -1) {
-        return -errno;
-    }
-    return 0;
+    return g_unix_set_fd_nonblocking(fd, true, NULL) ? 0 : -1;
 }
 
 void qemu_set_nonblock(int fd)
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 18/26] io: make qio_channel_command_new_pid() static
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (16 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking() marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-27  1:15   ` Richard Henderson
  2022-04-26  9:27 ` [PATCH v2 19/26] chardev: replace qemu_set_nonblock() marcandre.lureau
                   ` (8 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The function isn't used outside of qio_channel_command_new_spawn(),
which is !win32-specific.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/io/channel-command.h | 25 -------------------------
 io/channel-command.c         | 26 ++++++++++++++++++++++----
 2 files changed, 22 insertions(+), 29 deletions(-)

diff --git a/include/io/channel-command.h b/include/io/channel-command.h
index 27e42bdadc71..305ac1d28066 100644
--- a/include/io/channel-command.h
+++ b/include/io/channel-command.h
@@ -45,31 +45,6 @@ struct QIOChannelCommand {
 };
 
 
-/**
- * qio_channel_command_new_pid:
- * @writefd: the FD connected to the command's stdin
- * @readfd: the FD connected to the command's stdout
- * @pid: the PID of the running child command
- * @errp: pointer to a NULL-initialized error object
- *
- * Create a channel for performing I/O with the
- * previously spawned command identified by @pid.
- * The two file descriptors provide the connection
- * to command's stdio streams, either one or which
- * may be -1 to indicate that stream is not open.
- *
- * The channel will take ownership of the process
- * @pid and will kill it when closing the channel.
- * Similarly it will take responsibility for
- * closing the file descriptors @writefd and @readfd.
- *
- * Returns: the command channel object, or NULL on error
- */
-QIOChannelCommand *
-qio_channel_command_new_pid(int writefd,
-                            int readfd,
-                            pid_t pid);
-
 /**
  * qio_channel_command_new_spawn:
  * @argv: the NULL terminated list of command arguments
diff --git a/io/channel-command.c b/io/channel-command.c
index 539685ea8340..0790ac7895c0 100644
--- a/io/channel-command.c
+++ b/io/channel-command.c
@@ -26,8 +26,28 @@
 #include "qemu/sockets.h"
 #include "trace.h"
 
-
-QIOChannelCommand *
+#ifndef WIN32
+/**
+ * qio_channel_command_new_pid:
+ * @writefd: the FD connected to the command's stdin
+ * @readfd: the FD connected to the command's stdout
+ * @pid: the PID of the running child command
+ * @errp: pointer to a NULL-initialized error object
+ *
+ * Create a channel for performing I/O with the
+ * previously spawned command identified by @pid.
+ * The two file descriptors provide the connection
+ * to command's stdio streams, either one or which
+ * may be -1 to indicate that stream is not open.
+ *
+ * The channel will take ownership of the process
+ * @pid and will kill it when closing the channel.
+ * Similarly it will take responsibility for
+ * closing the file descriptors @writefd and @readfd.
+ *
+ * Returns: the command channel object, or NULL on error
+ */
+static QIOChannelCommand *
 qio_channel_command_new_pid(int writefd,
                             int readfd,
                             pid_t pid)
@@ -44,8 +64,6 @@ qio_channel_command_new_pid(int writefd,
     return ioc;
 }
 
-
-#ifndef WIN32
 QIOChannelCommand *
 qio_channel_command_new_spawn(const char *const argv[],
                               int flags,
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 19/26] chardev: replace qemu_set_nonblock()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (17 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 18/26] io: make qio_channel_command_new_pid() static marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:32   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 20/26] io: replace qemu_set{_non}block() marcandre.lureau
                   ` (7 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Those calls are either for non-socket fd, or are POSIX-specific. Use the
dedicated GLib API. (qemu_set_nonblock() is for socket-like)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 chardev/char-fd.c     | 4 ++--
 chardev/char-pty.c    | 5 ++++-
 chardev/char-serial.c | 5 ++++-
 chardev/char-stdio.c  | 5 ++++-
 4 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/chardev/char-fd.c b/chardev/char-fd.c
index 6ec9682b22f2..cf7845484174 100644
--- a/chardev/char-fd.c
+++ b/chardev/char-fd.c
@@ -212,8 +212,8 @@ void qemu_chr_open_fd(Chardev *chr,
     FDChardev *s = FD_CHARDEV(chr);
     g_autofree char *name = NULL;
 
-    if (fd_out >= 0) {
-        qemu_set_nonblock(fd_out);
+    if (fd_out >= 0 && !g_unix_set_fd_nonblocking(fd_out, true, NULL)) {
+        assert(!"Failed to set FD nonblocking");
     }
 
     if (fd_out == fd_in && fd_in >= 0) {
diff --git a/chardev/char-pty.c b/chardev/char-pty.c
index 1e2863f532a8..53f25c6bbd0c 100644
--- a/chardev/char-pty.c
+++ b/chardev/char-pty.c
@@ -324,7 +324,10 @@ static void char_pty_open(Chardev *chr,
     }
 
     close(slave_fd);
-    qemu_set_nonblock(master_fd);
+    if (!g_unix_set_fd_nonblocking(master_fd, true, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return;
+    }
 
     chr->filename = g_strdup_printf("pty:%s", pty_name);
     qemu_printf("char device redirected to %s (label %s)\n",
diff --git a/chardev/char-serial.c b/chardev/char-serial.c
index 7c3d84ae243e..4b0b83d5b45e 100644
--- a/chardev/char-serial.c
+++ b/chardev/char-serial.c
@@ -271,7 +271,10 @@ static void qmp_chardev_open_serial(Chardev *chr,
     if (fd < 0) {
         return;
     }
-    qemu_set_nonblock(fd);
+    if (!g_unix_set_fd_nonblocking(fd, true, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return;
+    }
     tty_serial_init(fd, 115200, 'N', 8, 1);
 
     qemu_chr_open_fd(chr, fd, fd);
diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c
index 403da308c980..3c648678ab14 100644
--- a/chardev/char-stdio.c
+++ b/chardev/char-stdio.c
@@ -103,7 +103,10 @@ static void qemu_chr_open_stdio(Chardev *chr,
     stdio_in_use = true;
     old_fd0_flags = fcntl(0, F_GETFL);
     tcgetattr(0, &oldtty);
-    qemu_set_nonblock(0);
+    if (!g_unix_set_fd_nonblocking(0, true, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return;
+    }
     atexit(term_exit);
 
     memset(&act, 0, sizeof(act));
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 20/26] io: replace qemu_set{_non}block()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (18 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 19/26] chardev: replace qemu_set_nonblock() marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:33   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 21/26] qga: replace qemu_set_nonblock() marcandre.lureau
                   ` (6 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Those calls are non-socket fd, or are POSIX-specific. Use the dedicated
GLib API. (qemu_set_nonblock() is for socket-like)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 io/channel-command.c | 16 +++++++++-------
 io/channel-file.c    | 13 +++++++++----
 2 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/io/channel-command.c b/io/channel-command.c
index 0790ac7895c0..4a1f969aaa8e 100644
--- a/io/channel-command.c
+++ b/io/channel-command.c
@@ -301,16 +301,18 @@ static int qio_channel_command_set_blocking(QIOChannel *ioc,
                                             bool enabled,
                                             Error **errp)
 {
+#ifdef WIN32
+    /* command spawn is not supported on win32 */
+    g_assert_not_reached();
+#else
     QIOChannelCommand *cioc = QIO_CHANNEL_COMMAND(ioc);
 
-    if (enabled) {
-        qemu_set_block(cioc->writefd);
-        qemu_set_block(cioc->readfd);
-    } else {
-        qemu_set_nonblock(cioc->writefd);
-        qemu_set_nonblock(cioc->readfd);
+    if (!g_unix_set_fd_nonblocking(cioc->writefd, !enabled, NULL) ||
+        !g_unix_set_fd_nonblocking(cioc->readfd, !enabled, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return -1;
     }
-
+#endif
     return 0;
 }
 
diff --git a/io/channel-file.c b/io/channel-file.c
index d7cf6d278ff9..d146ace7db9f 100644
--- a/io/channel-file.c
+++ b/io/channel-file.c
@@ -139,14 +139,19 @@ static int qio_channel_file_set_blocking(QIOChannel *ioc,
                                          bool enabled,
                                          Error **errp)
 {
+#ifdef WIN32
+    /* not implemented */
+    error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+    return -1;
+#else
     QIOChannelFile *fioc = QIO_CHANNEL_FILE(ioc);
 
-    if (enabled) {
-        qemu_set_block(fioc->fd);
-    } else {
-        qemu_set_nonblock(fioc->fd);
+    if (!g_unix_set_fd_nonblocking(fioc->fd, !enabled, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return -1;
     }
     return 0;
+#endif
 }
 
 
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 21/26] qga: replace qemu_set_nonblock()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (19 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 20/26] io: replace qemu_set{_non}block() marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:35   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 22/26] hw: " marcandre.lureau
                   ` (5 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Michael Roth

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The call is POSIX-specific. Use the dedicated GLib API.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 qga/commands-posix.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 094487c2c395..78f2f210015d 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -404,7 +404,11 @@ int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *mode,
     /* set fd non-blocking to avoid common use cases (like reading from a
      * named pipe) from hanging the agent
      */
-    qemu_set_nonblock(fileno(fh));
+    if (!g_unix_set_fd_nonblocking(fileno(fh), true, NULL)) {
+        fclose(fh);
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return -1;
+    }
 
     handle = guest_file_handle_add(fh, errp);
     if (handle < 0) {
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 22/26] hw: replace qemu_set_nonblock()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (20 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 21/26] qga: replace qemu_set_nonblock() marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:38   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 23/26] ui: " marcandre.lureau
                   ` (4 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: Marc-André Lureau, Daniel P. Berrangé,
	Gerd Hoffmann, Michael S. Tsirkin

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Those calls are non-socket fd, or are POSIX-specific. Use the dedicated
GLib API. (qemu_set_nonblock() is for socket-like)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/input/virtio-input-host.c |  5 ++++-
 hw/virtio/vhost-vsock.c      | 11 +++++++----
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/hw/input/virtio-input-host.c b/hw/input/virtio-input-host.c
index 137efba57b0f..fea7139382a1 100644
--- a/hw/input/virtio-input-host.c
+++ b/hw/input/virtio-input-host.c
@@ -114,7 +114,10 @@ static void virtio_input_host_realize(DeviceState *dev, Error **errp)
         error_setg_file_open(errp, errno, vih->evdev);
         return;
     }
-    qemu_set_nonblock(vih->fd);
+    if (!g_unix_set_fd_nonblocking(vih->fd, true, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        goto err_close;
+    }
 
     rc = ioctl(vih->fd, EVIOCGVERSION, &ver);
     if (rc < 0) {
diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c
index 433d42d897df..714046210bd3 100644
--- a/hw/virtio/vhost-vsock.c
+++ b/hw/virtio/vhost-vsock.c
@@ -149,9 +149,8 @@ static void vhost_vsock_device_realize(DeviceState *dev, Error **errp)
             return;
         }
 
-        ret = qemu_try_set_nonblock(vhostfd);
-        if (ret < 0) {
-            error_setg_errno(errp, -ret,
+        if (!g_unix_set_fd_nonblocking(vhostfd, true, NULL)) {
+            error_setg_errno(errp, errno,
                              "vhost-vsock: unable to set non-blocking mode");
             return;
         }
@@ -163,7 +162,11 @@ static void vhost_vsock_device_realize(DeviceState *dev, Error **errp)
             return;
         }
 
-        qemu_set_nonblock(vhostfd);
+        if (!g_unix_set_fd_nonblocking(vhostfd, true, NULL)) {
+            error_setg_errno(errp, errno,
+                             "Failed to set FD nonblocking");
+            return;
+        }
     }
 
     vhost_vsock_common_realize(vdev, "vhost-vsock");
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 23/26] ui: replace qemu_set_nonblock()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (21 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 22/26] hw: " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:41   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 24/26] net: " marcandre.lureau
                   ` (3 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Daniel P. Berrangé, Gerd Hoffmann

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The call is POSIX-specific. Use the dedicated GLib API.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 ui/input-linux.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/ui/input-linux.c b/ui/input-linux.c
index 05c0c988199a..e572a2e905b9 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -316,7 +316,10 @@ static void input_linux_complete(UserCreatable *uc, Error **errp)
         error_setg_file_open(errp, errno, il->evdev);
         return;
     }
-    qemu_set_nonblock(il->fd);
+    if (!g_unix_set_fd_nonblocking(il->fd, true, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return;
+    }
 
     rc = ioctl(il->fd, EVIOCGVERSION, &ver);
     if (rc < 0) {
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 24/26] net: replace qemu_set_nonblock()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (22 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 23/26] ui: " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-05-03 10:42   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 25/26] tests: " marcandre.lureau
                   ` (2 subsequent siblings)
  26 siblings, 1 reply; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marc-André Lureau, Jason Wang, Daniel P. Berrangé

From: Marc-André Lureau <marcandre.lureau@redhat.com>

Those calls are POSIX-specific. Use the dedicated GLib
API. (qemu_set_nonblock() is for socket-like)

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 net/tap.c | 33 +++++++++++++++++++--------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/net/tap.c b/net/tap.c
index 6190fa699d2f..b3ddfd4a74b1 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -619,7 +619,10 @@ int net_init_bridge(const Netdev *netdev, const char *name,
         return -1;
     }
 
-    qemu_set_nonblock(fd);
+    if (!g_unix_set_fd_nonblocking(fd, true, NULL)) {
+        error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+        return -1;
+    }
     vnet_hdr = tap_probe_vnet_hdr(fd, errp);
     if (vnet_hdr < 0) {
         close(fd);
@@ -716,8 +719,6 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
         }
 
         if (vhostfdname) {
-            int ret;
-
             vhostfd = monitor_fd_param(monitor_cur(), vhostfdname, &err);
             if (vhostfd == -1) {
                 if (tap->has_vhostforce && tap->vhostforce) {
@@ -727,9 +728,8 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
                 }
                 return;
             }
-            ret = qemu_try_set_nonblock(vhostfd);
-            if (ret < 0) {
-                error_setg_errno(errp, -ret, "%s: Can't use file descriptor %d",
+            if (!g_unix_set_fd_nonblocking(vhostfd, true, NULL)) {
+                error_setg_errno(errp, errno, "%s: Can't use file descriptor %d",
                                  name, fd);
                 return;
             }
@@ -745,7 +745,10 @@ static void net_init_tap_one(const NetdevTapOptions *tap, NetClientState *peer,
                 }
                 return;
             }
-            qemu_set_nonblock(vhostfd);
+            if (!g_unix_set_fd_nonblocking(vhostfd, true, NULL)) {
+                error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+                return;
+            }
         }
         options.opaque = (void *)(uintptr_t)vhostfd;
         options.nvqs = 2;
@@ -832,9 +835,8 @@ int net_init_tap(const Netdev *netdev, const char *name,
             return -1;
         }
 
-        ret = qemu_try_set_nonblock(fd);
-        if (ret < 0) {
-            error_setg_errno(errp, -ret, "%s: Can't use file descriptor %d",
+        if (!g_unix_set_fd_nonblocking(fd, true, NULL)) {
+            error_setg_errno(errp, errno, "%s: Can't use file descriptor %d",
                              name, fd);
             close(fd);
             return -1;
@@ -889,9 +891,9 @@ int net_init_tap(const Netdev *netdev, const char *name,
                 goto free_fail;
             }
 
-            ret = qemu_try_set_nonblock(fd);
-            if (ret < 0) {
-                error_setg_errno(errp, -ret, "%s: Can't use file descriptor %d",
+            ret = g_unix_set_fd_nonblocking(fd, true, NULL);
+            if (!ret) {
+                error_setg_errno(errp, errno, "%s: Can't use file descriptor %d",
                                  name, fd);
                 goto free_fail;
             }
@@ -946,7 +948,10 @@ free_fail:
             return -1;
         }
 
-        qemu_set_nonblock(fd);
+        if (!g_unix_set_fd_nonblocking(fd, true, NULL)) {
+            error_setg_errno(errp, errno, "Failed to set FD nonblocking");
+            return -1;
+        }
         vnet_hdr = tap_probe_vnet_hdr(fd, errp);
         if (vnet_hdr < 0) {
             close(fd);
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 25/26] tests: replace qemu_set_nonblock()
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (23 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 24/26] net: " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-27  9:41   ` Thomas Huth
  2022-05-03 10:44   ` Daniel P. Berrangé
  2022-04-26  9:27 ` [PATCH v2 26/26] util: rename qemu_*block() socket functions marcandre.lureau
  2022-05-02  7:45 ` [PATCH v2 00/26] Misc cleanups Marc-André Lureau
  26 siblings, 2 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: Laurent Vivier, Marc-André Lureau, Thomas Huth,
	Daniel P. Berrangé,
	Paolo Bonzini

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The call is POSIX-specific. Use the dedicated GLib API.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 tests/qtest/vhost-user-test.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c
index ee30f5479648..a2cec8768462 100644
--- a/tests/qtest/vhost-user-test.c
+++ b/tests/qtest/vhost-user-test.c
@@ -302,6 +302,7 @@ static int chr_can_read(void *opaque)
 
 static void chr_read(void *opaque, const uint8_t *buf, int size)
 {
+    g_autoptr(GError) err = NULL;
     TestServer *s = opaque;
     CharBackend *chr = &s->chr;
     VhostUserMsg msg;
@@ -394,7 +395,8 @@ static void chr_read(void *opaque, const uint8_t *buf, int size)
          * The receive function forces it to be blocking,
          * so revert it back to non-blocking.
          */
-        qemu_set_nonblock(fd);
+        g_unix_set_fd_nonblocking(fd, true, &err);
+        g_assert_no_error(err);
         break;
 
     case VHOST_USER_SET_LOG_BASE:
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* [PATCH v2 26/26] util: rename qemu_*block() socket functions
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (24 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 25/26] tests: " marcandre.lureau
@ 2022-04-26  9:27 ` marcandre.lureau
  2022-04-26 10:28   ` Marc-André Lureau
  2022-04-26 14:33   ` Stefan Hajnoczi
  2022-05-02  7:45 ` [PATCH v2 00/26] Misc cleanups Marc-André Lureau
  26 siblings, 2 replies; 66+ messages in thread
From: marcandre.lureau @ 2022-04-26  9:27 UTC (permalink / raw)
  To: qemu-devel
  Cc: Daniel P. Berrangé,
	Michael S. Tsirkin, Michael Roth, Jason Wang, Coiby Xu,
	Paolo Bonzini, Marc-André Lureau, Stefan Weil

From: Marc-André Lureau <marcandre.lureau@redhat.com>

The qemu_*block() functions are meant to be be used with sockets (the
win32 implementation expects SOCKET)

Over time, those functions where used with Win32 SOCKET or
file-descriptors interchangeably. But for portability, they must only be
used with socket-like file-descriptors. FDs can use
g_unix_set_fd_nonblocking() instead.

Rename the functions with "socket" in the name to prevent bad usages.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 include/qemu/sockets.h                  |  6 +++---
 chardev/char-socket.c                   |  2 +-
 contrib/ivshmem-server/ivshmem-server.c |  2 +-
 hw/hyperv/syndbg.c                      |  2 +-
 hw/virtio/vhost-user.c                  |  2 +-
 io/channel-socket.c                     |  6 +++---
 net/l2tpv3.c                            |  2 +-
 net/socket.c                            | 10 +++++-----
 qga/channel-posix.c                     |  2 +-
 tests/unit/socket-helpers.c             |  2 +-
 tests/unit/test-crypto-tlssession.c     |  8 ++++----
 util/oslib-posix.c                      |  8 ++++----
 util/oslib-win32.c                      |  8 ++++----
 util/vhost-user-server.c                |  4 ++--
 14 files changed, 32 insertions(+), 32 deletions(-)

diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h
index 0c34bf23987e..038faa157f59 100644
--- a/include/qemu/sockets.h
+++ b/include/qemu/sockets.h
@@ -17,9 +17,9 @@ int qemu_socket(int domain, int type, int protocol);
 int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
 int socket_set_cork(int fd, int v);
 int socket_set_nodelay(int fd);
-void qemu_set_block(int fd);
-int qemu_try_set_nonblock(int fd);
-void qemu_set_nonblock(int fd);
+void qemu_socket_set_block(int fd);
+int qemu_socket_try_set_nonblock(int fd);
+void qemu_socket_set_nonblock(int fd);
 int socket_set_fast_reuse(int fd);
 
 #ifdef WIN32
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index fab2d791d43d..dc4e218eeb6a 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -311,7 +311,7 @@ static ssize_t tcp_chr_recv(Chardev *chr, char *buf, size_t len)
         }
 
         /* O_NONBLOCK is preserved across SCM_RIGHTS so reset it */
-        qemu_set_block(fd);
+        qemu_socket_set_block(fd);
 
 #ifndef MSG_CMSG_CLOEXEC
         qemu_set_cloexec(fd);
diff --git a/contrib/ivshmem-server/ivshmem-server.c b/contrib/ivshmem-server/ivshmem-server.c
index 39a6ffdb5df9..2f3c7320a678 100644
--- a/contrib/ivshmem-server/ivshmem-server.c
+++ b/contrib/ivshmem-server/ivshmem-server.c
@@ -146,7 +146,7 @@ ivshmem_server_handle_new_conn(IvshmemServer *server)
         return -1;
     }
 
-    qemu_set_nonblock(newfd);
+    qemu_socket_set_nonblock(newfd);
     IVSHMEM_SERVER_DEBUG(server, "accept()=%d\n", newfd);
 
     /* allocate new structure for this peer */
diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c
index ebb8a29f7838..16d04cfdc669 100644
--- a/hw/hyperv/syndbg.c
+++ b/hw/hyperv/syndbg.c
@@ -334,7 +334,7 @@ static void hv_syndbg_realize(DeviceState *dev, Error **errp)
         return;
     }
 
-    qemu_set_nonblock(syndbg->socket);
+    qemu_socket_set_nonblock(syndbg->socket);
 
     syndbg->servaddr.sin_port = htons(syndbg->host_port);
     syndbg->servaddr.sin_family = AF_INET;
diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
index 9c4f84f35f61..a80315ecfc40 100644
--- a/hw/virtio/vhost-user.c
+++ b/hw/virtio/vhost-user.c
@@ -1826,7 +1826,7 @@ static int vhost_user_postcopy_advise(struct vhost_dev *dev, Error **errp)
         error_setg(errp, "%s: Failed to get ufd", __func__);
         return -EIO;
     }
-    qemu_set_nonblock(ufd);
+    qemu_socket_set_nonblock(ufd);
 
     /* register ufd with userfault thread */
     u->postcopy_fd.fd = ufd;
diff --git a/io/channel-socket.c b/io/channel-socket.c
index 9f5ddf68b687..e531d7bd2af5 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -460,7 +460,7 @@ static void qio_channel_socket_copy_fds(struct msghdr *msg,
             }
 
             /* O_NONBLOCK is preserved across SCM_RIGHTS so reset it */
-            qemu_set_block(fd);
+            qemu_socket_set_block(fd);
 
 #ifndef MSG_CMSG_CLOEXEC
             qemu_set_cloexec(fd);
@@ -665,9 +665,9 @@ qio_channel_socket_set_blocking(QIOChannel *ioc,
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
 
     if (enabled) {
-        qemu_set_block(sioc->fd);
+        qemu_socket_set_block(sioc->fd);
     } else {
-        qemu_set_nonblock(sioc->fd);
+        qemu_socket_set_nonblock(sioc->fd);
     }
     return 0;
 }
diff --git a/net/l2tpv3.c b/net/l2tpv3.c
index b8faa8796c8f..af373e5c300c 100644
--- a/net/l2tpv3.c
+++ b/net/l2tpv3.c
@@ -716,7 +716,7 @@ int net_init_l2tpv3(const Netdev *netdev,
     s->vec = g_new(struct iovec, MAX_L2TPV3_IOVCNT);
     s->header_buf = g_malloc(s->header_size);
 
-    qemu_set_nonblock(fd);
+    qemu_socket_set_nonblock(fd);
 
     s->fd = fd;
     s->counter = 0;
diff --git a/net/socket.c b/net/socket.c
index ea5220a2eb51..bfd8596250c4 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -297,7 +297,7 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr,
         }
     }
 
-    qemu_set_nonblock(fd);
+    qemu_socket_set_nonblock(fd);
     return fd;
 fail:
     if (fd >= 0)
@@ -522,7 +522,7 @@ static int net_socket_listen_init(NetClientState *peer,
         error_setg_errno(errp, errno, "can't create stream socket");
         return -1;
     }
-    qemu_set_nonblock(fd);
+    qemu_socket_set_nonblock(fd);
 
     socket_set_fast_reuse(fd);
 
@@ -570,7 +570,7 @@ static int net_socket_connect_init(NetClientState *peer,
         error_setg_errno(errp, errno, "can't create stream socket");
         return -1;
     }
-    qemu_set_nonblock(fd);
+    qemu_socket_set_nonblock(fd);
 
     connected = 0;
     for(;;) {
@@ -688,7 +688,7 @@ static int net_socket_udp_init(NetClientState *peer,
         closesocket(fd);
         return -1;
     }
-    qemu_set_nonblock(fd);
+    qemu_socket_set_nonblock(fd);
 
     s = net_socket_fd_init(peer, model, name, fd, 0, NULL, errp);
     if (!s) {
@@ -730,7 +730,7 @@ int net_init_socket(const Netdev *netdev, const char *name,
         if (fd == -1) {
             return -1;
         }
-        ret = qemu_try_set_nonblock(fd);
+        ret = qemu_socket_try_set_nonblock(fd);
         if (ret < 0) {
             error_setg_errno(errp, -ret, "%s: Can't use file descriptor %d",
                              name, fd);
diff --git a/qga/channel-posix.c b/qga/channel-posix.c
index 03739753607d..a996858e2492 100644
--- a/qga/channel-posix.c
+++ b/qga/channel-posix.c
@@ -34,7 +34,7 @@ static gboolean ga_channel_listen_accept(GIOChannel *channel,
         g_warning("error converting fd to gsocket: %s", strerror(errno));
         goto out;
     }
-    qemu_set_nonblock(client_fd);
+    qemu_socket_set_nonblock(client_fd);
     ret = ga_channel_client_add(c, client_fd);
     if (ret) {
         g_warning("error setting up connection");
diff --git a/tests/unit/socket-helpers.c b/tests/unit/socket-helpers.c
index 0a9e090a68dd..5af4de513bb6 100644
--- a/tests/unit/socket-helpers.c
+++ b/tests/unit/socket-helpers.c
@@ -88,7 +88,7 @@ static int socket_can_bind_connect(const char *hostname, int family)
         goto cleanup;
     }
 
-    qemu_set_nonblock(cfd);
+    qemu_socket_set_nonblock(cfd);
     if (connect(cfd, (struct sockaddr *)&ss, sslen) < 0) {
         if (errno == EINPROGRESS) {
             check_soerr = true;
diff --git a/tests/unit/test-crypto-tlssession.c b/tests/unit/test-crypto-tlssession.c
index 5f0da9192c53..a266dc32dac9 100644
--- a/tests/unit/test-crypto-tlssession.c
+++ b/tests/unit/test-crypto-tlssession.c
@@ -90,8 +90,8 @@ static void test_crypto_tls_session_psk(void)
      * thread, so we need these non-blocking to avoid deadlock
      * of ourselves
      */
-    qemu_set_nonblock(channel[0]);
-    qemu_set_nonblock(channel[1]);
+    qemu_socket_set_nonblock(channel[0]);
+    qemu_socket_set_nonblock(channel[1]);
 
     clientCreds = test_tls_creds_psk_create(
         QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT,
@@ -244,8 +244,8 @@ static void test_crypto_tls_session_x509(const void *opaque)
      * thread, so we need these non-blocking to avoid deadlock
      * of ourselves
      */
-    qemu_set_nonblock(channel[0]);
-    qemu_set_nonblock(channel[1]);
+    qemu_socket_set_nonblock(channel[0]);
+    qemu_socket_set_nonblock(channel[1]);
 
 #define CLIENT_CERT_DIR "tests/test-crypto-tlssession-client/"
 #define SERVER_CERT_DIR "tests/test-crypto-tlssession-server/"
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index d75dfad6b625..7ee612f3725c 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -224,20 +224,20 @@ void qemu_anon_ram_free(void *ptr, size_t size)
     qemu_ram_munmap(-1, ptr, size);
 }
 
-void qemu_set_block(int fd)
+void qemu_socket_set_block(int fd)
 {
     g_unix_set_fd_nonblocking(fd, false, NULL);
 }
 
-int qemu_try_set_nonblock(int fd)
+int qemu_socket_try_set_nonblock(int fd)
 {
     return g_unix_set_fd_nonblocking(fd, true, NULL) ? 0 : -1;
 }
 
-void qemu_set_nonblock(int fd)
+void qemu_socket_set_nonblock(int fd)
 {
     int f;
-    f = qemu_try_set_nonblock(fd);
+    f = qemu_socket_try_set_nonblock(fd);
     assert(f == 0);
 }
 
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 8f8523693c02..5723d3eb4c5a 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -181,14 +181,14 @@ static int socket_error(void)
     }
 }
 
-void qemu_set_block(int fd)
+void qemu_socket_set_block(int fd)
 {
     unsigned long opt = 0;
     WSAEventSelect(fd, NULL, 0);
     ioctlsocket(fd, FIONBIO, &opt);
 }
 
-int qemu_try_set_nonblock(int fd)
+int qemu_socket_try_set_nonblock(int fd)
 {
     unsigned long opt = 1;
     if (ioctlsocket(fd, FIONBIO, &opt) != NO_ERROR) {
@@ -197,9 +197,9 @@ int qemu_try_set_nonblock(int fd)
     return 0;
 }
 
-void qemu_set_nonblock(int fd)
+void qemu_socket_set_nonblock(int fd)
 {
-    (void)qemu_try_set_nonblock(fd);
+    (void)qemu_socket_try_set_nonblock(fd);
 }
 
 int socket_set_fast_reuse(int fd)
diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c
index f66fbba7108b..232984ace6d7 100644
--- a/util/vhost-user-server.c
+++ b/util/vhost-user-server.c
@@ -65,7 +65,7 @@ static void vmsg_unblock_fds(VhostUserMsg *vmsg)
 {
     int i;
     for (i = 0; i < vmsg->fd_num; i++) {
-        qemu_set_nonblock(vmsg->fds[i]);
+        qemu_socket_set_nonblock(vmsg->fds[i]);
     }
 }
 
@@ -270,7 +270,7 @@ set_watch(VuDev *vu_dev, int fd, int vu_evt,
 
         vu_fd_watch->fd = fd;
         vu_fd_watch->cb = cb;
-        qemu_set_nonblock(fd);
+        qemu_socket_set_nonblock(fd);
         aio_set_fd_handler(server->ioc->ctx, fd, true, kick_handler,
                            NULL, NULL, NULL, vu_fd_watch);
         vu_fd_watch->vu_dev = vu_dev;
-- 
2.36.0



^ permalink raw reply related	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 07/26] tests: make libqmp buildable for win32
  2022-04-26  9:26 ` [PATCH v2 07/26] tests: make libqmp buildable for win32 marcandre.lureau
@ 2022-04-26  9:32   ` Thomas Huth
  2022-04-26 10:25     ` Marc-André Lureau
  0 siblings, 1 reply; 66+ messages in thread
From: Thomas Huth @ 2022-04-26  9:32 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé

On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   tests/qtest/libqmp.h |  2 ++
>   tests/qtest/libqmp.c | 37 +++++++++++++++++++++++++++++++------
>   2 files changed, 33 insertions(+), 6 deletions(-)
> 
> diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
> index 94aa97328a17..772f18b73ba3 100644
> --- a/tests/qtest/libqmp.h
> +++ b/tests/qtest/libqmp.h
> @@ -20,8 +20,10 @@
>   #include "qapi/qmp/qdict.h"
>   
>   QDict *qmp_fd_receive(int fd);
> +#ifndef G_OS_WIN32
>   void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
>                         const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
> +#endif
>   void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
>   void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
>   void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
> diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
> index 0358b8313dc4..5f451ebee796 100644
> --- a/tests/qtest/libqmp.c
> +++ b/tests/qtest/libqmp.c
> @@ -15,9 +15,15 @@
>    */
>   
>   #include "qemu/osdep.h"
> -
>   #include "libqmp.h"
>   
> +#include <unistd.h>
> +#include <stdlib.h>

unistd.h and stdlib.h should have been added by osdep.h already, so please 
remove these two lines.

  Thomas



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 07/26] tests: make libqmp buildable for win32
  2022-04-26  9:32   ` Thomas Huth
@ 2022-04-26 10:25     ` Marc-André Lureau
  2022-04-26 10:29       ` Thomas Huth
  0 siblings, 1 reply; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-26 10:25 UTC (permalink / raw)
  To: Thomas Huth
  Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé, qemu-devel

Hi

On Tue, Apr 26, 2022 at 1:32 PM Thomas Huth <thuth@redhat.com> wrote:
>
> On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >   tests/qtest/libqmp.h |  2 ++
> >   tests/qtest/libqmp.c | 37 +++++++++++++++++++++++++++++++------
> >   2 files changed, 33 insertions(+), 6 deletions(-)
> >
> > diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
> > index 94aa97328a17..772f18b73ba3 100644
> > --- a/tests/qtest/libqmp.h
> > +++ b/tests/qtest/libqmp.h
> > @@ -20,8 +20,10 @@
> >   #include "qapi/qmp/qdict.h"
> >
> >   QDict *qmp_fd_receive(int fd);
> > +#ifndef G_OS_WIN32
> >   void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
> >                         const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
> > +#endif
> >   void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
> >   void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
> >   void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
> > diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
> > index 0358b8313dc4..5f451ebee796 100644
> > --- a/tests/qtest/libqmp.c
> > +++ b/tests/qtest/libqmp.c
> > @@ -15,9 +15,15 @@
> >    */
> >
> >   #include "qemu/osdep.h"
> > -
> >   #include "libqmp.h"
> >
> > +#include <unistd.h>
> > +#include <stdlib.h>
>
> unistd.h and stdlib.h should have been added by osdep.h already, so please
> remove these two lines.

Right  (it will be part of the follow-up series, moving it to a
standalone project). Ack with that?



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 26/26] util: rename qemu_*block() socket functions
  2022-04-26  9:27 ` [PATCH v2 26/26] util: rename qemu_*block() socket functions marcandre.lureau
@ 2022-04-26 10:28   ` Marc-André Lureau
  2022-04-26 14:33   ` Stefan Hajnoczi
  1 sibling, 0 replies; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-26 10:28 UTC (permalink / raw)
  To: qemu-devel, Stefan Hajnoczi
  Cc: Daniel P. Berrangé,
	Michael S. Tsirkin, Stefan Weil, Jason Wang, Coiby Xu,
	Michael Roth, Paolo Bonzini

Hi

On Tue, Apr 26, 2022 at 1:30 PM <marcandre.lureau@redhat.com> wrote:
>
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> The qemu_*block() functions are meant to be be used with sockets (the
> win32 implementation expects SOCKET)
>
> Over time, those functions where used with Win32 SOCKET or
> file-descriptors interchangeably. But for portability, they must only be
> used with socket-like file-descriptors. FDs can use
> g_unix_set_fd_nonblocking() instead.
>
> Rename the functions with "socket" in the name to prevent bad usages.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

After digging a bit, I realize this is reverting commit
f9e8cacc5557e4372401da74141f833fcacda038:

    oslib-posix: rename socket_set_nonblock() to qemu_set_nonblock()

    The fcntl(fd, F_SETFL, O_NONBLOCK) flag is not specific to sockets.
    Rename to qemu_set_nonblock() just like qemu_set_cloexec().

    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>

Stefan, please take a look.


> ---
>  include/qemu/sockets.h                  |  6 +++---
>  chardev/char-socket.c                   |  2 +-
>  contrib/ivshmem-server/ivshmem-server.c |  2 +-
>  hw/hyperv/syndbg.c                      |  2 +-
>  hw/virtio/vhost-user.c                  |  2 +-
>  io/channel-socket.c                     |  6 +++---
>  net/l2tpv3.c                            |  2 +-
>  net/socket.c                            | 10 +++++-----
>  qga/channel-posix.c                     |  2 +-
>  tests/unit/socket-helpers.c             |  2 +-
>  tests/unit/test-crypto-tlssession.c     |  8 ++++----
>  util/oslib-posix.c                      |  8 ++++----
>  util/oslib-win32.c                      |  8 ++++----
>  util/vhost-user-server.c                |  4 ++--
>  14 files changed, 32 insertions(+), 32 deletions(-)
>
> diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h
> index 0c34bf23987e..038faa157f59 100644
> --- a/include/qemu/sockets.h
> +++ b/include/qemu/sockets.h
> @@ -17,9 +17,9 @@ int qemu_socket(int domain, int type, int protocol);
>  int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
>  int socket_set_cork(int fd, int v);
>  int socket_set_nodelay(int fd);
> -void qemu_set_block(int fd);
> -int qemu_try_set_nonblock(int fd);
> -void qemu_set_nonblock(int fd);
> +void qemu_socket_set_block(int fd);
> +int qemu_socket_try_set_nonblock(int fd);
> +void qemu_socket_set_nonblock(int fd);
>  int socket_set_fast_reuse(int fd);
>
>  #ifdef WIN32
> diff --git a/chardev/char-socket.c b/chardev/char-socket.c
> index fab2d791d43d..dc4e218eeb6a 100644
> --- a/chardev/char-socket.c
> +++ b/chardev/char-socket.c
> @@ -311,7 +311,7 @@ static ssize_t tcp_chr_recv(Chardev *chr, char *buf, size_t len)
>          }
>
>          /* O_NONBLOCK is preserved across SCM_RIGHTS so reset it */
> -        qemu_set_block(fd);
> +        qemu_socket_set_block(fd);
>
>  #ifndef MSG_CMSG_CLOEXEC
>          qemu_set_cloexec(fd);
> diff --git a/contrib/ivshmem-server/ivshmem-server.c b/contrib/ivshmem-server/ivshmem-server.c
> index 39a6ffdb5df9..2f3c7320a678 100644
> --- a/contrib/ivshmem-server/ivshmem-server.c
> +++ b/contrib/ivshmem-server/ivshmem-server.c
> @@ -146,7 +146,7 @@ ivshmem_server_handle_new_conn(IvshmemServer *server)
>          return -1;
>      }
>
> -    qemu_set_nonblock(newfd);
> +    qemu_socket_set_nonblock(newfd);
>      IVSHMEM_SERVER_DEBUG(server, "accept()=%d\n", newfd);
>
>      /* allocate new structure for this peer */
> diff --git a/hw/hyperv/syndbg.c b/hw/hyperv/syndbg.c
> index ebb8a29f7838..16d04cfdc669 100644
> --- a/hw/hyperv/syndbg.c
> +++ b/hw/hyperv/syndbg.c
> @@ -334,7 +334,7 @@ static void hv_syndbg_realize(DeviceState *dev, Error **errp)
>          return;
>      }
>
> -    qemu_set_nonblock(syndbg->socket);
> +    qemu_socket_set_nonblock(syndbg->socket);
>
>      syndbg->servaddr.sin_port = htons(syndbg->host_port);
>      syndbg->servaddr.sin_family = AF_INET;
> diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c
> index 9c4f84f35f61..a80315ecfc40 100644
> --- a/hw/virtio/vhost-user.c
> +++ b/hw/virtio/vhost-user.c
> @@ -1826,7 +1826,7 @@ static int vhost_user_postcopy_advise(struct vhost_dev *dev, Error **errp)
>          error_setg(errp, "%s: Failed to get ufd", __func__);
>          return -EIO;
>      }
> -    qemu_set_nonblock(ufd);
> +    qemu_socket_set_nonblock(ufd);
>
>      /* register ufd with userfault thread */
>      u->postcopy_fd.fd = ufd;
> diff --git a/io/channel-socket.c b/io/channel-socket.c
> index 9f5ddf68b687..e531d7bd2af5 100644
> --- a/io/channel-socket.c
> +++ b/io/channel-socket.c
> @@ -460,7 +460,7 @@ static void qio_channel_socket_copy_fds(struct msghdr *msg,
>              }
>
>              /* O_NONBLOCK is preserved across SCM_RIGHTS so reset it */
> -            qemu_set_block(fd);
> +            qemu_socket_set_block(fd);
>
>  #ifndef MSG_CMSG_CLOEXEC
>              qemu_set_cloexec(fd);
> @@ -665,9 +665,9 @@ qio_channel_socket_set_blocking(QIOChannel *ioc,
>      QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
>
>      if (enabled) {
> -        qemu_set_block(sioc->fd);
> +        qemu_socket_set_block(sioc->fd);
>      } else {
> -        qemu_set_nonblock(sioc->fd);
> +        qemu_socket_set_nonblock(sioc->fd);
>      }
>      return 0;
>  }
> diff --git a/net/l2tpv3.c b/net/l2tpv3.c
> index b8faa8796c8f..af373e5c300c 100644
> --- a/net/l2tpv3.c
> +++ b/net/l2tpv3.c
> @@ -716,7 +716,7 @@ int net_init_l2tpv3(const Netdev *netdev,
>      s->vec = g_new(struct iovec, MAX_L2TPV3_IOVCNT);
>      s->header_buf = g_malloc(s->header_size);
>
> -    qemu_set_nonblock(fd);
> +    qemu_socket_set_nonblock(fd);
>
>      s->fd = fd;
>      s->counter = 0;
> diff --git a/net/socket.c b/net/socket.c
> index ea5220a2eb51..bfd8596250c4 100644
> --- a/net/socket.c
> +++ b/net/socket.c
> @@ -297,7 +297,7 @@ static int net_socket_mcast_create(struct sockaddr_in *mcastaddr,
>          }
>      }
>
> -    qemu_set_nonblock(fd);
> +    qemu_socket_set_nonblock(fd);
>      return fd;
>  fail:
>      if (fd >= 0)
> @@ -522,7 +522,7 @@ static int net_socket_listen_init(NetClientState *peer,
>          error_setg_errno(errp, errno, "can't create stream socket");
>          return -1;
>      }
> -    qemu_set_nonblock(fd);
> +    qemu_socket_set_nonblock(fd);
>
>      socket_set_fast_reuse(fd);
>
> @@ -570,7 +570,7 @@ static int net_socket_connect_init(NetClientState *peer,
>          error_setg_errno(errp, errno, "can't create stream socket");
>          return -1;
>      }
> -    qemu_set_nonblock(fd);
> +    qemu_socket_set_nonblock(fd);
>
>      connected = 0;
>      for(;;) {
> @@ -688,7 +688,7 @@ static int net_socket_udp_init(NetClientState *peer,
>          closesocket(fd);
>          return -1;
>      }
> -    qemu_set_nonblock(fd);
> +    qemu_socket_set_nonblock(fd);
>
>      s = net_socket_fd_init(peer, model, name, fd, 0, NULL, errp);
>      if (!s) {
> @@ -730,7 +730,7 @@ int net_init_socket(const Netdev *netdev, const char *name,
>          if (fd == -1) {
>              return -1;
>          }
> -        ret = qemu_try_set_nonblock(fd);
> +        ret = qemu_socket_try_set_nonblock(fd);
>          if (ret < 0) {
>              error_setg_errno(errp, -ret, "%s: Can't use file descriptor %d",
>                               name, fd);
> diff --git a/qga/channel-posix.c b/qga/channel-posix.c
> index 03739753607d..a996858e2492 100644
> --- a/qga/channel-posix.c
> +++ b/qga/channel-posix.c
> @@ -34,7 +34,7 @@ static gboolean ga_channel_listen_accept(GIOChannel *channel,
>          g_warning("error converting fd to gsocket: %s", strerror(errno));
>          goto out;
>      }
> -    qemu_set_nonblock(client_fd);
> +    qemu_socket_set_nonblock(client_fd);
>      ret = ga_channel_client_add(c, client_fd);
>      if (ret) {
>          g_warning("error setting up connection");
> diff --git a/tests/unit/socket-helpers.c b/tests/unit/socket-helpers.c
> index 0a9e090a68dd..5af4de513bb6 100644
> --- a/tests/unit/socket-helpers.c
> +++ b/tests/unit/socket-helpers.c
> @@ -88,7 +88,7 @@ static int socket_can_bind_connect(const char *hostname, int family)
>          goto cleanup;
>      }
>
> -    qemu_set_nonblock(cfd);
> +    qemu_socket_set_nonblock(cfd);
>      if (connect(cfd, (struct sockaddr *)&ss, sslen) < 0) {
>          if (errno == EINPROGRESS) {
>              check_soerr = true;
> diff --git a/tests/unit/test-crypto-tlssession.c b/tests/unit/test-crypto-tlssession.c
> index 5f0da9192c53..a266dc32dac9 100644
> --- a/tests/unit/test-crypto-tlssession.c
> +++ b/tests/unit/test-crypto-tlssession.c
> @@ -90,8 +90,8 @@ static void test_crypto_tls_session_psk(void)
>       * thread, so we need these non-blocking to avoid deadlock
>       * of ourselves
>       */
> -    qemu_set_nonblock(channel[0]);
> -    qemu_set_nonblock(channel[1]);
> +    qemu_socket_set_nonblock(channel[0]);
> +    qemu_socket_set_nonblock(channel[1]);
>
>      clientCreds = test_tls_creds_psk_create(
>          QCRYPTO_TLS_CREDS_ENDPOINT_CLIENT,
> @@ -244,8 +244,8 @@ static void test_crypto_tls_session_x509(const void *opaque)
>       * thread, so we need these non-blocking to avoid deadlock
>       * of ourselves
>       */
> -    qemu_set_nonblock(channel[0]);
> -    qemu_set_nonblock(channel[1]);
> +    qemu_socket_set_nonblock(channel[0]);
> +    qemu_socket_set_nonblock(channel[1]);
>
>  #define CLIENT_CERT_DIR "tests/test-crypto-tlssession-client/"
>  #define SERVER_CERT_DIR "tests/test-crypto-tlssession-server/"
> diff --git a/util/oslib-posix.c b/util/oslib-posix.c
> index d75dfad6b625..7ee612f3725c 100644
> --- a/util/oslib-posix.c
> +++ b/util/oslib-posix.c
> @@ -224,20 +224,20 @@ void qemu_anon_ram_free(void *ptr, size_t size)
>      qemu_ram_munmap(-1, ptr, size);
>  }
>
> -void qemu_set_block(int fd)
> +void qemu_socket_set_block(int fd)
>  {
>      g_unix_set_fd_nonblocking(fd, false, NULL);
>  }
>
> -int qemu_try_set_nonblock(int fd)
> +int qemu_socket_try_set_nonblock(int fd)
>  {
>      return g_unix_set_fd_nonblocking(fd, true, NULL) ? 0 : -1;
>  }
>
> -void qemu_set_nonblock(int fd)
> +void qemu_socket_set_nonblock(int fd)
>  {
>      int f;
> -    f = qemu_try_set_nonblock(fd);
> +    f = qemu_socket_try_set_nonblock(fd);
>      assert(f == 0);
>  }
>
> diff --git a/util/oslib-win32.c b/util/oslib-win32.c
> index 8f8523693c02..5723d3eb4c5a 100644
> --- a/util/oslib-win32.c
> +++ b/util/oslib-win32.c
> @@ -181,14 +181,14 @@ static int socket_error(void)
>      }
>  }
>
> -void qemu_set_block(int fd)
> +void qemu_socket_set_block(int fd)
>  {
>      unsigned long opt = 0;
>      WSAEventSelect(fd, NULL, 0);
>      ioctlsocket(fd, FIONBIO, &opt);
>  }
>
> -int qemu_try_set_nonblock(int fd)
> +int qemu_socket_try_set_nonblock(int fd)
>  {
>      unsigned long opt = 1;
>      if (ioctlsocket(fd, FIONBIO, &opt) != NO_ERROR) {
> @@ -197,9 +197,9 @@ int qemu_try_set_nonblock(int fd)
>      return 0;
>  }
>
> -void qemu_set_nonblock(int fd)
> +void qemu_socket_set_nonblock(int fd)
>  {
> -    (void)qemu_try_set_nonblock(fd);
> +    (void)qemu_socket_try_set_nonblock(fd);
>  }
>
>  int socket_set_fast_reuse(int fd)
> diff --git a/util/vhost-user-server.c b/util/vhost-user-server.c
> index f66fbba7108b..232984ace6d7 100644
> --- a/util/vhost-user-server.c
> +++ b/util/vhost-user-server.c
> @@ -65,7 +65,7 @@ static void vmsg_unblock_fds(VhostUserMsg *vmsg)
>  {
>      int i;
>      for (i = 0; i < vmsg->fd_num; i++) {
> -        qemu_set_nonblock(vmsg->fds[i]);
> +        qemu_socket_set_nonblock(vmsg->fds[i]);
>      }
>  }
>
> @@ -270,7 +270,7 @@ set_watch(VuDev *vu_dev, int fd, int vu_evt,
>
>          vu_fd_watch->fd = fd;
>          vu_fd_watch->cb = cb;
> -        qemu_set_nonblock(fd);
> +        qemu_socket_set_nonblock(fd);
>          aio_set_fd_handler(server->ioc->ctx, fd, true, kick_handler,
>                             NULL, NULL, NULL, vu_fd_watch);
>          vu_fd_watch->vu_dev = vu_dev;
> --
> 2.36.0
>



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 07/26] tests: make libqmp buildable for win32
  2022-04-26 10:25     ` Marc-André Lureau
@ 2022-04-26 10:29       ` Thomas Huth
  0 siblings, 0 replies; 66+ messages in thread
From: Thomas Huth @ 2022-04-26 10:29 UTC (permalink / raw)
  To: Marc-André Lureau
  Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé, qemu-devel

On 26/04/2022 12.25, Marc-André Lureau wrote:
> Hi
> 
> On Tue, Apr 26, 2022 at 1:32 PM Thomas Huth <thuth@redhat.com> wrote:
>>
>> On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>>> ---
>>>    tests/qtest/libqmp.h |  2 ++
>>>    tests/qtest/libqmp.c | 37 +++++++++++++++++++++++++++++++------
>>>    2 files changed, 33 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/tests/qtest/libqmp.h b/tests/qtest/libqmp.h
>>> index 94aa97328a17..772f18b73ba3 100644
>>> --- a/tests/qtest/libqmp.h
>>> +++ b/tests/qtest/libqmp.h
>>> @@ -20,8 +20,10 @@
>>>    #include "qapi/qmp/qdict.h"
>>>
>>>    QDict *qmp_fd_receive(int fd);
>>> +#ifndef G_OS_WIN32
>>>    void qmp_fd_vsend_fds(int fd, int *fds, size_t fds_num,
>>>                          const char *fmt, va_list ap) G_GNUC_PRINTF(4, 0);
>>> +#endif
>>>    void qmp_fd_vsend(int fd, const char *fmt, va_list ap) G_GNUC_PRINTF(2, 0);
>>>    void qmp_fd_send(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
>>>    void qmp_fd_send_raw(int fd, const char *fmt, ...) G_GNUC_PRINTF(2, 3);
>>> diff --git a/tests/qtest/libqmp.c b/tests/qtest/libqmp.c
>>> index 0358b8313dc4..5f451ebee796 100644
>>> --- a/tests/qtest/libqmp.c
>>> +++ b/tests/qtest/libqmp.c
>>> @@ -15,9 +15,15 @@
>>>     */
>>>
>>>    #include "qemu/osdep.h"
>>> -
>>>    #include "libqmp.h"
>>>
>>> +#include <unistd.h>
>>> +#include <stdlib.h>
>>
>> unistd.h and stdlib.h should have been added by osdep.h already, so please
>> remove these two lines.
> 
> Right  (it will be part of the follow-up series, moving it to a
> standalone project). Ack with that?

Sure, the two headers should then be added in the patch where you remove 
osdep.h.

  Thomas



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 05/26] tests: move libqtest.h back under qtest/
  2022-04-26  9:26 ` [PATCH v2 05/26] tests: move libqtest.h back under qtest/ marcandre.lureau
@ 2022-04-26 10:30   ` Stefan Berger
  2022-05-30 14:41   ` Juan Quintela
  1 sibling, 0 replies; 66+ messages in thread
From: Stefan Berger @ 2022-04-26 10:30 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Fam Zheng, Peter Maydell, Dmitry Fleytman, Michael S. Tsirkin,
	Bin Meng, Li Zhijian, Havard Skinnemoen, Klaus Jensen, Su Hang,
	Gerd Hoffmann, Zhang Chen, Ani Sinha, Hannes Reinecke,
	Vikram Garhwal, open list:IDE, Juan Quintela,
	Daniel Henrique Barboza, Qiuhao Li, Joel Stanley, Laurent Vivier,
	Thomas Huth, Amit Shah, Michael Roth, Greg Kurz,
	Dr. David Alan Gilbert, Darren Kenny, Bandan Das,
	open list:ARM TCG CPUs, Cédric Le Goater, Stefan Hajnoczi,
	Paolo Bonzini, Keith Busch, John Snow, David Gibson,
	Francisco Iglesias, Daniel P. Berrangé,
	Alexander Bulekov, Andrew Jeffery, Markus Armbruster,
	Stefan Berger, Philippe Mathieu-Daudé,
	Coiby Xu, Tyrone Ting, open list:sPAPR (pseries),
	Igor Mammedov



On 4/26/22 05:26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Since commit a2ce7dbd917 ("meson: convert tests/qtest to meson"),
> libqtest.h is under libqos/ directory, while libqtest.c is still in
> qtest/. Move back to its original location to avoid mixing with libqos/.
> 
> Suggested-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 26/26] util: rename qemu_*block() socket functions
  2022-04-26  9:27 ` [PATCH v2 26/26] util: rename qemu_*block() socket functions marcandre.lureau
  2022-04-26 10:28   ` Marc-André Lureau
@ 2022-04-26 14:33   ` Stefan Hajnoczi
  2022-04-27 10:39     ` Marc-André Lureau
  1 sibling, 1 reply; 66+ messages in thread
From: Stefan Hajnoczi @ 2022-04-26 14:33 UTC (permalink / raw)
  To: marcandre.lureau
  Cc: Daniel P. Berrangé,
	Michael S. Tsirkin, Michael Roth, Jason Wang, qemu-devel,
	Coiby Xu, Stefan Weil, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 1544 bytes --]

On Tue, Apr 26, 2022 at 01:27:15PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The qemu_*block() functions are meant to be be used with sockets (the
> win32 implementation expects SOCKET)
> 
> Over time, those functions where used with Win32 SOCKET or
> file-descriptors interchangeably. But for portability, they must only be
> used with socket-like file-descriptors. FDs can use
> g_unix_set_fd_nonblocking() instead.
> 
> Rename the functions with "socket" in the name to prevent bad usages.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  include/qemu/sockets.h                  |  6 +++---
>  chardev/char-socket.c                   |  2 +-
>  contrib/ivshmem-server/ivshmem-server.c |  2 +-
>  hw/hyperv/syndbg.c                      |  2 +-
>  hw/virtio/vhost-user.c                  |  2 +-
>  io/channel-socket.c                     |  6 +++---
>  net/l2tpv3.c                            |  2 +-
>  net/socket.c                            | 10 +++++-----
>  qga/channel-posix.c                     |  2 +-
>  tests/unit/socket-helpers.c             |  2 +-
>  tests/unit/test-crypto-tlssession.c     |  8 ++++----
>  util/oslib-posix.c                      |  8 ++++----
>  util/oslib-win32.c                      |  8 ++++----
>  util/vhost-user-server.c                |  4 ++--
>  14 files changed, 32 insertions(+), 32 deletions(-)

Thanks for fixing this!

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD
  2022-04-26  9:26 ` [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD marcandre.lureau
@ 2022-04-26 20:43   ` Richard Henderson
  2022-04-27  7:59     ` Marc-André Lureau
  0 siblings, 1 reply; 66+ messages in thread
From: Richard Henderson @ 2022-04-26 20:43 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Daniel P. Berrangé

On 4/26/22 02:26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>   include/qemu/atomic.h                        | 8 +++++---
>   subprojects/libvhost-user/include/compiler.h | 1 +
>   2 files changed, 6 insertions(+), 3 deletions(-)
>   create mode 120000 subprojects/libvhost-user/include/compiler.h

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

> +++ b/subprojects/libvhost-user/include/compiler.h
> @@ -0,0 +1 @@
> +../../../include/qemu/compiler.h
> \ No newline at end of file

Fix the missing newline.


r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS
  2022-04-26  9:26 ` [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
@ 2022-04-26 20:46   ` Richard Henderson
  2022-04-27  9:36   ` Thomas Huth
  1 sibling, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-26 20:46 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Laurent Vivier, Kevin Wolf, Thomas Huth, Daniel P. Berrangé,
	open list:Floppy, Stefan Hajnoczi, Paolo Bonzini, John Snow

On 4/26/22 02:26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   tests/qtest/fdc-test.c    | 2 +-
>   util/coroutine-ucontext.c | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 08/26] Use g_unix_set_fd_nonblocking()
  2022-04-26  9:26 ` [PATCH v2 08/26] Use g_unix_set_fd_nonblocking() marcandre.lureau
@ 2022-04-27  1:00   ` Richard Henderson
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:00 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Paolo Bonzini, Daniel P. Berrangé

On 4/26/22 02:26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> API available since glib 2.30. It also preserves errno.
> 
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   hw/misc/ivshmem.c           | 2 +-
>   util/event_notifier-posix.c | 6 ++----
>   util/main-loop.c            | 2 +-
>   3 files changed, 4 insertions(+), 6 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 09/26] block: move fcntl_setfl()
  2022-04-26  9:26 ` [PATCH v2 09/26] block: move fcntl_setfl() marcandre.lureau
@ 2022-04-27  1:00   ` Richard Henderson
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:00 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Kevin Wolf, Paolo Bonzini, Hanna Reitz, Daniel P. Berrangé,
	open list:raw

On 4/26/22 02:26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> It is only used by block/file-posix.c, move it there.
> 
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   include/sysemu/os-posix.h |  2 --
>   block/file-posix.c        | 15 +++++++++++++++
>   util/oslib-posix.c        | 15 ---------------
>   3 files changed, 15 insertions(+), 17 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 10/26] Replace qemu_pipe() with g_unix_open_pipe()
  2022-04-26  9:26 ` [PATCH v2 10/26] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
@ 2022-04-27  1:06   ` Richard Henderson
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:06 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Paolo Bonzini, Vladimir Sementsov-Ogievskiy,
	Daniel P. Berrangé,
	Eric Blake, open list:Network Block Dev...

On 4/26/22 02:26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> GLib g_unix_open_pipe() is essentially like qemu_pipe(), available since
> 2.30.
> 
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   include/qemu/osdep.h        |  4 ----
>   qemu-nbd.c                  |  5 +++--
>   util/event_notifier-posix.c |  2 +-
>   util/oslib-posix.c          | 22 ----------------------
>   4 files changed, 4 insertions(+), 29 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 11/26] util: replace pipe()+cloexec with g_unix_open_pipe()
  2022-04-26  9:27 ` [PATCH v2 11/26] util: replace pipe()+cloexec " marcandre.lureau
@ 2022-04-27  1:06   ` Richard Henderson
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:06 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Daniel P. Berrangé

On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé<berrange@redhat.com>
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   util/compatfd.c | 5 +----
>   1 file changed, 1 insertion(+), 4 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:27 ` [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC) marcandre.lureau
@ 2022-04-27  1:08   ` Richard Henderson
  2022-04-27  8:24     ` Marc-André Lureau
  0 siblings, 1 reply; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:08 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Michael Roth, Daniel P. Berrangé

On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   qga/commands-posix.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> index 77f4672ca2c9..094487c2c395 100644
> --- a/qga/commands-posix.c
> +++ b/qga/commands-posix.c
> @@ -2529,7 +2529,7 @@ void qmp_guest_set_user_password(const char *username,
>           goto out;
>       }
>   
> -    if (pipe(datafd) < 0) {
> +    if (!g_unix_open_pipe(datafd, FD_CLOEXEC, NULL)) {
>           error_setg(errp, "cannot create pipe FDs");
>           goto out;
>       }

This looks wrong, since the next thing that happens is fork+execl.


r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 14/26] os-posix: replace pipe()+cloexec with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:27 ` [PATCH v2 14/26] os-posix: replace pipe()+cloexec " marcandre.lureau
@ 2022-04-27  1:11   ` Richard Henderson
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:11 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Paolo Bonzini, Daniel P. Berrangé

On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé<berrange@redhat.com>
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   os-posix.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>


> -        if (pipe(fds) == -1) {
> +        if (!g_unix_open_pipe(fds, FD_CLOEXEC, NULL)) {
>              exit(1);
>          }

We could do better than exit without error message, though pipe failure is pretty rare.


r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()
  2022-04-26  9:27 ` [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking() marcandre.lureau
@ 2022-04-27  1:15   ` Richard Henderson
  2022-04-27  9:08     ` Marc-André Lureau
  0 siblings, 1 reply; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:15 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Laurent Vivier, Thomas Huth, Daniel P. Berrangé,
	Alexander Bulekov, Jason Wang, Qiuhao Li, Darren Kenny,
	Bandan Das, Stefan Hajnoczi, Paolo Bonzini

On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé<berrange@redhat.com>
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   net/tap-bsd.c                      |  4 ++--
>   net/tap-linux.c                    |  2 +-
>   net/tap-solaris.c                  |  2 +-
>   tests/qtest/fuzz/virtio_net_fuzz.c |  2 +-
>   tests/unit/test-iov.c              |  4 ++--
>   util/oslib-posix.c                 | 16 ++--------------
>   6 files changed, 9 insertions(+), 21 deletions(-)

Typo in subject: s/0/O/.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 18/26] io: make qio_channel_command_new_pid() static
  2022-04-26  9:27 ` [PATCH v2 18/26] io: make qio_channel_command_new_pid() static marcandre.lureau
@ 2022-04-27  1:15   ` Richard Henderson
  0 siblings, 0 replies; 66+ messages in thread
From: Richard Henderson @ 2022-04-27  1:15 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel; +Cc: Daniel P. Berrangé

On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau<marcandre.lureau@redhat.com>
> 
> The function isn't used outside of qio_channel_command_new_spawn(),
> which is !win32-specific.
> 
> Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> ---
>   include/io/channel-command.h | 25 -------------------------
>   io/channel-command.c         | 26 ++++++++++++++++++++++----
>   2 files changed, 22 insertions(+), 29 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~


^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD
  2022-04-26 20:43   ` Richard Henderson
@ 2022-04-27  7:59     ` Marc-André Lureau
  0 siblings, 0 replies; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-27  7:59 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Daniel P. Berrangé, qemu-devel

Hi

On Wed, Apr 27, 2022 at 12:43 AM Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 4/26/22 02:26, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> > ---
> >   include/qemu/atomic.h                        | 8 +++++---
> >   subprojects/libvhost-user/include/compiler.h | 1 +
> >   2 files changed, 6 insertions(+), 3 deletions(-)
> >   create mode 120000 subprojects/libvhost-user/include/compiler.h
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
> > +++ b/subprojects/libvhost-user/include/compiler.h
> > @@ -0,0 +1 @@
> > +../../../include/qemu/compiler.h
> > \ No newline at end of file
>
> Fix the missing newline.

This is just the way symlinks are represented, I don't think I can change that.

thanks!



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-27  1:08   ` Richard Henderson
@ 2022-04-27  8:24     ` Marc-André Lureau
  2022-05-03 11:22       ` Daniel P. Berrangé
  0 siblings, 1 reply; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-27  8:24 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Michael Roth, Daniel P. Berrangé, QEMU

[-- Attachment #1: Type: text/plain, Size: 1259 bytes --]

Hi

On Wed, Apr 27, 2022 at 5:08 AM Richard Henderson <
richard.henderson@linaro.org> wrote:

> On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >   qga/commands-posix.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> > index 77f4672ca2c9..094487c2c395 100644
> > --- a/qga/commands-posix.c
> > +++ b/qga/commands-posix.c
> > @@ -2529,7 +2529,7 @@ void qmp_guest_set_user_password(const char
> *username,
> >           goto out;
> >       }
> >
> > -    if (pipe(datafd) < 0) {
> > +    if (!g_unix_open_pipe(datafd, FD_CLOEXEC, NULL)) {
> >           error_setg(errp, "cannot create pipe FDs");
> >           goto out;
> >       }
>
> This looks wrong, since the next thing that happens is fork+execl.
>
>
Before exec(), it does
        close(datafd[1]);
        dup2(datafd[0], 0);

0, the newfd, does not share file descriptor flags (the close-on-exec flag).

I did a quick test, and it seems to be fine.


-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 2161 bytes --]

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()
  2022-04-27  1:15   ` Richard Henderson
@ 2022-04-27  9:08     ` Marc-André Lureau
  0 siblings, 0 replies; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-27  9:08 UTC (permalink / raw)
  To: Richard Henderson
  Cc: Laurent Vivier, Thomas Huth, Daniel P. Berrangé,
	Darren Kenny, Jason Wang, QEMU, Qiuhao Li, Alexander Bulekov,
	Bandan Das, Stefan Hajnoczi, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 969 bytes --]

Hi

On Wed, Apr 27, 2022 at 5:15 AM Richard Henderson <
richard.henderson@linaro.org> wrote:

> On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau<marcandre.lureau@redhat.com>
> >
> > Suggested-by: Daniel P. Berrangé<berrange@redhat.com>
> > Signed-off-by: Marc-André Lureau<marcandre.lureau@redhat.com>
> > ---
> >   net/tap-bsd.c                      |  4 ++--
> >   net/tap-linux.c                    |  2 +-
> >   net/tap-solaris.c                  |  2 +-
> >   tests/qtest/fuzz/virtio_net_fuzz.c |  2 +-
> >   tests/unit/test-iov.c              |  4 ++--
> >   util/oslib-posix.c                 | 16 ++--------------
> >   6 files changed, 9 insertions(+), 21 deletions(-)
>
> Typo in subject: s/0/O/.
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
> r~
>
>
Thanks, additionally I fixed the return value to be -errno on
qemu_try_set_nonblock() error.


-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 1852 bytes --]

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS
  2022-04-26  9:26 ` [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
  2022-04-26 20:46   ` Richard Henderson
@ 2022-04-27  9:36   ` Thomas Huth
  1 sibling, 0 replies; 66+ messages in thread
From: Thomas Huth @ 2022-04-27  9:36 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Laurent Vivier, Kevin Wolf, Daniel P. Berrangé,
	open list:Floppy, Stefan Hajnoczi, Paolo Bonzini, John Snow

On 26/04/2022 11.26, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   tests/qtest/fdc-test.c    | 2 +-
>   util/coroutine-ucontext.c | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/qtest/fdc-test.c b/tests/qtest/fdc-test.c
> index 4aa72f36431f..0b3c2c0d523f 100644
> --- a/tests/qtest/fdc-test.c
> +++ b/tests/qtest/fdc-test.c
> @@ -550,7 +550,7 @@ static void fuzz_registers(void)
>   
>   static bool qtest_check_clang_sanitizer(void)
>   {
> -#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
> +#ifdef QEMU_SANITIZE_ADDRESS
>       return true;
>   #else
>       g_test_skip("QEMU not configured using --enable-sanitizers");
> diff --git a/util/coroutine-ucontext.c b/util/coroutine-ucontext.c
> index 904b375192ca..ed368e1a3ec3 100644
> --- a/util/coroutine-ucontext.c
> +++ b/util/coroutine-ucontext.c
> @@ -30,7 +30,7 @@
>   #include <valgrind/valgrind.h>
>   #endif
>   
> -#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer)
> +#ifdef QEMU_SANITIZE_ADDRESS
>   #ifdef CONFIG_ASAN_IFACE_FIBER
>   #define CONFIG_ASAN 1
>   #include <sanitizer/asan_interface.h>

Reviewed-by: Thomas Huth <thuth@redhat.com>



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 25/26] tests: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 25/26] tests: " marcandre.lureau
@ 2022-04-27  9:41   ` Thomas Huth
  2022-04-27 10:33     ` Marc-André Lureau
  2022-05-03 10:44   ` Daniel P. Berrangé
  1 sibling, 1 reply; 66+ messages in thread
From: Thomas Huth @ 2022-04-27  9:41 UTC (permalink / raw)
  To: marcandre.lureau, qemu-devel
  Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé

On 26/04/2022 11.27, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The call is POSIX-specific. Use the dedicated GLib API.

g_unix_set_fd_nonblocking() is also available on Unix-like systems according 
to its name, I suppose? So what's the advantage of this change?

  Thomas


> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>   tests/qtest/vhost-user-test.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c
> index ee30f5479648..a2cec8768462 100644
> --- a/tests/qtest/vhost-user-test.c
> +++ b/tests/qtest/vhost-user-test.c
> @@ -302,6 +302,7 @@ static int chr_can_read(void *opaque)
>   
>   static void chr_read(void *opaque, const uint8_t *buf, int size)
>   {
> +    g_autoptr(GError) err = NULL;
>       TestServer *s = opaque;
>       CharBackend *chr = &s->chr;
>       VhostUserMsg msg;
> @@ -394,7 +395,8 @@ static void chr_read(void *opaque, const uint8_t *buf, int size)
>            * The receive function forces it to be blocking,
>            * so revert it back to non-blocking.
>            */
> -        qemu_set_nonblock(fd);
> +        g_unix_set_fd_nonblocking(fd, true, &err);
> +        g_assert_no_error(err);
>           break;
>   
>       case VHOST_USER_SET_LOG_BASE:



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 25/26] tests: replace qemu_set_nonblock()
  2022-04-27  9:41   ` Thomas Huth
@ 2022-04-27 10:33     ` Marc-André Lureau
  2022-04-27 11:15       ` Thomas Huth
  0 siblings, 1 reply; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-27 10:33 UTC (permalink / raw)
  To: Thomas Huth
  Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé, qemu-devel

Hi

On Wed, Apr 27, 2022 at 1:41 PM Thomas Huth <thuth@redhat.com> wrote:
>
> On 26/04/2022 11.27, marcandre.lureau@redhat.com wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > The call is POSIX-specific. Use the dedicated GLib API.
>
> g_unix_set_fd_nonblocking() is also available on Unix-like systems according
> to its name, I suppose? So what's the advantage of this change?
>

This is a preliminary patch before the last patch
(https://patchew.org/QEMU/20220426092715.3931705-1-marcandre.lureau@redhat.com/20220426092715.3931705-27-marcandre.lureau@redhat.com/)

We should reserve qemu_socket_set_*block() usage to socket-like fd.

thanks


>   Thomas
>
>
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >   tests/qtest/vhost-user-test.c | 4 +++-
> >   1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c
> > index ee30f5479648..a2cec8768462 100644
> > --- a/tests/qtest/vhost-user-test.c
> > +++ b/tests/qtest/vhost-user-test.c
> > @@ -302,6 +302,7 @@ static int chr_can_read(void *opaque)
> >
> >   static void chr_read(void *opaque, const uint8_t *buf, int size)
> >   {
> > +    g_autoptr(GError) err = NULL;
> >       TestServer *s = opaque;
> >       CharBackend *chr = &s->chr;
> >       VhostUserMsg msg;
> > @@ -394,7 +395,8 @@ static void chr_read(void *opaque, const uint8_t *buf, int size)
> >            * The receive function forces it to be blocking,
> >            * so revert it back to non-blocking.
> >            */
> > -        qemu_set_nonblock(fd);
> > +        g_unix_set_fd_nonblocking(fd, true, &err);
> > +        g_assert_no_error(err);
> >           break;
> >
> >       case VHOST_USER_SET_LOG_BASE:
>



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 26/26] util: rename qemu_*block() socket functions
  2022-04-26 14:33   ` Stefan Hajnoczi
@ 2022-04-27 10:39     ` Marc-André Lureau
  0 siblings, 0 replies; 66+ messages in thread
From: Marc-André Lureau @ 2022-04-27 10:39 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: Daniel P. Berrangé,
	Michael S. Tsirkin, Michael Roth, Jason Wang, QEMU, Coiby Xu,
	Stefan Weil, Paolo Bonzini

[-- Attachment #1: Type: text/plain, Size: 1874 bytes --]

Hi Stefan

On Tue, Apr 26, 2022 at 6:33 PM Stefan Hajnoczi <stefanha@gmail.com> wrote:

> On Tue, Apr 26, 2022 at 01:27:15PM +0400, marcandre.lureau@redhat.com
> wrote:
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > The qemu_*block() functions are meant to be be used with sockets (the
> > win32 implementation expects SOCKET)
> >
> > Over time, those functions where used with Win32 SOCKET or
> > file-descriptors interchangeably. But for portability, they must only be
> > used with socket-like file-descriptors. FDs can use
> > g_unix_set_fd_nonblocking() instead.
> >
> > Rename the functions with "socket" in the name to prevent bad usages.
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  include/qemu/sockets.h                  |  6 +++---
> >  chardev/char-socket.c                   |  2 +-
> >  contrib/ivshmem-server/ivshmem-server.c |  2 +-
> >  hw/hyperv/syndbg.c                      |  2 +-
> >  hw/virtio/vhost-user.c                  |  2 +-
> >  io/channel-socket.c                     |  6 +++---
> >  net/l2tpv3.c                            |  2 +-
> >  net/socket.c                            | 10 +++++-----
> >  qga/channel-posix.c                     |  2 +-
> >  tests/unit/socket-helpers.c             |  2 +-
> >  tests/unit/test-crypto-tlssession.c     |  8 ++++----
> >  util/oslib-posix.c                      |  8 ++++----
> >  util/oslib-win32.c                      |  8 ++++----
> >  util/vhost-user-server.c                |  4 ++--
> >  14 files changed, 32 insertions(+), 32 deletions(-)
>
> Thanks for fixing this!
>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
>

Thanks, could you also review the preliminary patches 19-25 ? They reduce
the usage of qemu_socket* functions, and use glib API instead.

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 2840 bytes --]

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 25/26] tests: replace qemu_set_nonblock()
  2022-04-27 10:33     ` Marc-André Lureau
@ 2022-04-27 11:15       ` Thomas Huth
  0 siblings, 0 replies; 66+ messages in thread
From: Thomas Huth @ 2022-04-27 11:15 UTC (permalink / raw)
  To: Marc-André Lureau
  Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé, qemu-devel

On 27/04/2022 12.33, Marc-André Lureau wrote:
> Hi
> 
> On Wed, Apr 27, 2022 at 1:41 PM Thomas Huth <thuth@redhat.com> wrote:
>>
>> On 26/04/2022 11.27, marcandre.lureau@redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>>>
>>> The call is POSIX-specific. Use the dedicated GLib API.
>>
>> g_unix_set_fd_nonblocking() is also available on Unix-like systems according
>> to its name, I suppose? So what's the advantage of this change?
>>
> 
> This is a preliminary patch before the last patch
> (https://patchew.org/QEMU/20220426092715.3931705-1-marcandre.lureau@redhat.com/20220426092715.3931705-27-marcandre.lureau@redhat.com/)
> 
> We should reserve qemu_socket_set_*block() usage to socket-like fd.

Ok, makes sense now, thanks.

Reviewed-by: Thomas Huth <thuth@redhat.com>

PS: In case you respin, it might make sense to add a sentence à la "We're 
going to limit qemu_set_nonblock() to sockets only" to the commit description.



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 00/26] Misc cleanups
  2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
                   ` (25 preceding siblings ...)
  2022-04-26  9:27 ` [PATCH v2 26/26] util: rename qemu_*block() socket functions marcandre.lureau
@ 2022-05-02  7:45 ` Marc-André Lureau
  26 siblings, 0 replies; 66+ messages in thread
From: Marc-André Lureau @ 2022-05-02  7:45 UTC (permalink / raw)
  To: QEMU, Daniel P. Berrangé

[-- Attachment #1: Type: text/plain, Size: 13794 bytes --]

Hi Daniel

On Tue, Apr 26, 2022 at 1:27 PM <marcandre.lureau@redhat.com> wrote:

> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Hi,
>
> v2:
> - add patches to replace pipe() with g_unix_open_pipe()
>

Since you suggested this change, could you review the "replace pipe()"
patches?
thanks!


> - add patch "Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()"
> - add patches to cleanup qemu_*block() usage (see "util: rename
> qemu_*block()
>   socket functions" commit message)
> - fix lost braces during code move
> - replace TRUE/FALSE with true/false
> - add reviewed/ack-by tags
>
> Marc-André Lureau (26):
>   Use QEMU_SANITIZE_THREAD
>   Use QEMU_SANITIZE_ADDRESS
>   include: move qemu_*_exec_dir() to cutils
>   util/win32: simplify qemu_get_local_state_dir()
>   tests: move libqtest.h back under qtest/
>   libqtest: split QMP part in libqmp
>   tests: make libqmp buildable for win32
>   Use g_unix_set_fd_nonblocking()
>   block: move fcntl_setfl()
>   Replace qemu_pipe() with g_unix_open_pipe()
>   util: replace pipe()+cloexec with g_unix_open_pipe()
>   qga: replace pipe() with g_unix_open_pipe(CLOEXEC)
>   tests: replace pipe() with g_unix_open_pipe(CLOEXEC)
>   os-posix: replace pipe()+cloexec with g_unix_open_pipe(CLOEXEC)
>   virtiofsd: replace pipe() with g_unix_open_pipe(CLOEXEC)
>   io: replace pipe() with g_unix_open_pipe(CLOEXEC)
>   Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking()
>   io: make qio_channel_command_new_pid() static
>   chardev: replace qemu_set_nonblock()
>   io: replace qemu_set{_non}block()
>   qga: replace qemu_set_nonblock()
>   hw: replace qemu_set_nonblock()
>   ui: replace qemu_set_nonblock()
>   net: replace qemu_set_nonblock()
>   tests: replace qemu_set_nonblock()
>   util: rename qemu_*block() socket functions
>
>  docs/devel/qtest.rst                          |   2 +-
>  include/io/channel-command.h                  |  25 --
>  include/qemu/atomic.h                         |   8 +-
>  include/qemu/cutils.h                         |   7 +
>  include/qemu/osdep.h                          |  12 -
>  include/qemu/sockets.h                        |   6 +-
>  include/sysemu/os-posix.h                     |   2 -
>  subprojects/libvhost-user/include/compiler.h  |   1 +
>  tests/qtest/acpi-utils.h                      |   2 +-
>  tests/qtest/boot-sector.h                     |   2 +-
>  tests/qtest/fuzz/fuzz.h                       |   2 +-
>  tests/qtest/libqmp.h                          |  52 ++++
>  tests/qtest/libqos/fw_cfg.h                   |   2 +-
>  tests/qtest/libqos/i2c.h                      |   2 +-
>  tests/qtest/libqos/libqos.h                   |   2 +-
>  tests/qtest/libqos/malloc.h                   |   2 +-
>  tests/qtest/libqos/pci.h                      |   2 +-
>  tests/qtest/libqos/sdhci-cmd.h                |   2 +-
>  tests/qtest/libqtest-single.h                 |   2 +-
>  tests/qtest/{libqos => }/libqtest.h           |  29 +-
>  tests/qtest/migration-helpers.h               |   2 +-
>  tests/qtest/tpm-emu.h                         |   2 +-
>  block/file-posix.c                            |  15 +
>  chardev/char-fd.c                             |   4 +-
>  chardev/char-pty.c                            |   5 +-
>  chardev/char-serial.c                         |   5 +-
>  chardev/char-socket.c                         |   2 +-
>  chardev/char-stdio.c                          |   5 +-
>  contrib/ivshmem-server/ivshmem-server.c       |   2 +-
>  hw/hyperv/syndbg.c                            |   2 +-
>  hw/input/virtio-input-host.c                  |   5 +-
>  hw/misc/ivshmem.c                             |   2 +-
>  hw/virtio/vhost-user.c                        |   2 +-
>  hw/virtio/vhost-vsock.c                       |  11 +-
>  io/channel-command.c                          |  46 +++-
>  io/channel-file.c                             |  13 +-
>  io/channel-socket.c                           |   6 +-
>  net/l2tpv3.c                                  |   2 +-
>  net/socket.c                                  |  10 +-
>  net/tap-bsd.c                                 |   4 +-
>  net/tap-linux.c                               |   2 +-
>  net/tap-solaris.c                             |   2 +-
>  net/tap.c                                     |  33 ++-
>  os-posix.c                                    |   3 +-
>  qemu-io.c                                     |   1 +
>  qemu-nbd.c                                    |   5 +-
>  qga/channel-posix.c                           |   2 +-
>  qga/commands-posix.c                          |   8 +-
>  storage-daemon/qemu-storage-daemon.c          |   1 +
>  tests/qtest/ac97-test.c                       |   2 +-
>  tests/qtest/ahci-test.c                       |   2 +-
>  tests/qtest/am53c974-test.c                   |   2 +-
>  tests/qtest/arm-cpu-features.c                |   2 +-
>  tests/qtest/aspeed_hace-test.c                |   2 +-
>  tests/qtest/boot-order-test.c                 |   2 +-
>  tests/qtest/boot-sector.c                     |   2 +-
>  tests/qtest/boot-serial-test.c                |   2 +-
>  tests/qtest/cdrom-test.c                      |   2 +-
>  tests/qtest/dbus-display-test.c               |   2 +-
>  tests/qtest/dbus-vmstate-test.c               |   2 +-
>  tests/qtest/device-introspect-test.c          |   2 +-
>  tests/qtest/device-plug-test.c                |   2 +-
>  tests/qtest/drive_del-test.c                  |   2 +-
>  tests/qtest/ds1338-test.c                     |   2 +-
>  tests/qtest/e1000-test.c                      |   2 +-
>  tests/qtest/eepro100-test.c                   |   2 +-
>  tests/qtest/endianness-test.c                 |   2 +-
>  tests/qtest/erst-test.c                       |   2 +-
>  tests/qtest/es1370-test.c                     |   2 +-
>  tests/qtest/fdc-test.c                        |   2 +-
>  tests/qtest/fuzz-e1000e-test.c                |   2 +-
>  tests/qtest/fuzz-lsi53c895a-test.c            |   2 +-
>  tests/qtest/fuzz-megasas-test.c               |   2 +-
>  tests/qtest/fuzz-sb16-test.c                  |   2 +-
>  tests/qtest/fuzz-sdcard-test.c                |   2 +-
>  tests/qtest/fuzz-virtio-scsi-test.c           |   2 +-
>  tests/qtest/fuzz-xlnx-dp-test.c               |   2 +-
>  tests/qtest/fuzz/fuzz.c                       |   3 +-
>  tests/qtest/fuzz/generic_fuzz.c               |   2 +-
>  tests/qtest/fuzz/i440fx_fuzz.c                |   2 +-
>  tests/qtest/fuzz/qos_fuzz.c                   |   2 +-
>  tests/qtest/fuzz/virtio_blk_fuzz.c            |   2 +-
>  tests/qtest/fuzz/virtio_net_fuzz.c            |   4 +-
>  tests/qtest/fuzz/virtio_scsi_fuzz.c           |   2 +-
>  tests/qtest/fw_cfg-test.c                     |   2 +-
>  tests/qtest/hd-geo-test.c                     |   2 +-
>  tests/qtest/hexloader-test.c                  |   2 +-
>  tests/qtest/ide-test.c                        |   2 +-
>  tests/qtest/ipoctal232-test.c                 |   2 +-
>  tests/qtest/ivshmem-test.c                    |   7 +-
>  tests/qtest/libqmp.c                          | 258 ++++++++++++++++++
>  .../libqos/aarch64-xlnx-zcu102-machine.c      |   2 +-
>  tests/qtest/libqos/ahci.c                     |   2 +-
>  tests/qtest/libqos/arm-imx25-pdk-machine.c    |   2 +-
>  tests/qtest/libqos/arm-n800-machine.c         |   2 +-
>  tests/qtest/libqos/arm-raspi2-machine.c       |   2 +-
>  tests/qtest/libqos/arm-sabrelite-machine.c    |   2 +-
>  tests/qtest/libqos/arm-smdkc210-machine.c     |   2 +-
>  tests/qtest/libqos/arm-virt-machine.c         |   2 +-
>  .../qtest/libqos/arm-xilinx-zynq-a9-machine.c |   2 +-
>  tests/qtest/libqos/e1000e.c                   |   2 +-
>  tests/qtest/libqos/fw_cfg.c                   |   2 +-
>  tests/qtest/libqos/i2c-imx.c                  |   2 +-
>  tests/qtest/libqos/i2c-omap.c                 |   2 +-
>  tests/qtest/libqos/i2c.c                      |   2 +-
>  tests/qtest/libqos/libqos.c                   |   2 +-
>  tests/qtest/libqos/pci-pc.c                   |   2 +-
>  tests/qtest/libqos/pci-spapr.c                |   2 +-
>  tests/qtest/libqos/ppc64_pseries-machine.c    |   2 +-
>  tests/qtest/libqos/qgraph.c                   |   2 +-
>  tests/qtest/libqos/qos_external.c             |   2 +-
>  tests/qtest/libqos/rtas.c                     |   2 +-
>  tests/qtest/libqos/sdhci-cmd.c                |   2 +-
>  tests/qtest/libqos/sdhci.c                    |   2 +-
>  tests/qtest/libqos/tpci200.c                  |   2 +-
>  tests/qtest/libqos/usb.c                      |   2 +-
>  tests/qtest/libqos/vhost-user-blk.c           |   2 +-
>  tests/qtest/libqos/virtio-9p.c                |   2 +-
>  tests/qtest/libqos/virtio-balloon.c           |   2 +-
>  tests/qtest/libqos/virtio-blk.c               |   2 +-
>  tests/qtest/libqos/virtio-iommu.c             |   2 +-
>  tests/qtest/libqos/virtio-mmio.c              |   2 +-
>  tests/qtest/libqos/virtio-net.c               |   2 +-
>  tests/qtest/libqos/virtio-pci.c               |   2 +-
>  tests/qtest/libqos/virtio-rng.c               |   2 +-
>  tests/qtest/libqos/virtio-scsi.c              |   2 +-
>  tests/qtest/libqos/virtio-serial.c            |   2 +-
>  tests/qtest/libqos/virtio.c                   |   2 +-
>  tests/qtest/libqos/x86_64_pc-machine.c        |   2 +-
>  tests/qtest/libqtest.c                        | 207 +-------------
>  tests/qtest/lpc-ich9-test.c                   |   2 +-
>  tests/qtest/m48t59-test.c                     |   2 +-
>  tests/qtest/machine-none-test.c               |   2 +-
>  tests/qtest/megasas-test.c                    |   2 +-
>  tests/qtest/microbit-test.c                   |   2 +-
>  tests/qtest/migration-test.c                  |   2 +-
>  tests/qtest/modules-test.c                    |   2 +-
>  tests/qtest/ne2000-test.c                     |   2 +-
>  tests/qtest/npcm7xx_adc-test.c                |   2 +-
>  tests/qtest/npcm7xx_pwm-test.c                |   2 +-
>  tests/qtest/npcm7xx_sdhci-test.c              |   2 +-
>  tests/qtest/npcm7xx_smbus-test.c              |   2 +-
>  tests/qtest/npcm7xx_watchdog_timer-test.c     |   2 +-
>  tests/qtest/numa-test.c                       |   2 +-
>  tests/qtest/nvme-test.c                       |   2 +-
>  tests/qtest/pca9552-test.c                    |   2 +-
>  tests/qtest/pci-test.c                        |   2 +-
>  tests/qtest/pcnet-test.c                      |   2 +-
>  tests/qtest/pflash-cfi02-test.c               |   2 +-
>  tests/qtest/pnv-xscom-test.c                  |   2 +-
>  tests/qtest/prom-env-test.c                   |   2 +-
>  tests/qtest/pvpanic-pci-test.c                |   2 +-
>  tests/qtest/pvpanic-test.c                    |   2 +-
>  tests/qtest/pxe-test.c                        |   2 +-
>  tests/qtest/q35-test.c                        |   2 +-
>  tests/qtest/qmp-cmd-test.c                    |   2 +-
>  tests/qtest/qmp-test.c                        |   2 +-
>  tests/qtest/qom-test.c                        |   2 +-
>  tests/qtest/rtas-test.c                       |   2 +-
>  tests/qtest/sdhci-test.c                      |   2 +-
>  tests/qtest/spapr-phb-test.c                  |   2 +-
>  tests/qtest/tco-test.c                        |   2 +-
>  tests/qtest/test-filter-mirror.c              |   2 +-
>  tests/qtest/test-filter-redirector.c          |   2 +-
>  tests/qtest/test-hmp.c                        |   2 +-
>  tests/qtest/tpm-crb-swtpm-test.c              |   2 +-
>  tests/qtest/tpm-tis-device-swtpm-test.c       |   2 +-
>  tests/qtest/tpm-tis-swtpm-test.c              |   2 +-
>  tests/qtest/tpm-util.c                        |   2 +-
>  tests/qtest/tulip-test.c                      |   2 +-
>  tests/qtest/vhost-user-test.c                 |   4 +-
>  tests/qtest/virtio-net-failover.c             |   2 +-
>  tests/qtest/virtio-rng-test.c                 |   2 +-
>  tests/qtest/virtio-test.c                     |   2 +-
>  tests/qtest/vmgenid-test.c                    |   2 +-
>  tests/qtest/vmxnet3-test.c                    |   2 +-
>  tests/qtest/wdt_ib700-test.c                  |   2 +-
>  tests/qtest/xlnx-can-test.c                   |   2 +-
>  tests/unit/socket-helpers.c                   |   2 +-
>  tests/unit/test-crypto-tlssession.c           |   8 +-
>  tests/unit/test-io-channel-file.c             |   2 +-
>  tests/unit/test-iov.c                         |   4 +-
>  tests/unit/test-qga.c                         |   2 +-
>  tools/virtiofsd/helper.c                      |   2 +-
>  ui/input-linux.c                              |   5 +-
>  util/compatfd.c                               |   5 +-
>  util/coroutine-ucontext.c                     |   2 +-
>  util/cutils.c                                 | 108 ++++++++
>  util/event_notifier-posix.c                   |   8 +-
>  util/main-loop.c                              |   2 +-
>  util/oslib-posix.c                            | 142 +---------
>  util/oslib-win32.c                            |  61 +----
>  util/vhost-user-server.c                      |   4 +-
>  scripts/oss-fuzz/output_reproducer.py         |   2 +-
>  tests/qtest/libqos/meson.build                |   5 +-
>  tests/unit/meson.build                        |   2 +-
>  196 files changed, 758 insertions(+), 703 deletions(-)
>  create mode 120000 subprojects/libvhost-user/include/compiler.h
>  create mode 100644 tests/qtest/libqmp.h
>  rename tests/qtest/{libqos => }/libqtest.h (95%)
>  create mode 100644 tests/qtest/libqmp.c
>
> --
> 2.36.0
>
>
>

-- 
Marc-André Lureau

[-- Attachment #2: Type: text/html, Size: 17485 bytes --]

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 13/26] tests: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:27 ` [PATCH v2 13/26] tests: " marcandre.lureau
@ 2022-05-03 10:11   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:11 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Thomas Huth, Laurent Vivier, Paolo Bonzini

On Tue, Apr 26, 2022 at 01:27:02PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tests/qtest/ivshmem-test.c        | 5 +++--
>  tests/unit/test-io-channel-file.c | 2 +-
>  2 files changed, 4 insertions(+), 3 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 15/26] virtiofsd: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:27   ` [Virtio-fs] " marcandre.lureau
@ 2022-05-03 10:16     ` Daniel P. Berrangé
  -1 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:16 UTC (permalink / raw)
  To: marcandre.lureau
  Cc: qemu-devel, Dr. David Alan Gilbert, Stefan Hajnoczi, open list:virtiofs

On Tue, Apr 26, 2022 at 01:27:04PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tools/virtiofsd/helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [Virtio-fs] [PATCH v2 15/26] virtiofsd: replace pipe() with g_unix_open_pipe(CLOEXEC)
@ 2022-05-03 10:16     ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:16 UTC (permalink / raw)
  To: marcandre.lureau
  Cc: qemu-devel, Dr. David Alan Gilbert, Stefan Hajnoczi, open list:virtiofs

On Tue, Apr 26, 2022 at 01:27:04PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tools/virtiofsd/helper.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 16/26] io: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-26  9:27 ` [PATCH v2 16/26] io: " marcandre.lureau
@ 2022-05-03 10:29   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:29 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel

On Tue, Apr 26, 2022 at 01:27:05PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  io/channel-command.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 19/26] chardev: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 19/26] chardev: replace qemu_set_nonblock() marcandre.lureau
@ 2022-05-03 10:32   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:32 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Paolo Bonzini

On Tue, Apr 26, 2022 at 01:27:08PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Those calls are either for non-socket fd, or are POSIX-specific. Use the
> dedicated GLib API. (qemu_set_nonblock() is for socket-like)
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  chardev/char-fd.c     | 4 ++--
>  chardev/char-pty.c    | 5 ++++-
>  chardev/char-serial.c | 5 ++++-
>  chardev/char-stdio.c  | 5 ++++-
>  4 files changed, 14 insertions(+), 5 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 20/26] io: replace qemu_set{_non}block()
  2022-04-26  9:27 ` [PATCH v2 20/26] io: replace qemu_set{_non}block() marcandre.lureau
@ 2022-05-03 10:33   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:33 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel

On Tue, Apr 26, 2022 at 01:27:09PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Those calls are non-socket fd, or are POSIX-specific. Use the dedicated
> GLib API. (qemu_set_nonblock() is for socket-like)
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  io/channel-command.c | 16 +++++++++-------
>  io/channel-file.c    | 13 +++++++++----
>  2 files changed, 18 insertions(+), 11 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 21/26] qga: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 21/26] qga: replace qemu_set_nonblock() marcandre.lureau
@ 2022-05-03 10:35   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:35 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Michael Roth

On Tue, Apr 26, 2022 at 01:27:10PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The call is POSIX-specific. Use the dedicated GLib API.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  qga/commands-posix.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 22/26] hw: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 22/26] hw: " marcandre.lureau
@ 2022-05-03 10:38   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:38 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Gerd Hoffmann, Michael S. Tsirkin

On Tue, Apr 26, 2022 at 01:27:11PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Those calls are non-socket fd, or are POSIX-specific. Use the dedicated
> GLib API. (qemu_set_nonblock() is for socket-like)
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/input/virtio-input-host.c |  5 ++++-
>  hw/virtio/vhost-vsock.c      | 11 +++++++----
>  2 files changed, 11 insertions(+), 5 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 23/26] ui: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 23/26] ui: " marcandre.lureau
@ 2022-05-03 10:41   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:41 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Gerd Hoffmann

On Tue, Apr 26, 2022 at 01:27:12PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The call is POSIX-specific. Use the dedicated GLib API.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  ui/input-linux.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 24/26] net: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 24/26] net: " marcandre.lureau
@ 2022-05-03 10:42   ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:42 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Jason Wang

On Tue, Apr 26, 2022 at 01:27:13PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> Those calls are POSIX-specific. Use the dedicated GLib
> API. (qemu_set_nonblock() is for socket-like)
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  net/tap.c | 33 +++++++++++++++++++--------------
>  1 file changed, 19 insertions(+), 14 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 25/26] tests: replace qemu_set_nonblock()
  2022-04-26  9:27 ` [PATCH v2 25/26] tests: " marcandre.lureau
  2022-04-27  9:41   ` Thomas Huth
@ 2022-05-03 10:44   ` Daniel P. Berrangé
  1 sibling, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 10:44 UTC (permalink / raw)
  To: marcandre.lureau; +Cc: qemu-devel, Thomas Huth, Laurent Vivier, Paolo Bonzini

On Tue, Apr 26, 2022 at 01:27:14PM +0400, marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> The call is POSIX-specific. Use the dedicated GLib API.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  tests/qtest/vhost-user-test.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC)
  2022-04-27  8:24     ` Marc-André Lureau
@ 2022-05-03 11:22       ` Daniel P. Berrangé
  0 siblings, 0 replies; 66+ messages in thread
From: Daniel P. Berrangé @ 2022-05-03 11:22 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: Richard Henderson, QEMU, Michael Roth

On Wed, Apr 27, 2022 at 12:24:44PM +0400, Marc-André Lureau wrote:
> Hi
> 
> On Wed, Apr 27, 2022 at 5:08 AM Richard Henderson <
> richard.henderson@linaro.org> wrote:
> 
> > On 4/26/22 02:27, marcandre.lureau@redhat.com wrote:
> > > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> > >
> > > Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
> > > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > > ---
> > >   qga/commands-posix.c | 2 +-
> > >   1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c
> > > index 77f4672ca2c9..094487c2c395 100644
> > > --- a/qga/commands-posix.c
> > > +++ b/qga/commands-posix.c
> > > @@ -2529,7 +2529,7 @@ void qmp_guest_set_user_password(const char
> > *username,
> > >           goto out;
> > >       }
> > >
> > > -    if (pipe(datafd) < 0) {
> > > +    if (!g_unix_open_pipe(datafd, FD_CLOEXEC, NULL)) {
> > >           error_setg(errp, "cannot create pipe FDs");
> > >           goto out;
> > >       }
> >
> > This looks wrong, since the next thing that happens is fork+execl.
> >
> >
> Before exec(), it does
>         close(datafd[1]);
>         dup2(datafd[0], 0);
> 
> 0, the newfd, does not share file descriptor flags (the close-on-exec flag).
> 
> I did a quick test, and it seems to be fine.

The 'dup' man page says

       The  two  file  descriptors do not share file descriptor flags
       (the close-on-exec flag).  The close-on-exec flag (FD_CLOEXEC;
       see fcntl(2)) for the duplicate descriptor is off.

so we're fine in this respect. You could need to use dup3 to explicitly
turn on FD_CLOEXEC on the duplicate, so

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>


With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH v2 05/26] tests: move libqtest.h back under qtest/
  2022-04-26  9:26 ` [PATCH v2 05/26] tests: move libqtest.h back under qtest/ marcandre.lureau
  2022-04-26 10:30   ` Stefan Berger
@ 2022-05-30 14:41   ` Juan Quintela
  1 sibling, 0 replies; 66+ messages in thread
From: Juan Quintela @ 2022-05-30 14:41 UTC (permalink / raw)
  To: marcandre.lureau
  Cc: qemu-devel, Daniel P. Berrangé,
	Alexander Bulekov, Paolo Bonzini, Bandan Das, Stefan Hajnoczi,
	Thomas Huth, Darren Kenny, Qiuhao Li, Gerd Hoffmann,
	Laurent Vivier, Michael S. Tsirkin, Igor Mammedov, Ani Sinha,
	John Snow, Fam Zheng, Peter Maydell, Cédric Le Goater,
	Andrew Jeffery, Joel Stanley, Dmitry Fleytman, Hannes Reinecke,
	Philippe Mathieu-Daudé,
	Bin Meng, Su Hang, Daniel Henrique Barboza, David Gibson,
	Greg Kurz, Coiby Xu, Dr. David Alan Gilbert, Havard Skinnemoen,
	Tyrone Ting, Keith Busch, Klaus Jensen, Markus Armbruster,
	Zhang Chen, Li Zhijian, Stefan Berger, Amit Shah, Vikram Garhwal,
	Francisco Iglesias, Michael Roth, open list:IDE,
	open list:ARM TCG CPUs, open list:sPAPR (pseries)

marcandre.lureau@redhat.com wrote:
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Since commit a2ce7dbd917 ("meson: convert tests/qtest to meson"),
> libqtest.h is under libqos/ directory, while libqtest.c is still in
> qtest/. Move back to its original location to avoid mixing with libqos/.
>
> Suggested-by: Thomas Huth <thuth@redhat.com>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> Reviewed-by: Thomas Huth <thuth@redhat.com>

Reviewed-by: Juan Quintela <quintela@redhat.com>



^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2022-05-30 14:42 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-26  9:26 [PATCH v2 00/26] Misc cleanups marcandre.lureau
2022-04-26  9:26 ` [PATCH v2 01/26] Use QEMU_SANITIZE_THREAD marcandre.lureau
2022-04-26 20:43   ` Richard Henderson
2022-04-27  7:59     ` Marc-André Lureau
2022-04-26  9:26 ` [PATCH v2 02/26] Use QEMU_SANITIZE_ADDRESS marcandre.lureau
2022-04-26 20:46   ` Richard Henderson
2022-04-27  9:36   ` Thomas Huth
2022-04-26  9:26 ` [PATCH v2 03/26] include: move qemu_*_exec_dir() to cutils marcandre.lureau
2022-04-26  9:26 ` [PATCH v2 04/26] util/win32: simplify qemu_get_local_state_dir() marcandre.lureau
2022-04-26  9:26 ` [PATCH v2 05/26] tests: move libqtest.h back under qtest/ marcandre.lureau
2022-04-26 10:30   ` Stefan Berger
2022-05-30 14:41   ` Juan Quintela
2022-04-26  9:26 ` [PATCH v2 06/26] libqtest: split QMP part in libqmp marcandre.lureau
2022-04-26  9:26 ` [PATCH v2 07/26] tests: make libqmp buildable for win32 marcandre.lureau
2022-04-26  9:32   ` Thomas Huth
2022-04-26 10:25     ` Marc-André Lureau
2022-04-26 10:29       ` Thomas Huth
2022-04-26  9:26 ` [PATCH v2 08/26] Use g_unix_set_fd_nonblocking() marcandre.lureau
2022-04-27  1:00   ` Richard Henderson
2022-04-26  9:26 ` [PATCH v2 09/26] block: move fcntl_setfl() marcandre.lureau
2022-04-27  1:00   ` Richard Henderson
2022-04-26  9:26 ` [PATCH v2 10/26] Replace qemu_pipe() with g_unix_open_pipe() marcandre.lureau
2022-04-27  1:06   ` Richard Henderson
2022-04-26  9:27 ` [PATCH v2 11/26] util: replace pipe()+cloexec " marcandre.lureau
2022-04-27  1:06   ` Richard Henderson
2022-04-26  9:27 ` [PATCH v2 12/26] qga: replace pipe() with g_unix_open_pipe(CLOEXEC) marcandre.lureau
2022-04-27  1:08   ` Richard Henderson
2022-04-27  8:24     ` Marc-André Lureau
2022-05-03 11:22       ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 13/26] tests: " marcandre.lureau
2022-05-03 10:11   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 14/26] os-posix: replace pipe()+cloexec " marcandre.lureau
2022-04-27  1:11   ` Richard Henderson
2022-04-26  9:27 ` [PATCH v2 15/26] virtiofsd: replace pipe() " marcandre.lureau
2022-04-26  9:27   ` [Virtio-fs] " marcandre.lureau
2022-05-03 10:16   ` Daniel P. Berrangé
2022-05-03 10:16     ` [Virtio-fs] " Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 16/26] io: " marcandre.lureau
2022-05-03 10:29   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 17/26] Replace fcntl(0_NONBLOCK) with g_unix_set_fd_nonblocking() marcandre.lureau
2022-04-27  1:15   ` Richard Henderson
2022-04-27  9:08     ` Marc-André Lureau
2022-04-26  9:27 ` [PATCH v2 18/26] io: make qio_channel_command_new_pid() static marcandre.lureau
2022-04-27  1:15   ` Richard Henderson
2022-04-26  9:27 ` [PATCH v2 19/26] chardev: replace qemu_set_nonblock() marcandre.lureau
2022-05-03 10:32   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 20/26] io: replace qemu_set{_non}block() marcandre.lureau
2022-05-03 10:33   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 21/26] qga: replace qemu_set_nonblock() marcandre.lureau
2022-05-03 10:35   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 22/26] hw: " marcandre.lureau
2022-05-03 10:38   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 23/26] ui: " marcandre.lureau
2022-05-03 10:41   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 24/26] net: " marcandre.lureau
2022-05-03 10:42   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 25/26] tests: " marcandre.lureau
2022-04-27  9:41   ` Thomas Huth
2022-04-27 10:33     ` Marc-André Lureau
2022-04-27 11:15       ` Thomas Huth
2022-05-03 10:44   ` Daniel P. Berrangé
2022-04-26  9:27 ` [PATCH v2 26/26] util: rename qemu_*block() socket functions marcandre.lureau
2022-04-26 10:28   ` Marc-André Lureau
2022-04-26 14:33   ` Stefan Hajnoczi
2022-04-27 10:39     ` Marc-André Lureau
2022-05-02  7:45 ` [PATCH v2 00/26] Misc cleanups Marc-André Lureau

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.