]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: driver: Validate configuration when setting maximum vcpu count
authorPeter Krempa <pkrempa@redhat.com>
Thu, 25 Aug 2016 19:30:21 +0000 (15:30 -0400)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 26 Aug 2016 15:30:17 +0000 (11:30 -0400)
Setting vcpu count when cpu topology is specified may result into an
invalid configuration. Since the topology can't be modified, reject the
setting if it doesn't match the requested topology. This will allow
fixing the topology in case it was broken.

Partially fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1370066

src/qemu/qemu_driver.c

index 671d1ffc2ac6c3716d41baa39ecf0002956f4fc4..2efaa2ace9a04ebe2127c541a1ca04155ca4da7c 100644 (file)
@@ -4730,6 +4730,18 @@ qemuDomainSetVcpusMax(virQEMUDriverPtr driver,
         goto cleanup;
     }
 
+    if (persistentDef && persistentDef->cpu && persistentDef->cpu->sockets) {
+        /* allow setting a valid vcpu count for the topology so an invalid
+         * setting may be corrected via this API */
+        if (nvcpus != persistentDef->cpu->sockets *
+                      persistentDef->cpu->cores *
+                      persistentDef->cpu->threads) {
+            virReportError(VIR_ERR_INVALID_ARG, "%s",
+                           _("CPU topology doesn't match the desired vcpu count"));
+            goto cleanup;
+        }
+    }
+
     if (virDomainDefSetVcpusMax(persistentDef, nvcpus, driver->xmlopt) < 0)
         goto cleanup;