All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: elohimes@gmail.com, mst@redhat.com, stefanha@gmail.com,
	marcandre.lureau@redhat.com, berrange@redhat.com,
	maxime.coquelin@redhat.com, yury-kotov@yandex-team.ru,
	wrfsh@yandex-team.ru
Cc: qemu-devel@nongnu.org, zhangyu31@baidu.com, chaiwen@baidu.com,
	nixun@baidu.com, lilin24@baidu.com,
	Xie Yongji <xieyongji@baidu.com>
Subject: Re: [Qemu-devel] [PATCH v5 0/6] vhost-user-blk: Add support for backend reconnecting
Date: Wed, 30 Jan 2019 10:29:10 +0800	[thread overview]
Message-ID: <30a4a533-042e-0f54-1449-ecd7ed26aa1b@redhat.com> (raw)
In-Reply-To: <20190122083152.10705-1-xieyongji@baidu.com>


On 2019/1/22 下午4:31, elohimes@gmail.com wrote:
> From: Xie Yongji <xieyongji@baidu.com>
>
> This patchset is aimed at supporting qemu to reconnect
> vhost-user-blk backend after vhost-user-blk backend crash or
> restart.
>
> The patch 1 introduces two new messages VHOST_USER_GET_INFLIGHT_FD
> and VHOST_USER_SET_INFLIGHT_FD to support support transferring shared
> buffer between qemu and backend.
>
> The patch 2,3 are the corresponding libvhost-user patches of
> patch 1. Make libvhost-user support VHOST_USER_GET_INFLIGHT_FD
> and VHOST_USER_SET_INFLIGHT_FD.
>
> The patch 4 allows vhost-user-blk to use the two new messages
> to get/set inflight buffer from/to backend.
>
> The patch 5 supports vhost-user-blk to reconnect backend when
> connection closed.
>
> The patch 6 introduces VHOST_USER_PROTOCOL_F_SLAVE_SHMFD
> to vhost-user-blk backend which is used to tell qemu that
> we support reconnecting now.
>
> This series is based on Daniel P. Berrangé's patchset:
>
> https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg03344.html
>
> To use it, we could start qemu with:
>
> qemu-system-x86_64 \
>          -chardev socket,id=char0,path=/path/vhost.socket,reconnect=1, \
>          -device vhost-user-blk-pci,chardev=char0 \
>
> and start vhost-user-blk backend with:
>
> vhost-user-blk -b /path/file -s /path/vhost.socket
>
> Then we can restart vhost-user-blk at any time during VM running.
>
> V4 to V5:
> - Drop patch that enables "nowait" option on client sockets
> - Support resubmitting inflight I/O in order
> - Make inflight I/O tracking more robust
> - Remove align field and add queue size field in VhostUserInflight
> - Document more details in vhost-user.txt


I'm still not convinced about this approach. If the maintainer decide to 
merge, at least two things needs to be added besides the correctness of 
the code:

- you need prove that this approach can work for packed ring

-  an unit-test to test the crash during logging in-flight descriptor.

Thanks


>
> V3 to V4:
> - Drop messages VHOST_USER_GET_SHM_SIZE and VHOST_USER_SET_SHM_FD
> - Introduce two new messages VHOST_USER_GET_INFLIGHT_FD
>    and VHOST_USER_SET_INFLIGHT_FD
> - Allocate inflight buffer in backend rather than in qemu
> - Document a recommended format for inflight buffer
>
> V2 to V3:
> - Using exisiting wait/nowait options to control connection on
>    client sockets instead of introducing "disconnected" option.
> - Support the case that vhost-user backend restart during initialzation
>    of vhost-user-blk device.
>
> V1 to V2:
> - Introduce "disconnected" option for chardev instead of reuse "wait"
>    option
> - Support the case that QEMU starts before vhost-user backend
> - Drop message VHOST_USER_SET_VRING_INFLIGHT
> - Introduce two new messages VHOST_USER_GET_SHM_SIZE
>    and VHOST_USER_SET_SHM_FD
>
> Xie Yongji (6):
>    vhost-user: Support transferring inflight buffer between qemu and
>      backend
>    libvhost-user: Introduce vu_queue_map_desc()
>    libvhost-user: Support tracking inflight I/O in shared memory
>    vhost-user-blk: Add support to get/set inflight buffer
>    vhost-user-blk: Add support to reconnect backend
>    contrib/vhost-user-blk: enable inflight I/O tracking
>
>   Makefile                                |   2 +-
>   contrib/libvhost-user/libvhost-user.c   | 402 ++++++++++++++++++++----
>   contrib/libvhost-user/libvhost-user.h   |  40 +++
>   contrib/vhost-user-blk/vhost-user-blk.c |   3 +-
>   docs/interop/vhost-user.txt             | 101 ++++++
>   hw/block/vhost-user-blk.c               | 227 ++++++++++---
>   hw/virtio/vhost-user.c                  | 110 +++++++
>   hw/virtio/vhost.c                       | 105 +++++++
>   include/hw/virtio/vhost-backend.h       |  10 +
>   include/hw/virtio/vhost-user-blk.h      |   5 +
>   include/hw/virtio/vhost.h               |  19 ++
>   11 files changed, 925 insertions(+), 99 deletions(-)
>

  parent reply	other threads:[~2019-01-30  2:36 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-22  8:31 [Qemu-devel] [PATCH v5 0/6] vhost-user-blk: Add support for backend reconnecting elohimes
2019-01-22  8:31 ` [Qemu-devel] [PATCH v5 1/6] vhost-user: Support transferring inflight buffer between qemu and backend elohimes
2019-01-29  4:11   ` Stefan Hajnoczi
2019-01-29  4:26     ` Michael S. Tsirkin
2019-01-29  6:15       ` Yongji Xie
2019-01-29 14:15         ` Michael S. Tsirkin
2019-01-30  2:07           ` Yongji Xie
2019-01-30  2:30             ` Michael S. Tsirkin
2019-01-30  3:49               ` Yongji Xie
2019-01-30  4:07                 ` Michael S. Tsirkin
2019-01-30  4:11                   ` Yongji Xie
2019-01-22  8:31 ` [Qemu-devel] [PATCH v5 2/6] libvhost-user: Introduce vu_queue_map_desc() elohimes
2019-01-22  8:31 ` [Qemu-devel] [PATCH v5 3/6] libvhost-user: Support tracking inflight I/O in shared memory elohimes
2019-01-30  2:31   ` Jason Wang
2019-01-30  3:14     ` Michael S. Tsirkin
2019-01-30  9:52       ` Jason Wang
2019-01-30  3:58     ` Yongji Xie
2019-02-01  2:26       ` Jason Wang
2019-01-30  5:48     ` Yongji Xie
2019-02-01  2:27       ` Jason Wang
2019-02-05  1:37         ` Yongji Xie
2019-01-22  8:31 ` [Qemu-devel] [PATCH v5 4/6] vhost-user-blk: Add support to get/set inflight buffer elohimes
2019-01-22  8:31 ` [Qemu-devel] [PATCH v5 5/6] vhost-user-blk: Add support to reconnect backend elohimes
2019-01-22  8:31 ` [Qemu-devel] [PATCH v5 6/6] contrib/vhost-user-blk: enable inflight I/O tracking elohimes
2019-01-30  2:29 ` Jason Wang [this message]
2019-01-30  3:40   ` [Qemu-devel] [PATCH v5 0/6] vhost-user-blk: Add support for backend reconnecting Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=30a4a533-042e-0f54-1449-ecd7ed26aa1b@redhat.com \
    --to=jasowang@redhat.com \
    --cc=berrange@redhat.com \
    --cc=chaiwen@baidu.com \
    --cc=elohimes@gmail.com \
    --cc=lilin24@baidu.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=mst@redhat.com \
    --cc=nixun@baidu.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=wrfsh@yandex-team.ru \
    --cc=xieyongji@baidu.com \
    --cc=yury-kotov@yandex-team.ru \
    --cc=zhangyu31@baidu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.