[libvirt] [PATCH 2/5] libxl: allow getting < max typed parameters

Stefan Berger stefanb at linux.vnet.ibm.com
Wed Nov 2 18:35:09 UTC 2011


On 11/02/2011 02:00 PM, Eric Blake wrote:
> Allow the user to call with nparams too small, per API documentation.
>
> * src/libxl/libxl_driver.c
> (libxlDomainGetSchedulerParametersFlags): Allow fewer than max.
> ---
>   src/libxl/libxl_driver.c |   22 ++++++++++------------
>   1 files changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
> index d324632..06dfe0a 100644
> --- a/src/libxl/libxl_driver.c
> +++ b/src/libxl/libxl_driver.c
> @@ -3631,11 +3631,6 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom,
>           goto cleanup;
>       }
>
> -    if (*nparams<  XEN_SCHED_CREDIT_NPARAM) {
> -        libxlError(VIR_ERR_INVALID_ARG, "%s", _("Invalid parameter count"));
> -        goto cleanup;
> -    }
> -
>       if (libxl_sched_credit_domain_get(&priv->ctx, dom->id,&sc_info) != 0) {
>           libxlError(VIR_ERR_INTERNAL_ERROR,
>                      _("Failed to get scheduler parameters for domain '%d'"
> @@ -3651,15 +3646,18 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom,
>           goto cleanup;
>       }
>
> -    params[1].value.ui = sc_info.cap;
> -    params[1].type = VIR_TYPED_PARAM_UINT;
> -    if (virStrcpyStatic(params[1].field, "cap") == NULL) {
> -        libxlError(VIR_ERR_INTERNAL_ERROR,
> -                   "%s", _("Field cap too long for destination"));
> -        goto cleanup;
> +    if (*nparams>  1) {
> +        params[1].value.ui = sc_info.cap;
> +        params[1].type = VIR_TYPED_PARAM_UINT;
> +        if (virStrcpyStatic(params[1].field, "cap") == NULL) {
I remember this one here:

VIR_DOMAIN_SCHEDULER_CAP

Is this the same one ? If so, maybe you want to replace it.


> +            libxlError(VIR_ERR_INTERNAL_ERROR,
> +                       "%s", _("Field cap too long for destination"));
Also, would it be worth doing the same here as you did in the other 
patches using "%s" in place of 'cap'?
> +            goto cleanup;
> +        }
>       }
>
> -    *nparams = XEN_SCHED_CREDIT_NPARAM;
> +    if (*nparams>  XEN_SCHED_CREDIT_NPARAM)
> +        *nparams = XEN_SCHED_CREDIT_NPARAM;
>       ret = 0;
>
>   cleanup:




More information about the libvir-list mailing list