[libvirt] [PATCH 07/12] vcpu: make old API trivially wrap to new API

Matthias Bolte matthias.bolte at googlemail.com
Fri Oct 1 15:26:02 UTC 2010


2010/9/30 Eric Blake <eblake at redhat.com>:
> * src/esx/esx_driver.c (esxDomainSetVcpus, escDomainGetMaxVpcus):
> Move guts...
> (esxDomainSetVcpusFlags, esxDomainGetVcpusFlags): ...to new
> functions.
> (esxDriver): Trivially support the new API.
> * src/openvz/openvz_driver.c (openvzDomainSetVcpus)
> (openvzDomainSetVcpusFlags, openvzDomainGetMaxVcpus)
> (openvzDomainGetVcpusFlags, openvzDriver): Likewise.
> * src/phyp/phyp_driver.c (phypDomainSetCPU)
> (phypDomainSetVcpusFlags, phypGetLparCPUMAX)
> (phypDomainGetVcpusFlags, phypDriver): Likewise.
> * src/qemu/qemu_driver.c (qemudDomainSetVcpus)
> (qemudDomainSetVcpusFlags, qemudDomainGetMaxVcpus)
> (qemudDomainGetVcpusFlags, qemuDriver): Likewise.
> * src/test/test_driver.c (testSetVcpus, testDomainSetVcpusFlags)
> (testDomainGetMaxVcpus, testDomainGetVcpusFlags, testDriver):
> Likewise.
> * src/vbox/vbox_tmpl.c (vboxDomainSetVcpus)
> (vboxDomainSetVcpusFlags, virDomainGetMaxVcpus)
> (virDomainGetVcpusFlags, virDriver): Likewise.
> * src/xen/xen_driver.c (xenUnifiedDomainSetVcpus)
> (xenUnifiedDomainSetVcpusFlags, xenUnifiedDomainGetMaxVcpus)
> (xenUnifiedDomainGetVcpusFlags, xenUnifiedDriver): Likewise.
> * src/xenapi/xenapi_driver.c (xenapiDomainSetVcpus)
> (xenapiDomainSetVcpusFlags, xenapiDomainGetMaxVcpus)
> (xenapiDomainGetVcpusFlags, xenapiDriver): Likewise.
> (xenapiError): New helper macro.
> ---
>
> Long, but consistent - anywhere the old API exists, this implements
> the new API, makes the old one a wrapper around the new, and makes
> the new API fail for any flag combinations not yet implemented.
>
>  src/esx/esx_driver.c       |   32 +++++++++++++++++++---
>  src/openvz/openvz_driver.c |   34 +++++++++++++++++++++---
>  src/phyp/phyp_driver.c     |   32 ++++++++++++++++++++---
>  src/qemu/qemu_driver.c     |   38 +++++++++++++++++++++++++---
>  src/test/test_driver.c     |   36 ++++++++++++++++++++++---
>  src/vbox/vbox_tmpl.c       |   36 +++++++++++++++++++++++---
>  src/xen/xen_driver.c       |   34 ++++++++++++++++++++++---
>  src/xenapi/xenapi_driver.c |   60 ++++++++++++++++++++++++++++++++++++++------
>  8 files changed, 263 insertions(+), 39 deletions(-)
>
> diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c
> index 1db3a90..3d13d74 100644
> --- a/src/esx/esx_driver.c
> +++ b/src/esx/esx_driver.c
> @@ -2382,7 +2382,8 @@ esxDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info)
>
>
>  static int
> -esxDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)
> +esxDomainSetVcpusFlags(virDomainPtr domain, unsigned int nvcpus,
> +                       unsigned int flags)
>  {
>     int result = -1;
>     esxPrivate *priv = domain->conn->privateData;
> @@ -2392,6 +2393,11 @@ esxDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)
>     esxVI_ManagedObjectReference *task = NULL;
>     esxVI_TaskInfoState taskInfoState;
>
> +    if (flags != VIR_DOMAIN_VCPU_ACTIVE) {
> +        ESX_ERROR(VIR_ERR_INVALID_ARG, _("unsupported flags: (0x%x)"), flags);
> +        return -1;
> +    }
> +

Why not use virCheckFlags here?

>     if (nvcpus < 1) {
>         ESX_ERROR(VIR_ERR_INVALID_ARG, "%s",
>                   _("Requested number of virtual CPUs must at least be 1"));
> @@ -2451,15 +2457,26 @@ esxDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)
>  }
>
>
> +static int
> +esxDomainSetVcpus(virDomainPtr domain, unsigned int nvcpus)
> +{
> +    return esxDomainSetVcpusFlags(domain, nvcpus, VIR_DOMAIN_VCPU_ACTIVE);
> +}
> +
>
>  static int
> -esxDomainGetMaxVcpus(virDomainPtr domain)
> +esxDomainGetVcpusFlags(virDomainPtr domain, unsigned int flags)
>  {
>     esxPrivate *priv = domain->conn->privateData;
>     esxVI_String *propertyNameList = NULL;
>     esxVI_ObjectContent *hostSystem = NULL;
>     esxVI_DynamicProperty *dynamicProperty = NULL;
>
> +    if (flags != (VIR_DOMAIN_VCPU_ACTIVE | VIR_DOMAIN_VCPU_MAXIMUM)) {
> +        ESX_ERROR(VIR_ERR_INVALID_ARG, _("unsupported flags: (0x%x)"), flags);
> +        return -1;
> +    }
> +

virCheckFlags?

This pattern reoccurs through the rest of the patch.

Matthias




More information about the libvir-list mailing list