[libvirt] [PATCH v4] virsh: avoid missing zero value judgement in cmdBlkiotune

Michal Privoznik mprivozn at redhat.com
Thu Jul 28 11:20:05 UTC 2011


On 28.07.2011 13:13, Alex Jia wrote:
> * tools/virsh.c: fix missing zero value judgement in cmdBlkiotune and correct
>    vshError information.
>
>    when weight is equal to 0, the cmdBlkiotune will not raise any error information
>    when judge weight value first time, and execute else branch to judge weight
>    value again, strncpy(temp->field, VIR_DOMAIN_BLKIO_WEIGHT, sizeof(temp->field))
>    will be not executed for ever. However, if and only if param->field is equal
>    to VIR_DOMAIN_BLKIO_WEIGHT, underlying qemuDomainSetBlkioParameters function
>    will check whether weight value is in range [100, 1000].
>
> * how to reproduce?
>
>    % virsh blkiotune ${guestname} --weight 0
>
> Signed-off-by: Alex Jia<ajia at redhat.com>
> ---
>   tools/virsh.c |    9 +++++----
>   1 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 8bd22dc..feb45de 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -4004,6 +4004,7 @@ cmdBlkiotune(vshControl * ctl, const vshCmd * cmd)
>       virDomainPtr dom;
>       int weight = 0;
>       int nparams = 0;
> +    int rv = 0;
>       unsigned int i = 0;
>       virTypedParameterPtr params = NULL, temp = NULL;
>       bool ret = false;
> @@ -4031,15 +4032,15 @@ cmdBlkiotune(vshControl * ctl, const vshCmd * cmd)
>       if (!(dom = vshCommandOptDomain(ctl, cmd, NULL)))
>           return false;
>
> -    if (vshCommandOptInt(cmd, "weight",&weight)<  0) {
> +    if ((rv = vshCommandOptInt(cmd, "weight",&weight))<  0) {
>           vshError(ctl, "%s",
> -                 _("Unable to parse integer parameter"));
> +                 _("Unable to parse non-integer parameter"));
Why this change?
>           goto cleanup;
>       }
>
> -    if (weight) {
> +    if (rv>  0) {
>           nparams++;
> -        if (weight<  0) {
> +        if (weight<= 0) {
>               vshError(ctl, _("Invalid value of %d for I/O weight"), weight);
>               goto cleanup;
>           }




More information about the libvir-list mailing list