Based on various discussions on the 2016 KVM Forum, I'm sending over a vhost-user-scsi implementation for your consideration.
This patchset introduces a new vhost-user SCSI device. While heavily based on vhost-scsi, it is implemented using vhost's userspace counterpart. The device has been coded and tested to work with live migration. As part of this work, a new vhost-scsi-common device was created and the existing vhost-scsi device moved underneath it. The new vhost-user-scsi device is also placed underneath it. A sample application based on the newly introduced libvhost-user is also included. It makes use of libiscsi for simplicity. For convenience, I'm maintaining an up-to-date version of these patches (including some necessary fixes for libvhost-user) on: https://github.com/franciozzy/qemu/tree/vus-upstream-v5 See the individual patches for build and use instructions. Signed-off-by: Felipe Franciosi <fel...@nutanix.com> v4 -> v5: - Add a patch to fix a build issue with libvhost-user. v3 -> v4: - Drop configure switches and build vus by default. - Add sample application to .gitignore. - Removed a whitespace error. - Rebase on master. v2 -> v3: - Rebase after vhost notifier fixes by Paolo. - Exposed F_HOTPLUG and F_CHANGE on vhost-user-scsi. v1 -> v2: - Introduce new vhost-scsi-common device type. - Move vhost-scsi device underneath vhost-scsi-common. - Move sample application from tests/ to contrib/. - Make sample application use the glib event loop. - Minor fixes. Felipe Franciosi (4): libvhost-user: replace vasprintf() to fix build vhost-scsi: create a vhost-scsi-common abstraction vus: Introduce vhost-user-scsi host device vus: Introduce a vhost-user-scsi sample application .gitignore | 1 + Makefile | 3 + Makefile.objs | 4 + configure | 1 + contrib/libvhost-user/libvhost-user.c | 2 +- contrib/vhost-user-scsi/Makefile.objs | 1 + contrib/vhost-user-scsi/vhost-user-scsi.c | 886 ++++++++++++++++++++++++++++++ default-configs/pci.mak | 1 + hw/scsi/Makefile.objs | 3 +- hw/scsi/vhost-scsi-common.c | 143 +++++ hw/scsi/vhost-scsi.c | 194 ++----- hw/scsi/vhost-user-scsi.c | 215 ++++++++ hw/virtio/virtio-pci.c | 54 ++ hw/virtio/virtio-pci.h | 11 + include/hw/virtio/vhost-scsi-common.h | 48 ++ include/hw/virtio/vhost-scsi.h | 11 +- include/hw/virtio/vhost-user-scsi.h | 35 ++ include/hw/virtio/virtio-scsi.h | 5 + 18 files changed, 1469 insertions(+), 149 deletions(-) create mode 100644 contrib/vhost-user-scsi/Makefile.objs create mode 100644 contrib/vhost-user-scsi/vhost-user-scsi.c create mode 100644 hw/scsi/vhost-scsi-common.c create mode 100644 hw/scsi/vhost-user-scsi.c create mode 100644 include/hw/virtio/vhost-scsi-common.h create mode 100644 include/hw/virtio/vhost-user-scsi.h -- 1.9.4