[libvirt] [PATCH v4 1/9] bitmap: new member variable and function renaming

Laine Stump laine at laine.org
Mon Sep 17 16:27:11 UTC 2012


On 09/14/2012 03:46 AM, Hu Tao wrote:
> Add a new member variable map_len to store map len of bitmap.
> and rename size to max_bit accordingly.
>
> rename virBitmapAlloc to virBitmapNew.
> ---
>  src/conf/domain_conf.c       |    2 +-
>  src/conf/snapshot_conf.c     |    2 +-
>  src/libvirt_private.syms     |    2 +-
>  src/qemu/qemu_capabilities.c |    2 +-
>  src/qemu/qemu_driver.c       |    2 +-
>  src/util/bitmap.c            |   30 +++++++++++++-----------------
>  src/util/bitmap.h            |    2 +-
>  tools/virsh-domain.c         |    2 +-
>  8 files changed, 20 insertions(+), 24 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 292cc9a..3a44432 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -8871,7 +8871,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
>      if (STREQ(def->os.type, "hvm")) {
>          if (virDomainDefParseBootXML(ctxt, def, &bootMapSize) < 0)
>              goto error;
> -        if (bootMapSize && !(bootMap = virBitmapAlloc(bootMapSize)))
> +        if (bootMapSize && !(bootMap = virBitmapNew(bootMapSize)))
>              goto no_memory;
>      }
>  
> diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
> index e13cdd6..ba5b188 100644
> --- a/src/conf/snapshot_conf.c
> +++ b/src/conf/snapshot_conf.c
> @@ -357,7 +357,7 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr def,
>          goto cleanup;
>      }
>  
> -    if (!(map = virBitmapAlloc(def->dom->ndisks))) {
> +    if (!(map = virBitmapNew(def->dom->ndisks))) {
>          virReportOOMError();
>          goto cleanup;
>      }
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 8dfb4ce..557fa0e 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -6,11 +6,11 @@
>  #
>  
>  # bitmap.h
> -virBitmapAlloc;
>  virBitmapClearBit;
>  virBitmapCopy;
>  virBitmapFree;
>  virBitmapGetBit;
> +virBitmapNew;
>  virBitmapSetBit;
>  virBitmapString;
>  
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index ed85b6f..cf9de69 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -1649,7 +1649,7 @@ qemuCapsNew(void)
>  {
>      virBitmapPtr caps;
>  
> -    if (!(caps = virBitmapAlloc(QEMU_CAPS_LAST)))
> +    if (!(caps = virBitmapNew(QEMU_CAPS_LAST)))
>          virReportOOMError();
>  
>      return caps;
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index a410521..7a8b475 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -696,7 +696,7 @@ qemudStartup(int privileged) {
>       * do this before the config is loaded properly, since the port
>       * numbers are configurable now */
>      if ((qemu_driver->reservedRemotePorts =
> -         virBitmapAlloc(qemu_driver->remotePortMax - qemu_driver->remotePortMin)) == NULL)
> +         virBitmapNew(qemu_driver->remotePortMax - qemu_driver->remotePortMin)) == NULL)
>          goto out_of_memory;
>  
>      /* We should always at least have the 'nop' manager, so
> diff --git a/src/util/bitmap.c b/src/util/bitmap.c
> index cd52802..dc9c28a 100644
> --- a/src/util/bitmap.c
> +++ b/src/util/bitmap.c
> @@ -36,7 +36,8 @@
>  
>  
>  struct _virBitmap {
> -    size_t size;
> +    size_t max_bit;
> +    size_t map_len;
>      unsigned long *map;
>  };
>  
> @@ -48,7 +49,7 @@ struct _virBitmap {
>  
>  
>  /**
> - * virBitmapAlloc:
> + * virBitmapNew:
>   * @size: number of bits
>   *
>   * Allocate a bitmap capable of containing @size bits.
> @@ -56,7 +57,7 @@ struct _virBitmap {
>   * Returns a pointer to the allocated bitmap or NULL if
>   * memory cannot be allocated.
>   */
> -virBitmapPtr virBitmapAlloc(size_t size)
> +virBitmapPtr virBitmapNew(size_t size)
>  {
>      virBitmapPtr bitmap;
>      size_t sz;
> @@ -75,7 +76,8 @@ virBitmapPtr virBitmapAlloc(size_t size)
>          return NULL;
>      }
>  
> -    bitmap->size = size;
> +    bitmap->max_bit = size;
> +    bitmap->map_len = sz;
>      return bitmap;
>  }
>  
> @@ -83,7 +85,7 @@ virBitmapPtr virBitmapAlloc(size_t size)
>   * virBitmapFree:
>   * @bitmap: previously allocated bitmap
>   *
> - * Free @bitmap previously allocated by virBitmapAlloc.
> + * Free @bitmap previously allocated by virBitmapNew.
>   */
>  void virBitmapFree(virBitmapPtr bitmap)
>  {
> @@ -96,17 +98,12 @@ void virBitmapFree(virBitmapPtr bitmap)
>  
>  int virBitmapCopy(virBitmapPtr dst, virBitmapPtr src)
>  {
> -    size_t sz;
> -
> -    if (dst->size != src->size) {
> +    if (dst->max_bit != src->max_bit) {
>          errno = EINVAL;
>          return -1;
>      }
>  
> -    sz = (src->size + VIR_BITMAP_BITS_PER_UNIT - 1) /
> -        VIR_BITMAP_BITS_PER_UNIT;
> -
> -    memcpy(dst->map, src->map, sz * sizeof(src->map[0]));
> +    memcpy(dst->map, src->map, src->map_len * sizeof(src->map[0]));
>  
>      return 0;
>  }
> @@ -123,7 +120,7 @@ int virBitmapCopy(virBitmapPtr dst, virBitmapPtr src)
>   */
>  int virBitmapSetBit(virBitmapPtr bitmap, size_t b)
>  {
> -    if (bitmap->size <= b)
> +    if (bitmap->max_bit <= b)
>          return -1;
>  
>      bitmap->map[VIR_BITMAP_UNIT_OFFSET(b)] |= VIR_BITMAP_BIT(b);
> @@ -141,7 +138,7 @@ int virBitmapSetBit(virBitmapPtr bitmap, size_t b)
>   */
>  int virBitmapClearBit(virBitmapPtr bitmap, size_t b)
>  {
> -    if (bitmap->size <= b)
> +    if (bitmap->max_bit <= b)
>          return -1;
>  
>      bitmap->map[VIR_BITMAP_UNIT_OFFSET(b)] &= ~VIR_BITMAP_BIT(b);
> @@ -161,7 +158,7 @@ int virBitmapClearBit(virBitmapPtr bitmap, size_t b)
>   */
>  int virBitmapGetBit(virBitmapPtr bitmap, size_t b, bool *result)
>  {
> -    if (bitmap->size <= b)
> +    if (bitmap->max_bit <= b)
>          return -1;
>  
>      *result = !!(bitmap->map[VIR_BITMAP_UNIT_OFFSET(b)] & VIR_BITMAP_BIT(b));
> @@ -183,8 +180,7 @@ char *virBitmapString(virBitmapPtr bitmap)
>  
>      virBufferAddLit(&buf, "0x");
>  
> -    sz = (bitmap->size + VIR_BITMAP_BITS_PER_UNIT - 1) /
> -          VIR_BITMAP_BITS_PER_UNIT;
> +    sz = bitmap->map_len;
>  
>      while (sz--) {
>          virBufferAsprintf(&buf, "%0*lx",
> diff --git a/src/util/bitmap.h b/src/util/bitmap.h
> index 1d8750e..2609509 100644
> --- a/src/util/bitmap.h
> +++ b/src/util/bitmap.h
> @@ -34,7 +34,7 @@ typedef virBitmap *virBitmapPtr;
>  /*
>   * Allocate a bitmap capable of containing @size bits.
>   */
> -virBitmapPtr virBitmapAlloc(size_t size) ATTRIBUTE_RETURN_CHECK;
> +virBitmapPtr virBitmapNew(size_t size) ATTRIBUTE_RETURN_CHECK;
>  
>  /*
>   * Free previously allocated bitmap
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index c6695b3..a7d6c37 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -7178,7 +7178,7 @@ vshNodeIsSuperset(xmlNodePtr n1, xmlNodePtr n2)
>      if (n1_child_size == 0 && n2_child_size == 0)
>          return true;
>  
> -    if (!(bitmap = virBitmapAlloc(n1_child_size))) {
> +    if (!(bitmap = virBitmapNew(n1_child_size))) {
>          virReportOOMError();
>          return false;
>      }

I had to apply the following small patch to get a successful build with
libxl enabled.

I'll be pushing with that change squashed in as soon as I've completed
make check on the rest of the series.


diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 1638314..eccae29 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -869,7 +869,7 @@ libxlStartup(int privileged) {
 
     /* Allocate bitmap for vnc port reservation */
     if ((libxl_driver->reservedVNCPorts =
-         virBitmapAlloc(LIBXL_VNC_PORT_MAX - LIBXL_VNC_PORT_MIN)) == NULL)
+         virBitmapNew(LIBXL_VNC_PORT_MAX - LIBXL_VNC_PORT_MIN)) == NULL)
         goto out_of_memory;
 
     if (virDomainObjListInit(&libxl_driver->domains) < 0)




More information about the libvir-list mailing list