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>