]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Make SetVcpu command hotplug only
authorCole Robinson <crobinso@redhat.com>
Tue, 9 Feb 2010 21:31:51 +0000 (16:31 -0500)
committerCole Robinson <crobinso@redhat.com>
Tue, 16 Feb 2010 16:10:40 +0000 (11:10 -0500)
Similar to the Set*Mem commands, this implementation was bogus and
misleading. Make it clear this is a hotplug only operation, and that the
hotplug piece isn't even implemented.

Also drop the overkill maxvcpus validation: we don't perform this check
at XML define time so clearly no one is missing it, and there is
always the risk that our info will be out of date, possibly preventing
legitimate CPU values.

Signed-off-by: Cole Robinson <crobinso@redhat.com>
src/qemu/qemu_driver.c

index be12eaea828940a4c8928f4ccaefbb1ed940fb3e..17a4596e35f29242cc67cc85ced2ca3a7021a409 100644 (file)
@@ -4239,12 +4239,11 @@ cleanup:
 }
 
 
-static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
+static int qemudDomainSetVcpus(virDomainPtr dom,
+                               ATTRIBUTE_UNUSED unsigned int nvcpus) {
     struct qemud_driver *driver = dom->conn->privateData;
     virDomainObjPtr vm;
-    int max;
     int ret = -1;
-    const char *type;
 
     qemuDriverLock(driver);
     vm = virDomainFindByUUID(&driver->domains, dom->uuid);
@@ -4258,41 +4257,14 @@ static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
         goto cleanup;
     }
 
-    if (qemuDomainObjBeginJob(vm) < 0)
+    if (!virDomainObjIsActive(vm)) {
+        qemuReportError(VIR_ERR_OPERATION_INVALID,
+                         "%s", _("domain is not running"));
         goto cleanup;
-
-    if (virDomainObjIsActive(vm)) {
-        qemuReportError(VIR_ERR_OPERATION_INVALID, "%s",
-                        _("cannot change vcpu count of an active domain"));
-        goto endjob;
-    }
-
-    if (!(type = virDomainVirtTypeToString(vm->def->virtType))) {
-        qemuReportError(VIR_ERR_INTERNAL_ERROR,
-                        _("unknown virt type in domain definition '%d'"),
-                        vm->def->virtType);
-        goto endjob;
     }
 
-    if ((max = qemudGetMaxVCPUs(NULL, type)) < 0) {
-        qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                        _("could not determine max vcpus for the domain"));
-        goto endjob;
-    }
-
-    if (nvcpus > max) {
-        qemuReportError(VIR_ERR_INVALID_ARG,
-                        _("requested vcpus is greater than max allowable"
-                          " vcpus for the domain: %d > %d"), nvcpus, max);
-        goto endjob;
-    }
-
-    vm->def->vcpus = nvcpus;
-    ret = 0;
-
-endjob:
-    if (qemuDomainObjEndJob(vm) == 0)
-        vm = NULL;
+    qemuReportError(VIR_ERR_NO_SUPPORT,
+                     "%s", _("cpu hotplug not yet supported"));
 
 cleanup:
     if (vm)