Re: [PATCH v5 4/6] vhost-user-blk: make inflight-migration prop mutable
"Michael S. Tsirkin" <[email protected]> Wed, 29 Jul 2026 05:32:50 -0400
| Newsgroups | dev.linux.lists.virtio-fs,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Jul 28, 2026 at 03:08:39PM +0500, Alexandr Moshkov wrote: > When migrating from a QEMU version that supports inflight-migration to > an older one that does not, there is no way to disable the feature at > runtime — the VM must be stopped and reconfigured. This is impractical > in production environments. > > Make the inflight-migration property mutable after device realization > so it can be toggled via qom-set without restarting the VM. > > Acked-by: Raphael Norwitz <[email protected]> > Signed-off-by: Alexandr Moshkov <[email protected]> I think I am beginning to understand. You are running qemu with inflight-migration on and want to migrate to qemu without inflight-migration at all. Since it is guest transparent you could retrofit it like this. My question is why is it worth it, we do not normally support migrating between qemu versions with different command lines. > --- > hw/block/vhost-user-blk.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c > index e3b873af7c..650c004bde 100644 > --- a/hw/block/vhost-user-blk.c > +++ b/hw/block/vhost-user-blk.c > @@ -619,6 +619,8 @@ static const VMStateDescription vmstate_vhost_user_blk = { > } > }; > > +static PropertyInfo vhost_user_blk_inflight_migration_prop; > + > static const Property vhost_user_blk_properties[] = { > DEFINE_PROP_CHR("chardev", VHostUserBlk, chardev), > DEFINE_PROP_UINT16("num-queues", VHostUserBlk, num_queues, > @@ -632,8 +634,9 @@ static const Property vhost_user_blk_properties[] = { > VIRTIO_BLK_F_WRITE_ZEROES, true), > DEFINE_PROP_BOOL("skip-get-vring-base-on-force-shutdown", VHostUserBlk, > skip_get_vring_base_on_force_shutdown, false), > - DEFINE_PROP_BOOL("inflight-migration", VHostUserBlk, > - inflight_migration, false), > + DEFINE_PROP("inflight-migration", VHostUserBlk, inflight_migration, > + vhost_user_blk_inflight_migration_prop, bool, > + .set_default = true, .defval.u = false), > }; > > static void vhost_user_blk_class_init(ObjectClass *klass, const void *data) > @@ -665,6 +668,9 @@ static const TypeInfo vhost_user_blk_info = { > > static void virtio_register_types(void) > { > + vhost_user_blk_inflight_migration_prop = qdev_prop_bool; > + vhost_user_blk_inflight_migration_prop.realized_set_allowed = true; > + > type_register_static(&vhost_user_blk_info); > } So then, for example, let us say I paused the VM, then set the flag, now inflight is on but GET_BASE did not drain it? > -- > 2.34.1