[libvirt] [PATCHv2] virsh: fix range of memtune command

Nikunj A. Dadhania nikunj at linux.vnet.ibm.com
Tue Oct 26 05:06:21 UTC 2010


On Wed, 20 Oct 2010 13:29:45 -0600, Eric Blake <eblake at redhat.com> wrote:
> * tools/virsh.c (cmdMemtune): Use long long for memory
> sizes. Simplify allocation, and plug memory leak.
> ---
> 
> No need to cripple virsh with a 32-bit limit.
> 
> Change from v1:
> fix compilation failure, rebase on top of other recent memtune fixes
> 
>  tools/virsh.c |   19 ++++++++-----------
>  1 files changed, 8 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/virsh.c b/tools/virsh.c
> index ca9a61e..6a11a7a 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -2905,7 +2905,7 @@ static int
>  cmdMemtune(vshControl * ctl, const vshCmd * cmd)
>  {
>      virDomainPtr dom;
> -    int hard_limit, soft_limit, swap_hard_limit, min_guarantee;
> +    long long hard_limit, soft_limit, swap_hard_limit, min_guarantee;
>      int nparams = 0;
>      unsigned int i = 0;
>      virMemoryParameterPtr params = NULL, temp = NULL;
> @@ -2918,24 +2918,22 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd)
>          return FALSE;
> 
>      hard_limit =
> -        vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_HARD_LIMIT, &hard_limit);
> +        vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_HARD_LIMIT, NULL);
>      if (hard_limit)
>          nparams++;
> 
>      soft_limit =
> -        vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_SOFT_LIMIT, &soft_limit);
> +        vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_SOFT_LIMIT, NULL);
>      if (soft_limit)
>          nparams++;
> 
>      swap_hard_limit =
> -        vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT,
> -                         &swap_hard_limit);
> +        vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_SWAP_HARD_LIMIT, NULL);
>      if (swap_hard_limit)
>          nparams++;
> 
>      min_guarantee =
> -        vshCommandOptInt(cmd, VIR_DOMAIN_MEMORY_MIN_GUARANTEE,
> -                         &min_guarantee);
> +        vshCommandOptLongLong(cmd, VIR_DOMAIN_MEMORY_MIN_GUARANTEE, NULL);
>      if (min_guarantee)
>          nparams++;
> 
> @@ -2954,8 +2952,7 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd)
>          }
> 
>          /* now go get all the memory parameters */
> -        params = vshMalloc(ctl, sizeof(virMemoryParameter) * nparams);
> -        memset(params, 0, sizeof(virMemoryParameter) * nparams);
> +        params = vshCalloc(ctl, nparams, sizeof(*params));
>          if (virDomainGetMemoryParameters(dom, params, &nparams, 0) != 0) {
>              vshError(ctl, "%s", _("Unable to get memory parameters"));
>              goto cleanup;
> @@ -2995,9 +2992,8 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd)
>          ret = TRUE;
>      } else {
>          /* set the memory parameters */
> -        params = vshMalloc(ctl, sizeof(virMemoryParameter) * nparams);
> +        params = vshCalloc(ctl, nparams, sizeof(*params));
> 
> -        memset(params, 0, sizeof(virMemoryParameter) * nparams);
>          for (i = 0; i < nparams; i++) {
>              temp = &params[i];
>              temp->type = VIR_DOMAIN_MEMORY_PARAM_ULLONG;
> @@ -3037,6 +3033,7 @@ cmdMemtune(vshControl * ctl, const vshCmd * cmd)
>      }
> 
>    cleanup:
> +    VIR_FREE(params);
>      virDomainFree(dom);
>      return ret;
>  }

ACK

Nikunj




More information about the libvir-list mailing list