Re: [libvirt] [PATCHv2] virsh: fix range of memtune command
On 10/25/2010 11:06 PM, Nikunj A. Dadhania wrote: On Wed, 20 Oct 2010 13:29:45 -0600, Eric Blakeebl...@redhat.com wrote: * tools/virsh.c (cmdMemtune): Use long long for memory sizes. Simplify allocation, and plug memory leak. ACK Thanks; pushed. -- Eric Blake ebl...@redhat.com+1-801-349-2682 Libvirt virtualization library http://libvirt.org -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCHv2] virsh: fix range of memtune command
On 10/20/2010 03:29 PM, Eric Blake 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. Stefan -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCHv2] virsh: fix range of memtune command
On Wed, 20 Oct 2010 13:29:45 -0600, Eric Blake ebl...@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 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list