[Qemu-devel] [PATCH v10 0/4] Introduce a new vhost-user-blk host device to QEMU
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_SLAVE_CONFIG_CHANGE_MSG slave message was added for the event notifier in case the change of virtio config space. Also, those messages can be used for vhost device live migration as well. CHANGES: v10: fix the code style error. v8-v9: Several small optimization and code cleanup according to the comments. v7-v8: Instead using an event file descriptor for event notifier in case of virtio configuration space changed, while here used a new vhost-user slave message to deliver such event. Several small optimizations to address the comments from v7. 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 | 42 +++ contrib/libvhost-user/libvhost-user.h | 33 ++ contrib/vhost-user-blk/Makefile.objs| 1 + contrib/vhost-user-blk/vhost-user-blk.c | 545 default-configs/pci.mak | 1 + docs/interop/vhost-user.txt | 55 hw/block/Makefile.objs | 3 + hw/block/vhost-user-blk.c | 359 + hw/virtio/vhost-user.c | 118 +++ hw/virtio/vhost.c | 32 ++ hw/virtio/virtio-pci.c | 55 hw/virtio/virtio-pci.h | 18 ++ include/hw/virtio/vhost-backend.h | 12 + include/hw/virtio/vhost-user-blk.h | 41 +++ include/hw/virtio/vhost.h | 15 + 18 files changed, 1335 insertions(+) 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
Re: [Qemu-devel] [PATCH v10 0/4] Introduce a new vhost-user-blk host device to QEMU
Hi On Thu, Jan 4, 2018 at 2:53 AM, 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_SLAVE_CONFIG_CHANGE_MSG > slave message was added for the event notifier in case the change of virtio > config space. Also, > those messages can be used for vhost device live migration as well. > > CHANGES: > v10: fix the code style error. > v8-v9: Several small optimization and code cleanup according to the comments. > v7-v8: Instead using an event file descriptor for event notifier in case of > virtio > configuration space changed, while here used a new vhost-user slave message > to deliver > such event. Several small optimizations to address the comments from v7. > 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 Series: Reviewed-by: Marc-André Lureau Michael, do you take it? thanks > > .gitignore | 1 + > Makefile| 3 + > Makefile.objs | 1 + > contrib/libvhost-user/libvhost-user.c | 42 +++ > contrib/libvhost-user/libvhost-user.h | 33 ++ > contrib/vhost-user-blk/Makefile.objs| 1 + > contrib/vhost-user-blk/vhost-user-blk.c | 545 > > default-configs/pci.mak | 1 + > docs/interop/vhost-user.txt | 55 > hw/block/Makefile.objs | 3 + > hw/block/vhost-user-blk.c | 359 + > hw/virtio/vhost-user.c | 118 +++ > hw/virtio/vhost.c | 32 ++ > hw/virtio/virtio-pci.c | 55 > hw/virtio/virtio-pci.h | 18 ++ > include/hw/virtio/vhost-backend.h | 12 + > include/hw/virtio/vhost-user-blk.h | 41 +++ > include/hw/virtio/vhost.h | 15 + > 18 files changed, 1335 insertions(+) > 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 > > -- Marc-André Lureau
Re: [Qemu-devel] [PATCH v10 0/4] Introduce a new vhost-user-blk host device to QEMU
On Thu, Jan 04, 2018 at 12:07:39PM +0100, Marc-André Lureau wrote: > Hi > > On Thu, Jan 4, 2018 at 2:53 AM, 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_SLAVE_CONFIG_CHANGE_MSG > > slave message was added for the event notifier in case the change of virtio > > config space. Also, > > those messages can be used for vhost device live migration as well. > > > > CHANGES: > > v10: fix the code style error. > > v8-v9: Several small optimization and code cleanup according to the > > comments. > > v7-v8: Instead using an event file descriptor for event notifier in case of > > virtio > > configuration space changed, while here used a new vhost-user slave message > > to deliver > > such event. Several small optimizations to address the comments from v7. > > 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 > > Series: > Reviewed-by: Marc-André Lureau > > Michael, do you take it? > thanks Plan to. Thanks, MST > > > > .gitignore | 1 + > > Makefile| 3 + > > Makefile.objs | 1 + > > contrib/libvhost-user/libvhost-user.c | 42 +++ > > contrib/libvhost-user/libvhost-user.h | 33 ++ > > contrib/vhost-user-blk/Makefile.objs| 1 + > > contrib/vhost-user-blk/vhost-user-blk.c | 545 > > > > default-configs/pci.mak | 1 + > > docs/interop/vhost-user.txt | 55 > > hw/block/Makefile.objs | 3 + > > hw/block/vhost-user-blk.c | 359 + > > hw/virtio/vhost-user.c | 118 +++ > > hw/virtio/vhost.c | 32 ++ > > hw/virtio/virtio-pci.c | 55 > > hw/virtio/virtio-pci.h | 18 ++ > > include/hw/virtio/vhost-backend.h | 12 + > > include/hw/virtio/vhost-user-blk.h | 41 +++ > > include/hw/virtio/vhost.h | 15 + > > 18 files changed, 1335 insertions(+) > > 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 > > > > > > > > -- > Marc-André Lureau