summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2009-03-16 11:44:46 +0000
committerDaniel P. Berrange <berrange@redhat.com>2009-03-16 11:44:46 +0000
commit8fa62166c47261a68202c5741da84ff3754c114f (patch)
treee135904c8b0beb5d50c34c12c4b18930d3e5fcef
parent35625e5aa89458a1298a82bb12866994e9c6a8fc (diff)
downloadlibvirt-8fa62166c47261a68202c5741da84ff3754c114f.tar.gz
Avoid deadlock setting vcpus in QEMU driver
-rw-r--r--ChangeLog5
-rw-r--r--src/qemu_driver.c10
2 files changed, 14 insertions, 1 deletions
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 <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
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;