From: Peter Krempa Date: Tue, 13 Apr 2021 15:17:42 +0000 (+0200) Subject: qemuMigrationSrcRun: Don't attempt any storage migration if no disks will be migrated X-Git-Tag: v7.3.0-rc1~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=763a88a3589a88098f4d3615f596e2938a07ce0f;p=thirdparty%2Flibvirt.git qemuMigrationSrcRun: Don't attempt any storage migration if no disks will be migrated 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 element in the migration cookie if there weren't any disks to migrate. Signed-off-by: Peter Krempa Tested-by: Andrea Bolognani Reviewed-by: Michal Privoznik --- diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 9ea008836c..119459342e 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -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;