> [PATCH v7 00/10] vhost: support inflight share memory protocol feature
This should be v8. Please increase the version number when sending a new series. Thanks, Tiwei On Fri, Sep 20, 2019 at 08:00:52PM +0800, Jin Yu wrote: > 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 (10): > 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 an API for judging vq format > vhost: add vhost-user-blk example which support inflight > > examples/vhost_blk/Makefile | 67 ++ > examples/vhost_blk/blk.c | 125 +++ > examples/vhost_blk/blk_spec.h | 95 ++ > examples/vhost_blk/meson.build | 20 + > examples/vhost_blk/vhost_blk.c | 1313 ++++++++++++++++++++++++ > examples/vhost_blk/vhost_blk.h | 116 +++ > examples/vhost_blk/vhost_blk_compat.c | 195 ++++ > lib/librte_vhost/rte_vhost.h | 250 ++++- > lib/librte_vhost/rte_vhost_version.map | 9 + > lib/librte_vhost/vhost.c | 416 +++++++- > lib/librte_vhost/vhost.h | 16 + > lib/librte_vhost/vhost_user.c | 470 ++++++++- > lib/librte_vhost/vhost_user.h | 12 +- > 13 files changed, 3091 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 > > -- > 2.17.2 >