[PATCH 0/8] vhost-user: another try at supporting any POSIX system

Tim Pambor posted 8 patches 5 hours ago
chardev/char-socket.c                     |  78 ++++++++---
contrib/vhost-user-blk/vhost-user-blk.c   |  14 ++
hw/block/Kconfig                          |   2 +-
hw/net/vhost_net.c                        |   6 +
hw/virtio/vhost-user.c                    |  11 +-
io/channel-socket.c                       |  19 ++-
meson.build                               |   5 +-
subprojects/libvhost-user/libvhost-user.c | 219 ++++++++++++++++++++++++++----
subprojects/libvhost-user/libvhost-user.h |  12 +-
subprojects/libvhost-user/meson.build     |  11 +-
util/meson.build                          |   4 +-
11 files changed, 319 insertions(+), 62 deletions(-)
[PATCH 0/8] vhost-user: another try at supporting any POSIX system
Posted by Tim Pambor 5 hours ago
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 4 contains a fix for this problem. Patches 1-3 fix further issues I
identified on macOS. Patches 5-7 are the three unmodified patches from
Stefano's patch series. Patch 8 contains another bugfix I came across
while testing.

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/2974109193

[1] https://lore.kernel.org/all/20240618100043.144657-1-sgarzare@redhat.com/
[2] https://lore.kernel.org/all/suvpzkb3ppdodjdyo5zcpngz5mwrrlq3nfowemh4tqjghbc4si@hzrsr23fganv/

Signed-off-by: Tim Pambor <timpambor@gmail.com>
---
Stefano Garzarella (3):
      vhost-user: enable frontends on any POSIX system
      libvhost-user: enable it on any POSIX system
      contrib/vhost-user-blk: enable it on any POSIX system

Tim Pambor (5):
      vhost-user: kick via event_notifier_set()
      libvhost-user: self-kick through a library-owned notifier
      io/channel-socket: only clear O_NONBLOCK on received fds if set
      chardev/char-socket: detect peer close portably
      libvhost-user: detect memfd support with a link test

 chardev/char-socket.c                     |  78 ++++++++---
 contrib/vhost-user-blk/vhost-user-blk.c   |  14 ++
 hw/block/Kconfig                          |   2 +-
 hw/net/vhost_net.c                        |   6 +
 hw/virtio/vhost-user.c                    |  11 +-
 io/channel-socket.c                       |  19 ++-
 meson.build                               |   5 +-
 subprojects/libvhost-user/libvhost-user.c | 219 ++++++++++++++++++++++++++----
 subprojects/libvhost-user/libvhost-user.h |  12 +-
 subprojects/libvhost-user/meson.build     |  11 +-
 util/meson.build                          |   4 +-
 11 files changed, 319 insertions(+), 62 deletions(-)
---
base-commit: a19f59a72d96056d9a8f48cf6c77f5787491e414
change-id: 20261022-vhost-user-posix-e7b999aa751d

Best regards,
--  
Tim Pambor <timpambor@gmail.com>