From: Daniel P. Berrange Date: Mon, 16 Mar 2009 11:44:46 +0000 (+0000) Subject: Avoid deadlock setting vcpus in QEMU driver X-Git-Url: http://git.et.redhat.com/?p=libvirt.git;a=commitdiff_plain;h=4d7ecd146ce4de847256ae0887963719f214f62f Avoid deadlock setting vcpus in QEMU driver --- diff --git a/src/qemu_driver.c b/src/qemu_driver.c index dad7098..51442d6 100644 --- a/src/qemu_driver.c +++ b/src/qemu_driver.c @@ -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;