qemu: skip hardcoded hostdev migration check if QEMU can do it for us

libvirt currently will block migration for any vfio-assigned device
unless it is a network device that is associated with a virtio-net
failover device (ie. if the hostdev object has a teaming->type ==
VIR_DOMAIN_NET_TEAMING_TYPE_TRANSIENT).

In the future there will be other vfio devices that can be migrated,
so we don't want to rely on this hardcoded block. QEMU 6.0+ will
anyway inform us of any devices that will block migration (as a part
of qemuDomainGetMigrationBlockers()), so we only need to do the
hardcoded check in the case of old QEMU that can't provide that
information.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Laine Stump 2022-07-21 02:03:49 -04:00
parent 2dd5587f1d
commit 25883cd5f0

View File

@ -1494,6 +1494,14 @@ qemuMigrationSrcIsAllowed(virQEMUDriver *driver,
_("cannot migrate domain: %s"), reasons);
return false;
}
} else {
/* checks here are for anything that doesn't need to be
* checked by libvirt if running QEMU that can be queried
* about migration blockers.
*/
if (!qemuMigrationSrcIsAllowedHostdev(vm->def))
return false;
}
if (remote) {
@ -1520,9 +1528,6 @@ qemuMigrationSrcIsAllowed(virQEMUDriver *driver,
return false;
}
if (!qemuMigrationSrcIsAllowedHostdev(vm->def))
return false;
if (vm->def->cpu) {
/* QEMU blocks migration and save with invariant TSC enabled
* unless TSC frequency is explicitly set.