]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
qemu_domain: fix startup policy for disks
authorPavel Hrdina <phrdina@redhat.com>
Fri, 27 Jun 2014 14:34:07 +0000 (16:34 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Wed, 2 Jul 2014 13:42:03 +0000 (15:42 +0200)
https://bugzilla.redhat.com/show_bug.cgi?id=1086121

We now support startupPolicy='optional' for disks, but this
should work only for cold boot, not for restore or migrate.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_domain.c

index 9e38d02ea2bdfbbbce317879b060c97c58c72498..0e1c2631f7b17440bf634214d4ef5bad57f41b9d 100644 (file)
@@ -2230,11 +2230,19 @@ qemuDomainCheckDiskStartupPolicy(virQEMUDriverPtr driver,
 {
     char uuid[VIR_UUID_STRING_BUFLEN];
     int startupPolicy = vm->def->disks[diskIndex]->startupPolicy;
+    int device = vm->def->disks[diskIndex]->device;
 
     virUUIDFormat(vm->def->uuid, uuid);
 
     switch ((virDomainStartupPolicy) startupPolicy) {
         case VIR_DOMAIN_STARTUP_POLICY_OPTIONAL:
+            /* Once started with an optional disk, qemu saves its section
+             * in the migration stream, so later, when restoring from it
+             * we must make sure the sections match. */
+            if (!cold_boot &&
+                device != VIR_DOMAIN_DISK_DEVICE_FLOPPY &&
+                device != VIR_DOMAIN_DISK_DEVICE_CDROM)
+                goto error;
             break;
 
         case VIR_DOMAIN_STARTUP_POLICY_MANDATORY: