[Libvir] [PATCH] Implement SetVcpus and DomainGetMaxVcpus for qemu

Jim Meyering jim at meyering.net
Tue Apr 29 09:03:53 UTC 2008


Cole Robinson <crobinso at redhat.com> wrote:
> The attached patch fills in two of the vcpu functions for the qemu driver:
>
> virDomainSetVcpus : set the number of vcpus the domain can use
> virDomainGetMaxVcpus : max number of vcpus that can be assigned to the domain.
>
> Code change is only in qemu_driver, as the backend stuff was already in place.
> I also edited qemudGetMaxVcpus to ignore case when checking the passed OS
> type, since it wasn't matching the returned results of qemudDomainGetOSType.

Hi Cole,
This looks fine, modulo a couple nits:
...
> diff --git a/src/qemu_driver.c b/src/qemu_driver.c
...
> +static int qemudDomainSetVcpus(virDomainPtr dom, unsigned int nvcpus) {
> +    struct qemud_driver *driver = (struct qemud_driver *)dom->conn->privateData;

Since it doesn't affect an interface, it's less important,
but I think "driver" can be a const pointer.

> +    struct qemud_vm *vm = qemudFindVMByUUID(driver, dom->uuid);
> +    int max;
> +
> +    if (!vm) {
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_DOMAIN,
> +                         _("no domain with matching uuid '%s'"), dom->uuid);
> +        return -1;
> +    }
> +
> +    if (qemudIsActiveVM(vm)) {
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR, "%s",
> +                         _("cannot change vcpu count of an active domain"));
> +        return -1;
> +    }
> +
> +    if ((max = qemudDomainGetMaxVcpus(dom)) < 0) {
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,

Please insert a "%s" argument here, like above, since
the message contains no "%"-directive.  This will avoid a
compile-time warning.

> +                         _("could not determine max vcpus for the domain"));
> +        return -1;
> +    }
> +
> +    if (nvcpus > max) {
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_ARG,
> +                         _("requested vcpus is greater than max allowable"
> +                           " vcpus for the domain: %d > %d"), nvcpus, max);
> +        return -1;
> +    }
> +
> +    vm->def->vcpus = nvcpus;
> +    return 0;
> +}




More information about the libvir-list mailing list