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

Reply via email to