]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: skip hardcoded hostdev migration check if QEMU can do it for us
authorLaine Stump <laine@redhat.com>
Thu, 21 Jul 2022 06:03:49 +0000 (02:03 -0400)
committerLaine Stump <laine@redhat.com>
Thu, 21 Jul 2022 15:12:46 +0000 (11:12 -0400)
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>
src/qemu/qemu_migration.c

index b470c69816e4e5a771de65ed14120da1446b4bad..84befe7d39e782c553b258994ee93c5c4b2e52fb 100644 (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.