[Libvir] [PATCH] Topology fix for "no cpus"
beth kon
eak at us.ibm.com
Mon Oct 8 14:25:38 UTC 2007
Daniel Veillard wrote:
>On Fri, Oct 05, 2007 at 03:55:14PM -0400, beth kon wrote:
>
>
>>I was able to test on a 128-way NUMA box and found a bug. My code did
>>not handle the case of no cpus being associated with a node. I decided
>>to represent (pretty straightforward decision :-) no cpus as follows in
>>the xml...
>>
>>
>><cell id='2'>
>> <cpus num='0'>
>> </cpus>
>> </cell>
>>
>>Here is the patch...
>>
>>Signed-off-by: Beth Kon <eak at us.ibm.com>
>>
>>
>
> Hi Beth,
>
>the patch makes sense but I think a small improvement is in order:
>
>
>
>>diff -urpN libvirt.orig/src/xend_internal.c libvirt/src/xend_internal.c
>>--- libvirt.orig/src/xend_internal.c 2007-10-03 19:27:25.000000000 -0700
>>+++ libvirt/src/xend_internal.c 2007-10-04 05:41:13.000000000 -0700
>>@@ -1989,6 +1989,15 @@ sexpr_to_xend_topology_xml(virConnectPtr
>> /* get list of cpus associated w/ single cell */
>> while (1) {
>> if ((len = getNumber(offset, &cpuNum)) < 0) {
>>+ if (!strncmp (offset, "no cpus", 7)){
>>+ *(cpuIdsPtr++) = -1;
>>+ break;
>>+ } else {
>>+ virXendError(conn, VIR_ERR_XEN_CALL, "topology string syntax error");
>>+ goto error;
>>+ }
>>+ }
>>+ if ((len = getNumber(offset, &cpuNum)) < 0) {
>>
>>
>
> Seems to me that at this point the test should read
> if (len < 0) {
>
>as getNumber has no side effect and offset or cpuNum are not changed.
>Actually I would just move the
> len = getNumber(offset, &cpuNum)
>as a separate statement out at the beginning of the block of the while loop
>for clarity of the code,
>
>Daniel
>
>
>
Yes, that makes perfect sense. Thanks.
--
Elizabeth Kon (Beth)
IBM Linux Technology Center
Open Hypervisor Team
email: eak at us.ibm.com
More information about the libvir-list
mailing list