Re: [libvirt] [PATCH v1 25/32] util: numa: use VIR_AUTOPTR for aggregate types

2018-08-06 Thread Erik Skultety
On Sat, Jul 28, 2018 at 11:31:40PM +0530, Sukrit Bhatnagar wrote:
> By making use of GNU C's cleanup attribute handled by the
> VIR_AUTOPTR macro for declaring aggregate pointer variables,
> majority of the calls to *Free functions can be dropped, which
> in turn leads to getting rid of most of our cleanup sections.
>
> Signed-off-by: Sukrit Bhatnagar 
> ---
>  src/util/virnuma.c | 28 +---
>  1 file changed, 9 insertions(+), 19 deletions(-)
>
> diff --git a/src/util/virnuma.c b/src/util/virnuma.c
> index 841c7cb..fde46ec 100644
> --- a/src/util/virnuma.c
> +++ b/src/util/virnuma.c
> @@ -57,7 +57,7 @@ char *
>  virNumaGetAutoPlacementAdvice(unsigned short vcpus,
>unsigned long long balloon)
>  {
> -virCommandPtr cmd = NULL;
> +VIR_AUTOPTR(virCommand) cmd = NULL;

I'll fix the ordering as I mentioned earlier and merge.

Reviewed-by: Erik Skultety 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH v1 25/32] util: numa: use VIR_AUTOPTR for aggregate types

2018-07-28 Thread Sukrit Bhatnagar
By making use of GNU C's cleanup attribute handled by the
VIR_AUTOPTR macro for declaring aggregate pointer variables,
majority of the calls to *Free functions can be dropped, which
in turn leads to getting rid of most of our cleanup sections.

Signed-off-by: Sukrit Bhatnagar 
---
 src/util/virnuma.c | 28 +---
 1 file changed, 9 insertions(+), 19 deletions(-)

diff --git a/src/util/virnuma.c b/src/util/virnuma.c
index 841c7cb..fde46ec 100644
--- a/src/util/virnuma.c
+++ b/src/util/virnuma.c
@@ -57,7 +57,7 @@ char *
 virNumaGetAutoPlacementAdvice(unsigned short vcpus,
   unsigned long long balloon)
 {
-virCommandPtr cmd = NULL;
+VIR_AUTOPTR(virCommand) cmd = NULL;
 char *output = NULL;
 
 cmd = virCommandNewArgList(NUMAD, "-w", NULL);
@@ -71,7 +71,6 @@ virNumaGetAutoPlacementAdvice(unsigned short vcpus,
_("Failed to query numad for the "
  "advisory nodeset"));
 
-virCommandFree(cmd);
 return output;
 }
 #else /* !HAVE_NUMAD */
@@ -252,41 +251,38 @@ int
 virNumaGetNodeCPUs(int node,
virBitmapPtr *cpus)
 {
+VIR_AUTOPTR(virBitmap) cpumap = NULL;
 VIR_AUTOFREE(unsigned long *) mask = NULL;
 VIR_AUTOFREE(unsigned long *) allonesmask = NULL;
-virBitmapPtr cpumap = NULL;
 int ncpus = 0;
 int max_n_cpus = virNumaGetMaxCPUs();
 int mask_n_bytes = max_n_cpus / 8;
 size_t i;
-int ret = -1;
 
 *cpus = NULL;
 
 if (VIR_ALLOC_N(mask, mask_n_bytes / sizeof(*mask)) < 0)
-goto cleanup;
+return -1;
 
 if (VIR_ALLOC_N(allonesmask, mask_n_bytes / sizeof(*mask)) < 0)
-goto cleanup;
+return -1;
 
 memset(allonesmask, 0xff, mask_n_bytes);
 
 /* The first time this returns -1, ENOENT if node doesn't exist... */
 if (numa_node_to_cpus(node, mask, mask_n_bytes) < 0) {
 VIR_WARN("NUMA topology for cell %d is not available, ignoring", node);
-ret = -2;
-goto cleanup;
+return -2;
 }
 
 /* second, third... times it returns an all-1's mask */
 if (memcmp(mask, allonesmask, mask_n_bytes) == 0) {
 VIR_DEBUG("NUMA topology for cell %d is invalid, ignoring", node);
-ret = -2;
-goto cleanup;
+return -2;
 }
 
 if (!(cpumap = virBitmapNew(max_n_cpus)))
-goto cleanup;
+return -1;
 
 for (i = 0; i < max_n_cpus; i++) {
 if (MASK_CPU_ISSET(mask, i)) {
@@ -295,14 +291,8 @@ virNumaGetNodeCPUs(int node,
 }
 }
 
-*cpus = cpumap;
-cpumap = NULL;
-ret = ncpus;
-
- cleanup:
-virBitmapFree(cpumap);
-
-return ret;
+VIR_STEAL_PTR(*cpus, cpumap);
+return ncpus;
 }
 # undef MASK_CPU_ISSET
 # undef n_bits
-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list