Hi,
If we decided to not report memory-less nodes in physinfo we should also
skip them in the node_to_{cpu,memory,dma32_mem} Python lists. Currently
Xen will not start guests on machines with memory-less nodes which are
not the last ones. On an 8-node machine with empty nodes 4 and 5 "xm
info" was reporting wrongly, also the node assignment algorithm crashed
with a division by zero error.
The attached patch fixes this by skipping empty nodes in the enumeration
of resources.
Regards,
Andre.
Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
--
Andre Przywara
AMD-Operating System Research Center (OSRC), Dresden, Germany
Tel: +49 351 448 3567 12
----to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Karl-Hammerschmidt-Str. 34, 85609 Dornach b. Muenchen
Geschaeftsfuehrer: Andrew Bowd; Thomas M. McCoy; Giuliano Meroni
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
diff -r 0e3910f1de64 tools/python/xen/lowlevel/xc/xc.c
--- a/tools/python/xen/lowlevel/xc/xc.c Tue Jan 12 07:17:40 2010 +0000
+++ b/tools/python/xen/lowlevel/xc/xc.c Tue Jan 12 17:28:55 2010 +0100
@@ -1129,20 +1129,23 @@
Py_DECREF(pyint);
node_exists = 1;
}
- PyList_Append(node_to_cpu_obj, cpus);
+ if (node_exists)
+ PyList_Append(node_to_cpu_obj, cpus);
Py_DECREF(cpus);
/* Memory. */
xc_availheap(self->xc_handle, 0, 0, i, &free_heap);
node_exists = node_exists || (free_heap != 0);
pyint = PyInt_FromLong(free_heap / 1024);
- PyList_Append(node_to_memory_obj, pyint);
+ if (node_exists)
+ PyList_Append(node_to_memory_obj, pyint);
Py_DECREF(pyint);
/* DMA memory. */
xc_availheap(self->xc_handle, 0, 32, i, &free_heap);
pyint = PyInt_FromLong(free_heap / 1024);
- PyList_Append(node_to_dma32_mem_obj, pyint);
+ if (node_exists)
+ PyList_Append(node_to_dma32_mem_obj, pyint);
Py_DECREF(pyint);
if ( node_exists )
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|