On Wed, Dec 13, 2017 at 10:28:59AM +0800, Changpeng Liu wrote:
> Although virtio scsi specification was designed as a replacement for virtio_blk,
> there are still many users using virtio_blk. QEMU 2.9 introduced a new device
> vhost user scsi which can process I/O in user space for virtio_scsi, this commit
> introduces a new vhost user block host device, which can support virtio_blk in
> Guest OS, and I/O processing in another I/O target.
>
> Due to the limitation for virtio_blk specification, virtio_blk device cannot get
> block information such as capacity, block size etc via the specification, several
> new vhost user messages were added to deliver virtio config space
> information between Qemu and I/O target, VHOST_USER_GET_CONFIG/VHOST_USER_SET_CONFIG
> messages used for get/set config space from/to I/O target, VHOST_USER_SET_CONFIG_FD
> was added for event notifier in case the change of virtio config space. Also, those
> messages can be used for vhost device live migration as well.
>
> Changes:
> v6-v7: change the parameter of set configuration function let it only contain
> valid data buffer.
> v5-v6: add header flags for vhost-user master so that the slave can know the
> purpose for set config, also vhost-user get/set messages' payload doesn't
> contain invalid data buffers.
> v4-v5: add header offset and size for virtio config space.
> v3-v4: refactoring the vhost user block example patch based on new libvhost-user library.
> v2-v3: add new vhost user message to get/set virtio config space.
>
> Changpeng Liu (4):
> vhost-user: add new vhost user messages to support virtio config space
> vhost-user-blk: introduce a new vhost-user-blk host device
> contrib/libvhost-user: enable virtio config space messages
> contrib/vhost-user-blk: introduce a vhost-user-blk sample application
>
> .gitignore | 1 +
> Makefile | 3 +
> Makefile.objs | 1 +
> contrib/libvhost-user/libvhost-user.c | 80 +++++
> contrib/libvhost-user/libvhost-user.h | 36 ++-
> contrib/vhost-user-blk/Makefile.objs | 1 +
> contrib/vhost-user-blk/vhost-user-blk.c | 550 ++++++++++++++++++++++++++++++++
> default-configs/pci.mak | 1 +
> docs/interop/vhost-user.txt | 45 +++
> hw/block/Makefile.objs | 3 +
> hw/block/vhost-user-blk.c | 357 +++++++++++++++++++++
> hw/virtio/vhost-user.c | 107 +++++++
> hw/virtio/vhost.c | 64 ++++
> hw/virtio/virtio-pci.c | 55 ++++
> hw/virtio/virtio-pci.h | 18 ++
> include/hw/virtio/vhost-backend.h | 14 +
> include/hw/virtio/vhost-user-blk.h | 41 +++
> include/hw/virtio/vhost.h | 16 +
> 18 files changed, 1392 insertions(+), 1 deletion(-)
> create mode 100644 contrib/vhost-user-blk/Makefile.objs
> create mode 100644 contrib/vhost-user-blk/vhost-user-blk.c
> create mode 100644 hw/block/vhost-user-blk.c
> create mode 100644 include/hw/virtio/vhost-user-blk.h
>
> --
> 1.9.3
>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>