v3 -> v4:
- add new protocol message GET_VRING_BASE_SKIP_DRAIN instead of parameter to
GET_VRING_BASE message. This new message can be send instead of GET_VRING_BASE,
allowing back-end to suspend inflight I/O immediately instead of waiting and
completing them.
- rebase to newer master
v2 -> v3:
- fix complile problems
- add assert check in do_vhost_virtio_stop
- make inflight-migration property mutable
v1 -> v2:
- reorganize commits: make refactor commits first, then core semantic change
- add additional pre_save check for inflight migration possibility
---
This is a small continuation of my series about inflight migration for
vhost-user-blk.
This series is designed to solve the problem of compatibility with older
versions of qemu, where this feature has not yet been introduced (for example,
if we want to downgrade versions due to some problems).
In the current version for vhost-user-blk, this feature is enabled using the
parameter and further migration of the inflight region will depend on whether
the vhost-user has accepted the new protocol feature or not. This creates an
inconvenient dependency, because there is no way to disable this feature
without reconnecting to the backend.
This series add new protocol message - GET_VRING_BASE_SKIP_DRAIN. This new
message can be send instead of GET_VRING_BASE, allowing back-end to suspend
inflight I/O immediately instead of waiting and completing them. This new
message can be used only with protocol feature
VHOST_USER_PROTOCOL_F_GET_VRING_BASE_INFLIGHT.
Thus, now user can enable or disable inflight-migration param for
vhost-user-blk to maintain compatibility with older versions of QEMU by using
GET_VRING_BASE_SKIP_DRAIN or GET_VRING_BASE messages.
Alexandr Moshkov (6):
vhost-user: add skip_drain param to do_vhost_virtqueue_stop
vhost-user: add GET_VRING_BASE_SKIP_DRAIN message
vhost-user: use skip_drain with GET_VRING_BASE_SKIP_DRAIN message
vhost-user-blk: make inflight-migration prop mutable
vhost-user-blk: move inflight_needed higher
vhost-user-blk: use GET_VRING_BASE_SKIP_DRAIN during inflight
migration
backends/cryptodev-vhost.c | 2 +-
backends/vhost-user.c | 2 +-
docs/interop/vhost-user.rst | 38 ++++++++++++++++++---------
hw/block/vhost-user-blk.c | 43 +++++++++++++++++++++++++------
hw/net/vhost_net.c | 9 ++++---
hw/scsi/vhost-scsi-common.c | 2 +-
hw/virtio/vdpa-dev.c | 2 +-
hw/virtio/vhost-user-base.c | 2 +-
hw/virtio/vhost-user-fs.c | 2 +-
hw/virtio/vhost-user-scmi.c | 2 +-
hw/virtio/vhost-user.c | 40 +++++++++++++++++++++++-----
hw/virtio/vhost-vsock-common.c | 2 +-
hw/virtio/vhost.c | 34 +++++++++++++++++-------
include/hw/virtio/vhost-backend.h | 1 +
include/hw/virtio/vhost-user.h | 1 -
include/hw/virtio/vhost.h | 7 +++--
16 files changed, 137 insertions(+), 52 deletions(-)
--
2.34.1