[libvirt] [PATCH 3/6] Clarify that virDomainSetSchedulerParameters(Flags) can take subset

Matthias Bolte matthias.bolte at googlemail.com
Wed May 18 17:00:56 UTC 2011


2011/5/18 Eric Blake <eblake at redhat.com>:
> On 05/18/2011 04:21 AM, Matthias Bolte wrote:
>> Add invalid argument checks for params and nparams to the public API
>> and remove the from the drivers (e.g. xend).
>>
>> Add subset handling to libxl and test drivers.
>
>> @@ -5092,6 +5092,12 @@ virDomainSetSchedulerParameters(virDomainPtr domain,
>>          virDispatchError(NULL);
>>          return -1;
>>      }
>> +
>> +    if (params == NULL || nparams < 0) {
>
> So this documents that nparams should be in the closed range [1, max]...
>
>> @@ -2683,20 +2683,19 @@ static int testDomainSetSchedulerParams(virDomainPtr domain,
>>          goto cleanup;
>>      }
>>
>> -    if (nparams != 1) {
>> -        testError(VIR_ERR_INVALID_ARG, "nparams");
>> -        goto cleanup;
>> -    }
>> -    if (STRNEQ(params[0].field, "weight")) {
>> -        testError(VIR_ERR_INVALID_ARG, "field");
>> -        goto cleanup;
>> -    }
>> -    if (params[0].type != VIR_DOMAIN_SCHED_FIELD_UINT) {
>> -        testError(VIR_ERR_INVALID_ARG, "type");
>> -        goto cleanup;
>> +    for (i = 0; i < nparams; i++) {
>> +        if (STRNEQ(params[i].field, "weight")) {
>
> Hmm, this change lets us pass an array of two separate weight changes,
> the last one wins, whereas prepatch the maximum was 1, so you could not
> pass two duplicate weights.

Reminds me that I wanted to add a comment about duplicate parameters
to the setter functions.

>From a practical point of view this change didn't alter the behavior
of the test driver as the weight is hardcoded to 50 anyway :)

>> +++ b/src/xen/xen_hypervisor.c
>> @@ -1364,10 +1364,9 @@ xenHypervisorSetSchedulerParameters(virDomainPtr domain,
>>          return -1;
>>      }
>>
>> -    if ((nparams == 0) || (params == NULL)) {
>> -        virXenErrorFunc(VIR_ERR_INVALID_ARG, __FUNCTION__,
>> -                        "Noparameters given", 0);
>> -        return(-1);
>> +    if (nparams == 0) {
>> +        /* nothing to do, exit early */
>> +        return 0;
>
> Given the public check that nparams is not less than 1, this is now dead
> code.

Yep, I missed to removed that check when changing the check from
nparams < 0 to nparams <= 0.

Matthias




More information about the libvir-list mailing list