code looks fine.
please test and push.

+1

Sharad Mishra
Open Virtualization
Linux Technology Center
IBM

libvirt-cim-bounces@redhat.com wrote on 06/22/2011 08:33:03 AM:

> Chip Vincent <cvincent@linux.vnet.ibm.com>

> Sent by: libvirt-cim-bounces@redhat.com
>

> 06/22/11 08:33 AM
>
> Please respond to
> List for discussion and development of libvirt CIM <libvirt-cim@redhat.com>

>
> To

>
> libvirt-cim@redhat.com

>
> cc

>
> Subject

>
> [Libvirt-cim] [PATCH] (#2) Fix MemoryPool.Reserved to show only
> actively allocated memory

>
> # HG changeset patch
> # User Chip Vincent <cvincent@us.ibm.com>
> # Date 1308756569 14400
> # Node ID c5a9510b6bd1569c6ab0966624306e29ecd81727
> # Parent  6c29c5b284443e226e7d97e7e5f11848b0c4e761
> (#2) Fix MemoryPool.Reserved to show only actively allocated memory.
>
> It appears Reserved is meant to show memory that is taken (actively in use by
> VMs) as opposed to memory that is potentially taken (assigned to defined, but
> not running VMs).
> Also added CurrentlyConsumedResource (a much clearer name for the same thing)
> and ConsumedResourceUnits, fixed units to conform with DSP1045, and cleaned
> up some extraneous whitespace.
>
> Changes from #1:
>         - Fix return code checking
>
> Signed-off-by: Chip Vincent <cvincent@us.ibm.com>
>
> diff --git a/src/Virt_DevicePool.c b/src/Virt_DevicePool.c
> --- a/src/Virt_DevicePool.c
> +++ b/src/Virt_DevicePool.c
> @@ -676,17 +676,47 @@
>          return memory != 0;
>  }
>  
> -static bool mempool_set_reserved(CMPIInstance *inst, virConnectPtr conn)
> +static bool mempool_set_consumed(CMPIInstance *inst, virConnectPtr conn)
>  {
> -        uint64_t memory;
> +        uint64_t memory = 0;
> +        int *domain_ids = NULL;
> +        int count, i = 0;
>  
> -        /* NB: This doesn't account for memory to be claimed
> -         * by ballooning dom0
> -         */
> -        memory = allocated_memory(conn);
> +        count = virConnectNumOfDomains(conn);
> +        if (count <= 0)
> +                goto out;
> +
> +        domain_ids = calloc(count, sizeof(domain_ids[0]));
> +        if (domain_ids == NULL)
> +                goto out;
> +
> +        if (virConnectListDomains(conn, domain_ids, count) == -1)
> +                goto out;
> +
> +        for (i = 0; i < count; i++) {
> +                virDomainPtr dom = NULL;
> +                virDomainInfo dom_info;
> +
> +                dom = virDomainLookupByID(conn, domain_ids[i]);
> +                if (dom == NULL) {
> +                        CU_DEBUG("Cannot connect to domain %n: excluding",
> +                                domain_ids[i]);
> +                        continue;
> +                }
> +
> +                if (virDomainGetInfo(dom, &dom_info) == 0)
> +                        memory += dom_info.memory;
> +
> +                virDomainFree(dom);
> +        }
> +
> + out:
> +        free(domain_ids);
>  
>          CMSetProperty(inst, "Reserved",
>                        (CMPIValue *)&memory, CMPI_uint64);
> +        CMSetProperty(inst, "CurrentlyConsumedResource",
> +                      (CMPIValue *)&memory, CMPI_uint64);
>  
>          return memory != 0;
>  }
> @@ -726,10 +756,14 @@
>          CMSetProperty(inst, "ResourceType",
>                        (CMPIValue *)&type, CMPI_uint16);
>  
> -        if (units != NULL)
> +        if (units != NULL) {
>                  CMSetProperty(inst, "AllocationUnits",
>                                (CMPIValue *)units, CMPI_chars);
>  
> +                CMSetProperty(inst, "ConsumedResourceUnits",
> +                              (CMPIValue *)units, CMPI_chars);
> +        }
> +
>          if (caption != NULL)
>                  CMSetProperty(inst, "Caption",
>                                (CMPIValue *)caption, CMPI_chars);
> @@ -761,9 +795,9 @@
>                                    ns);
>  
>          mempool_set_total(inst, conn);
> -        mempool_set_reserved(inst, conn);
> +        mempool_set_consumed(inst, conn);
>  
> -        set_params(inst, CIM_RES_TYPE_MEM, id, "KiloBytes", NULL, true);
> +        set_params(inst, CIM_RES_TYPE_MEM, id, "byte*2^10", NULL, true);
>  
>          inst_list_add(list, inst);
>  
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim@redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim