]> xenbits.xensource.com Git - libvirt.git/commitdiff
Avoid deadlock setting vcpus in QEMU driver
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 16 Mar 2009 11:44:46 +0000 (11:44 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Mon, 16 Mar 2009 11:44:46 +0000 (11:44 +0000)
ChangeLog
src/qemu_driver.c

index e056fe7209d67a1f255dee7447ce950aef84c31a..6fdfd278cc0e35ac905cb2ef8d458007378fdb75 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Mar 16 11:44:00 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
+
+       * src/qemu_driver.c: Avoid deadlock in virDomainSetVcpus
+       driver impl
+
 Mon Mar 16 10:55:00 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
 
        Fix subsystem lookup for older HAL releases
index dad709869fbbc79e9c9cab619664e471b1710564..51442d68c0c643f4588f99a0fdf2e3abaacb076a 100644 (file)
@@ -2725,6 +2725,7 @@ static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
     virDomainObjPtr vm;
     int max;
     int ret = -1;
+    const char *type;
 
     qemuDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
@@ -2745,7 +2746,14 @@ static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
         goto cleanup;
     }
 
-    if ((max = qemudDomainGetMaxVcpus(dom)) < 0) {
+    if (!(type = virDomainVirtTypeToString(vm->def->virtType))) {
+        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
+                         _("unknown virt type in domain definition '%d'"),
+                         vm->def->virtType);
+        goto cleanup;
+    }
+
+    if ((max = qemudGetMaxVCPUs(dom->conn, type)) < 0) {
         qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR, "%s",
                          _("could not determine max vcpus for the domain"));
         goto cleanup;