diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2009-03-16 11:44:46 +0000 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2009-03-16 11:44:46 +0000 |
commit | 8fa62166c47261a68202c5741da84ff3754c114f (patch) | |
tree | e135904c8b0beb5d50c34c12c4b18930d3e5fcef | |
parent | 35625e5aa89458a1298a82bb12866994e9c6a8fc (diff) | |
download | libvirt-8fa62166c47261a68202c5741da84ff3754c114f.tar.gz |
Avoid deadlock setting vcpus in QEMU driver
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/qemu_driver.c | 10 |
2 files changed, 14 insertions, 1 deletions
@@ -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; |