]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuMigrationSrcRun: Don't attempt any storage migration if no disks will be migrated
authorPeter Krempa <pkrempa@redhat.com>
Tue, 13 Apr 2021 15:17:42 +0000 (17:17 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 26 Apr 2021 15:22:30 +0000 (17:22 +0200)
Don't even try to setup storage migration if there are no eligible
disks.

This also fixes migration from older libvirts which didn't format an
empty <nbd/> element in the migration cookie if there weren't any disks
to migrate.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Tested-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_migration.c

index 9ea008836c4f7658db6f07e72f506ad66c1c8b85..119459342e1dcf974b5305a9d70a8c4ac42defad 100644 (file)
@@ -312,6 +312,22 @@ qemuMigrationAnyCopyDisk(virDomainDiskDef const *disk,
 }
 
 
+static bool
+qemuMigrationHasAnyStorageMigrationDisks(virDomainDef *def,
+                                         const char **migrate_disks,
+                                         size_t nmigrate_disks)
+{
+    size_t i;
+
+    for (i = 0; i < def->ndisks; i++) {
+        if (qemuMigrationAnyCopyDisk(def->disks[i], nmigrate_disks, migrate_disks))
+            return true;
+    }
+
+    return false;
+}
+
+
 static int
 qemuMigrationDstPrecreateStorage(virDomainObj *vm,
                                  qemuMigrationCookieNBD *nbd,
@@ -4011,6 +4027,11 @@ qemuMigrationSrcRun(virQEMUDriver *driver,
               spec, spec->destType, spec->fwdType, dconn,
               NULLSTR(graphicsuri), nmigrate_disks, migrate_disks);
 
+    if (storageMigration)
+        storageMigration = qemuMigrationHasAnyStorageMigrationDisks(vm->def,
+                                                                    migrate_disks,
+                                                                    nmigrate_disks);
+
     if (storageMigration) {
         cookieFlags |= QEMU_MIGRATION_COOKIE_NBD;