[libvirt] [PATCH 2/4] qemu: Make SetVcpu command hotplug only
Daniel P. Berrange
berrange at redhat.com
Mon Feb 15 11:09:21 UTC 2010
On Fri, Feb 12, 2010 at 10:32:15AM -0500, Cole Robinson wrote:
> 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.
> ---
> src/qemu/qemu_driver.c | 42 +++++++-----------------------------------
> 1 files changed, 7 insertions(+), 35 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 56a450c..ef1f638 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4100,12 +4100,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);
> @@ -4119,41 +4118,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)
ACK
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list