[libvirt] [PATCH 1/5] util: bitmap: Modify virBitmapSubtract to virBitmapIntersect

Peter Krempa posted 5 patches 7 years, 10 months ago
[libvirt] [PATCH 1/5] util: bitmap: Modify virBitmapSubtract to virBitmapIntersect
Posted by Peter Krempa 7 years, 10 months ago
Since virBitmapSubtract is unused modify it to perform bitmap
intersection.
---
 src/libvirt_private.syms |  2 +-
 src/util/virbitmap.c     | 14 +++++++-------
 src/util/virbitmap.h     |  2 +-
 tests/virbitmaptest.c    | 14 +++++++-------
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 3f94521df..4ad1f7a60 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1295,6 +1295,7 @@ virBitmapEqual;
 virBitmapFormat;
 virBitmapFree;
 virBitmapGetBit;
+virBitmapIntersect;
 virBitmapIsAllClear;
 virBitmapIsAllSet;
 virBitmapIsBitSet;
@@ -1315,7 +1316,6 @@ virBitmapSetBit;
 virBitmapSetBitExpand;
 virBitmapSize;
 virBitmapString;
-virBitmapSubtract;
 virBitmapToData;
 virBitmapToDataBuf;

diff --git a/src/util/virbitmap.c b/src/util/virbitmap.c
index eac63d997..a5077fe7c 100644
--- a/src/util/virbitmap.c
+++ b/src/util/virbitmap.c
@@ -1091,15 +1091,15 @@ virBitmapOverlaps(virBitmapPtr b1,
 }

 /**
- * virBitmapSubtract:
- * @a: minuend/result
- * @b: subtrahend
+ * virBitmapIntersect:
+ * @a: bitmap, modified to contain result
+ * @b: bitmap
  *
- * Performs bitwise subtraction: a = a - b
+ * Performs intersection of two bitmaps: a = intersect(a, b)
  */
 void
-virBitmapSubtract(virBitmapPtr a,
-                  virBitmapPtr b)
+virBitmapIntersect(virBitmapPtr a,
+                   virBitmapPtr b)
 {
     size_t i;
     size_t max = a->map_len;
@@ -1108,5 +1108,5 @@ virBitmapSubtract(virBitmapPtr a,
         max = b->map_len;

     for (i = 0; i < max; i++)
-        a->map[i] &= ~b->map[i];
+        a->map[i] &= b->map[i];
 }
diff --git a/src/util/virbitmap.h b/src/util/virbitmap.h
index 36282af1c..ffa3c42d7 100644
--- a/src/util/virbitmap.h
+++ b/src/util/virbitmap.h
@@ -143,7 +143,7 @@ bool virBitmapOverlaps(virBitmapPtr b1,
                        virBitmapPtr b2)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

-void virBitmapSubtract(virBitmapPtr a, virBitmapPtr b)
+void virBitmapIntersect(virBitmapPtr a, virBitmapPtr b)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);

 #endif
diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c
index e5305d022..882c71544 100644
--- a/tests/virbitmaptest.c
+++ b/tests/virbitmaptest.c
@@ -589,7 +589,7 @@ test11(const void *opaque)
         virBitmapParse(data->res, &resmap, 256) < 0)
         goto cleanup;

-    virBitmapSubtract(amap, bmap);
+    virBitmapIntersect(amap, bmap);

     if (!virBitmapEqual(amap, resmap)) {
         fprintf(stderr, "\n bitmap subtraction failed: '%s'-'%s'!='%s'\n",
@@ -700,13 +700,13 @@ mymain(void)
         ret = -1;

     virTestCounterReset("test11-");
-    TESTBINARYOP("0", "0", "0,^0", test11);
-    TESTBINARYOP("0-3", "0", "1-3", test11);
-    TESTBINARYOP("0-3", "0,3", "1-2", test11);
+    TESTBINARYOP("0", "0", "0", test11);
+    TESTBINARYOP("0-3", "0", "0", test11);
+    TESTBINARYOP("0-3", "0,3", "0,3", test11);
     TESTBINARYOP("0,^0", "0", "0,^0", test11);
-    TESTBINARYOP("0-3", "0-3", "0,^0", test11);
-    TESTBINARYOP("0-3", "0,^0", "0-3", test11);
-    TESTBINARYOP("0,2", "1,3", "0,2", test11);
+    TESTBINARYOP("0-3", "0-3", "0-3", test11);
+    TESTBINARYOP("0-3", "0,^0", "0,^0", test11);
+    TESTBINARYOP("0,2", "1,3", "0,^0", test11);

     if (virTestRun("test12", test12, NULL) < 0)
         ret = -1;
-- 
2.12.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 1/5] util: bitmap: Modify virBitmapSubtract to virBitmapIntersect
Posted by Andrea Bolognani 7 years, 9 months ago
On Wed, 2017-07-12 at 15:44 +0200, Peter Krempa wrote:
> Since virBitmapSubtract is unused modify it to perform bitmap
> intersection.

Normally I would ask you to remove the old function in
one patch and introduce the new one in another, but I
can see you manage to reduce the test suite churn by
squeezing both changes together, so I'm okay with it :)

> diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c
> index e5305d022..882c71544 100644
> --- a/tests/virbitmaptest.c
> +++ b/tests/virbitmaptest.c
> @@ -589,7 +589,7 @@ test11(const void *opaque)
>          virBitmapParse(data->res, &resmap, 256) < 0)
>          goto cleanup;
> 
> -    virBitmapSubtract(amap, bmap);
> +    virBitmapIntersect(amap, bmap);
> 
>      if (!virBitmapEqual(amap, resmap)) {
>          fprintf(stderr, "\n bitmap subtraction failed: '%s'-'%s'!='%s'\n",

You'll want to update the error message as well.


Reviewed-by: Andrea Bolognani <abologna@redhat.com>

-- 
Andrea Bolognani / Red Hat / Virtualization

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