Hi guys, Here are patches to add feature to start QEMU without vhost-user backend. Currently, if we want to use vhost-user backend, the backend must start before QEMU. Also, if QEMU or the backend is closed unexpectedly, there is no way to recover without restarting both applications. Practically, it's not useful.
This patch series adds following features. - QEMU can start before the backend. - QEMU or the backend can restart anytime. connectivity will be recovered automatically, when app starts again. (if QEMU is server, QEMU just wait reconnection) while lost connection, link status of virtio-net device is down, so virtio-net driver on the guest can know it To work like above, the patch introduces flags to specify features vhost-user backend will support. Here are examples. ('backend_mrg_rxbuf' is an one of new flags. To know all, check the last patch) * QEMU is configured as vhost-user client. -chardev socket,id=chr0,path=/tmp/sock,reconnect=3 \ -netdev vhost-user,id=net0,chardev=chr0,vhostforce,backend_mrg_rxbuf \ -device virtio-net-pci,netdev=net0 \ * QEMU is configured as vhost-user server. -chardev socket,id=chr0,path=/tmp/sock,server,nowait \ -netdev vhost-user,id=net0,chardev=chr0,vhostforce,backend_mrg_rxbuf \ -device virtio-net-pci,netdev=net0 \ When virtio-net device is configured by virtio-net driver, QEMU should know vhost-user backend features. But if QEMU starts without the backend, QEMU cannot know it. So above the feature values specified by user will be used as features the backend will support. When connection between QEMU and the backend is established, QEMU checkes feature values of the backend to make sure the expected features are provided. If it doesn't, the connection will be closed by QEMU. Regards, Tetsuya ---------- Changes ---------- - Changes from RFC patch The last patch of this series was changed like below. - Rebase to latest master. - Remove needless has_backend_feature variable. - Change user interface to be able to specify each feature by name. - Add (Since 2.4) to schema file. - Fix commit title and body. Tetsuya Mukawa (4): vhost-user: Add ability to know vhost-user backend disconnection vhost-user: Shutdown vhost-user connection when wrong messages are passed vhost-user: Enable 'nowait' and 'reconnect' option vhost-user: Add new option to specify vhost-user backend features hw/net/vhost_net.c | 6 ++- hw/net/virtio-net.c | 13 +++++ hw/scsi/vhost-scsi.c | 2 +- hw/virtio/vhost-user.c | 24 ++++++--- hw/virtio/vhost.c | 7 ++- include/hw/virtio/vhost.h | 3 +- include/hw/virtio/virtio-net.h | 1 + include/net/net.h | 3 ++ include/net/vhost_net.h | 1 + include/sysemu/char.h | 7 +++ net/net.c | 9 ++++ net/tap.c | 1 + net/vhost-user.c | 69 ++++++++++++++++++++++++- qapi-schema.json | 114 +++++++++++++++++++++++++++++++++++------ qemu-char.c | 15 ++++++ qemu-options.hx | 10 ++++ 16 files changed, 256 insertions(+), 29 deletions(-) -- 2.1.4