Hi! During inter-host migration, waiting for disk requests to be drained in the vhost-user backend can incur significant downtime.
This can be avoided if QEMU migrates the inflight region in vhost-user-blk. Thus, during the qemu migration, the vhost-user backend can cancel all inflight requests and then, after migration, they will be executed on another host. At first, I tried to implement migration for all vhost-user devices that support inflight at once, but this would require a lot of changes both in vhost-user-blk (to transfer it to the base class) and in the vhost-user-base base class (inflight implementation and remodeling + a large refactor). Therefore, for now I decided to leave this idea for later and implement the migration of the inflight region first for vhost-user-blk. Alexandr Moshkov (2): vhost: support inflight save/load vhost-user-blk: support inflight migration hw/block/vhost-user-blk.c | 52 ++++++++++++++++++++++++++++++++++++ hw/virtio/vhost.c | 56 +++++++++++++++++++++++++++++++++++++++ include/hw/virtio/vhost.h | 2 ++ migration/options.c | 7 +++++ migration/options.h | 1 + qapi/migration.json | 9 +++++-- 6 files changed, 125 insertions(+), 2 deletions(-) -- 2.34.1
