On 10/9/19 10:48 PM, Jin Yu wrote:
> v2:
> - specify the APIs are split-ring only
>
> v3:
> - fix APIs issues and judge split or packed
>
> v4:
> - add rte_vhost_ prefix and fix issues
>
> v5:
> - add the packed ring support and add the vhost_blk example
>
> v6:
> - revise get_vring_base func depend on Tiwei's suggestion
>
> v7:
> - divide patch into small patches
>
> v8:
> - updated base on Maxime's comments
>
> v9:
> - updated base on Tiwei's comments
>
> v10:
> - fix code style and update some misleading log
>
> v11:
> - add the version log to cover letter
>
> This patches introduces two new messages VHOST_USER_GET_INFLIGHT_FD and
> VHOST_USER_SET_INFLIGHT_FD to support transferring a shared buffer between
> qemu and backend.
> Now It can both support split and packed ring. The example code show how
> these API work. The test has passed.
>
> How to test the example:
> 1, Qemu need two patches.
> https://patchwork.kernel.org/patch/10766813/
> https://patchwork.kernel.org/patch/10861411/(QEMU merged) it also needs some
> manual modifications:
> we should confirm that before we send get inflight we have already sent the
> set features but it seems Qemu didn't do like this. So we manually revise
> this, we can add below code in vhost_dev_get_inflight
> int r;
>
> r = vhost_dev_set_features(dev, dev->log_enabled);
> if (r < 0) {
> return -errno;
> }
> before get_inflight_fd.
> 2, Guest OS version >= 5.0
> 3, run the example
> 4, run the qemu with vhost-user-blk-pci.
> eg:
> -chardev socket,id=spdk_vhost_blk0,reconnect=1,path=xxxx\
> -device
> vhost-user-blk-pci,ring_packed=on,chardev=spdk_vhost_blk0,num-queues=1\
> 5, run fio in the guest
> 6, kill the example and run again.
> 7, the fio in the guest should continue run without errors.
>
>
> Jin Yu (9):
> vhost: add the inflight description
> vhost: add packed ring
> vhost: add the inflight structure
> vhost: add two new messages to support a shared buffer
> vhost: checkout the resubmit inflight information
> vhost: add the APIs to operate inflight ring
> vhost: add APIs for user getting inflight ring
> vhost: add vring functions packed ring support
> vhost: add vhost-user-blk example which support inflight
>
> examples/vhost_blk/Makefile | 68 ++
> examples/vhost_blk/blk.c | 125 +++
> examples/vhost_blk/blk_spec.h | 95 +++
> examples/vhost_blk/meson.build | 21 +
> examples/vhost_blk/vhost_blk.c | 1092 ++++++++++++++++++++++++
> examples/vhost_blk/vhost_blk.h | 128 +++
> examples/vhost_blk/vhost_blk_compat.c | 195 +++++
> lib/librte_vhost/rte_vhost.h | 237 ++++-
> lib/librte_vhost/rte_vhost_version.map | 8 +
> lib/librte_vhost/vhost.c | 407 ++++++++-
> lib/librte_vhost/vhost.h | 16 +
> lib/librte_vhost/vhost_user.c | 456 +++++++++-
> lib/librte_vhost/vhost_user.h | 12 +-
> 13 files changed, 2847 insertions(+), 13 deletions(-)
> create mode 100644 examples/vhost_blk/Makefile
> create mode 100644 examples/vhost_blk/blk.c
> create mode 100644 examples/vhost_blk/blk_spec.h
> create mode 100644 examples/vhost_blk/meson.build
> create mode 100644 examples/vhost_blk/vhost_blk.c
> create mode 100644 examples/vhost_blk/vhost_blk.h
> create mode 100644 examples/vhost_blk/vhost_blk_compat.c
>
Applied to dpdk-next-virtio/master.
Thanks,
Maxime