This series continues the work started by Stefano [1] to add support
for any POSIX system to vhost-user.

Three patches from his original series were never applied due to failing
tests [2]. I was able to reproduce these test failures on current master.

Patch 6 contains a fix for this problem. Patches 1-5 fix further issues I
came across while testing, mostly on macOS. Patches 7-9 are the three
patches from Stefano's series; patch 7 drops VHOST_FILE_UNBIND as
discussed in v1, the other two are unmodified.

I have tested this patch series on Ubuntu 24.04, macOS 15, FreeBSD 14.2
and OpenBSD 7.7. On all platforms the tests are now passing. In addition,
on these platforms I have tested successfully booting a Fedora image with

  qemu-storage-daemon \
    --blockdev 
file,filename=Fedora-Cloud-Base-Generic-44-1.7.x86_64.qcow2,node-name=file \
    --blockdev qcow2,file=file,node-name=qcow2 \
    --export 
vhost-user-blk,addr.type=unix,addr.path=/tmp/vhost.socket,id=vub,num-queues=1,node-name=qcow2,writable=on

  qemu-system-x86_64 -smp 2 -M q35,memory-backend=mem \
    -object memory-backend-shm,id=mem,size="512M" \
    -device vhost-user-blk-pci,num-queues=1,chardev=char0 \
    -chardev socket,id=char0,path=/tmp/vhost.socket

Full CI run: https://gitlab.com/tpambor/qemu/-/pipelines/3007880563

[1] https://lore.kernel.org/all/[email protected]/
[2] 
https://lore.kernel.org/all/suvpzkb3ppdodjdyo5zcpngz5mwrrlq3nfowemh4tqjghbc4si@hzrsr23fganv/

Signed-off-by: Tim Pambor <[email protected]>
---
Changes in v2:
- Moved "libvhost-user: detect memfd support with a link test" to the
  front of the series.
- Added "libvhost-user: detect eventfd support with a link test".
- Replaced the library-owned self-kick notifier in libvhost-user with a
  per-ring flag; the handlers of started rings now run at the end of
  vu_dispatch(), after the reply has been sent.
- Dropped "io/channel-socket: only clear O_NONBLOCK on received fds if
  set" and instead reimplemented qemu_set_blocking() with fcntl(), so
  F_SETFL is only issued when O_NONBLOCK actually changes.
- vhost_net.c: replaced VHOST_FILE_UNBIND with -1 and dropped the
  Linux header include instead of defining the constant for other
  systems.
- Added a comment and an assert to "vhost-user: kick via
  event_notifier_set()".
- New CI run: https://gitlab.com/tpambor/qemu/-/pipelines/3007880563
- Link to v1: 
https://lore.kernel.org/qemu-devel/[email protected]

To: [email protected]
Cc: "Michael S. Tsirkin" <[email protected]>
Cc: Stefano Garzarella <[email protected]>
Cc: "Daniel P. Berrangé" <[email protected]>
Cc: Marc-André Lureau <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Cc: Kevin Wolf <[email protected]>
Cc: Hanna Reitz <[email protected]>
Cc: Jason Wang <[email protected]>
Cc: Pierrick Bouvier <[email protected]>
Cc: [email protected]
Cc: Raphael Norwitz <[email protected]>
Cc: Brad Smith <[email protected]>
Cc: [email protected]
Cc: Philippe Mathieu-Daudé <[email protected]>
Cc: Stefan Hajnoczi <[email protected]>

---
Stefano Garzarella (2):
      libvhost-user: enable it on any POSIX system
      contrib/vhost-user-blk: enable it on any POSIX system

Tim Pambor (7):
      libvhost-user: detect memfd support with a link test
      libvhost-user: detect eventfd support with a link test
      vhost-user: kick via event_notifier_set()
      libvhost-user: run handlers of started rings after the reply
      util/oslib-posix: implement qemu_set_blocking() with fcntl()
      chardev/char-socket: detect peer close portably
      vhost-user: enable frontends on any POSIX system

 chardev/char-socket.c                     |  78 +++++++++++++++-----
 contrib/vhost-user-blk/vhost-user-blk.c   |  14 ++++
 hw/block/Kconfig                          |   2 +-
 hw/net/vhost_net.c                        |   3 +-
 hw/virtio/vhost-user.c                    |  19 ++---
 meson.build                               |   5 +-
 subprojects/libvhost-user/libvhost-user.c | 118 ++++++++++++++++++++++++------
 subprojects/libvhost-user/libvhost-user.h |   3 +-
 subprojects/libvhost-user/meson.build     |  17 ++++-
 util/meson.build                          |   4 +-
 util/oslib-posix.c                        |  26 +++++--
 11 files changed, 221 insertions(+), 68 deletions(-)
---
base-commit: a19f59a72d96056d9a8f48cf6c77f5787491e414
change-id: 20261022-vhost-user-posix-e7b999aa751d

Best regards,
--  
Tim Pambor <[email protected]>


Reply via email to