From 8fa62166c47261a68202c5741da84ff3754c114f Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Mon, 16 Mar 2009 11:44:46 +0000 Subject: [PATCH] Avoid deadlock setting vcpus in QEMU driver --- ChangeLog | 5 +++++ src/qemu_driver.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e056fe7209..6fdfd278cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Mar 16 11:44:00 GMT 2009 Daniel P. Berrange + + * src/qemu_driver.c: Avoid deadlock in virDomainSetVcpus + driver impl + Mon Mar 16 10:55:00 GMT 2009 Daniel P. Berrange Fix subsystem lookup for older HAL releases diff --git a/src/qemu_driver.c b/src/qemu_driver.c index dad709869f..51442d68c0 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;