It might be useful for the cases when a slow block layer should be replaced
with a more performant one on running VM without stopping, i.e. with very low
downtime comparable with the one on migration.
It's possible to achive that for two reasons:
1.The VMStates of "virtio-blk" and "vhost-user-blk" are almost the same.
They consist of the identical VMSTATE_VIRTIO_DEVICE and differs from
each other in the values of migration service fields only.
2.The device driver used in the guest is the same: virtio-blk
In the series cross-migration is achieved by adding a new type.
The new type uses virtio-blk VMState instead of vhost-user-blk specific
VMstate, also it implements migration save/load callbacks to be compatible
with migration stream produced by "virtio-blk" device.
Adding the new type instead of modifying the existing one is convenent.
It ease to differ the new virtio-blk-compatible vhost-user-blk
device from the existing non-compatible one using qemu machinery without any
other modifiactions. That gives all the variety of qemu device related
constraints out of box.
0001: adds new type "vhost-user-virtio-blk"
0002: add new type "vhost-user-virtio-blk-pci"
Denis Plotnikov (2):
vhost-user-blk: add a new vhost-user-virtio-blk type
vhost-user-blk-pci: add new pci device type to support
vhost-user-virtio-blk
hw/block/vhost-user-blk.c | 63 ++++++++++++++++++++++++++++++
hw/virtio/vhost-user-blk-pci.c | 43 ++++++++++++++++++--
include/hw/virtio/vhost-user-blk.h | 2 +
3 files changed, 105 insertions(+), 3 deletions(-)
--
2.25.1