Re: [libvirt] [PATCH v4 5/9] use virBitmap to store numa nodemask info.

2012-09-17 Thread Laine Stump
On 09/14/2012 07:21 AM, Daniel P. Berrange wrote:
 On Fri, Sep 14, 2012 at 03:47:00PM +0800, Hu Tao wrote:
 ---
  src/conf/domain_conf.c   |   24 +---
  src/conf/domain_conf.h   |2 +-
  src/lxc/lxc_controller.c |   25 
  src/parallels/parallels_driver.c |2 +-
  src/qemu/qemu_cgroup.c   |7 ++---
  src/qemu/qemu_cgroup.h   |2 +-
  src/qemu/qemu_driver.c   |   58 
 ++
  src/qemu/qemu_process.c  |   52 --
  8 files changed, 65 insertions(+), 107 deletions(-)
 ACK

 Daniel

Pushed.

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


[libvirt] [PATCH v4 5/9] use virBitmap to store numa nodemask info.

2012-09-14 Thread Hu Tao
---
 src/conf/domain_conf.c   |   24 +---
 src/conf/domain_conf.h   |2 +-
 src/lxc/lxc_controller.c |   25 
 src/parallels/parallels_driver.c |2 +-
 src/qemu/qemu_cgroup.c   |7 ++---
 src/qemu/qemu_cgroup.h   |2 +-
 src/qemu/qemu_driver.c   |   58 ++
 src/qemu/qemu_process.c  |   52 --
 8 files changed, 65 insertions(+), 107 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 41612f2..cc54d39 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -1680,7 +1680,7 @@ void virDomainDefFree(virDomainDefPtr def)
 
 virDomainVcpuPinDefFree(def-cputune.emulatorpin);
 
-VIR_FREE(def-numatune.memory.nodemask);
+virBitmapFree(def-numatune.memory.nodemask);
 
 virSysinfoDefFree(def-sysinfo);
 
@@ -8523,19 +8523,10 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr 
caps,
 
 nodeset = virXMLPropString(cur, nodeset);
 if (nodeset) {
-char *set = nodeset;
-int nodemasklen = VIR_DOMAIN_CPUMASK_LEN;
-
-if (VIR_ALLOC_N(def-numatune.memory.nodemask,
-nodemasklen)  0) {
-virReportOOMError();
-goto error;
-}
-
-/* nodeset uses the same syntax as cpuset. */
-if (virDomainCpuSetParse(set, 0,
- def-numatune.memory.nodemask,
- nodemasklen)  0) {
+if (virBitmapParse(nodeset,
+   0,
+   def-numatune.memory.nodemask,
+   VIR_DOMAIN_CPUMASK_LEN)  0) {
 VIR_FREE(nodeset);
 goto error;
 }
@@ -8577,7 +8568,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr 
caps,
 
 /* Ignore 'nodeset' if 'placement' is 'auto' finally */
 if (placement_mode == 
VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_AUTO)
-VIR_FREE(def-numatune.memory.nodemask);
+virBitmapFree(def-numatune.memory.nodemask);
 
 /* Copy 'placement' of numatune to vcpu if its 
'placement'
  * is not specified and 'placement' of numatune is 
specified.
@@ -13246,8 +13237,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
 
 if (def-numatune.memory.placement_mode ==
 VIR_DOMAIN_NUMATUNE_MEM_PLACEMENT_MODE_STATIC) {
-nodemask = virDomainCpuSetFormat(def-numatune.memory.nodemask,
- VIR_DOMAIN_CPUMASK_LEN);
+nodemask = virBitmapFormat(def-numatune.memory.nodemask);
 if (nodemask == NULL) {
 virReportError(VIR_ERR_INTERNAL_ERROR, %s,
_(failed to format nodeset for 
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index bb3721c..975c565 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1560,7 +1560,7 @@ typedef struct _virDomainNumatuneDef virDomainNumatuneDef;
 typedef virDomainNumatuneDef *virDomainNumatuneDefPtr;
 struct _virDomainNumatuneDef {
 struct {
-char *nodemask;
+virBitmapPtr nodemask;
 int mode;
 int placement_mode; /* enum virDomainNumatuneMemPlacementMode */
 } memory;
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index dc45a6a..44ec7aa 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -418,20 +418,19 @@ static int 
virLXCControllerSetupNUMAPolicy(virLXCControllerPtr ctrl)
 
 /* Convert nodemask to NUMA bitmask. */
 nodemask_zero(mask);
-for (i = 0; i  VIR_DOMAIN_CPUMASK_LEN; i++) {
-if (ctrl-def-numatune.memory.nodemask[i]) {
-if (i  NUMA_NUM_NODES) {
-virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-   _(Host cannot support NUMA node %d), i);
-return -1;
-}
-if (i  maxnode  !warned) {
-VIR_WARN(nodeset is out of range, there is only %d NUMA 
- nodes on host, maxnode);
-warned = true;
-}
-nodemask_set(mask, i);
+i = -1;
+while ((i = virBitmapNextSetBit(ctrl-def-numatune.memory.nodemask, i)) 
= 0) {
+if (i  NUMA_NUM_NODES) {
+virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+   _(Host cannot support NUMA node %d), i);
+return -1;
+}
+if (i  maxnode  !warned) {
+VIR_WARN(nodeset is out of range, there is 

Re: [libvirt] [PATCH v4 5/9] use virBitmap to store numa nodemask info.

2012-09-14 Thread Daniel P. Berrange
On Fri, Sep 14, 2012 at 03:47:00PM +0800, Hu Tao wrote:
 ---
  src/conf/domain_conf.c   |   24 +---
  src/conf/domain_conf.h   |2 +-
  src/lxc/lxc_controller.c |   25 
  src/parallels/parallels_driver.c |2 +-
  src/qemu/qemu_cgroup.c   |7 ++---
  src/qemu/qemu_cgroup.h   |2 +-
  src/qemu/qemu_driver.c   |   58 
 ++
  src/qemu/qemu_process.c  |   52 --
  8 files changed, 65 insertions(+), 107 deletions(-)

ACK

Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|

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