On Fri, Jul 17, 2015 at 18:13:28 +0200, Andrea Bolognani wrote: > Keep track of what CPUs belong to the current node while walking > through the sysfs node entry, so we don't need to do it a second > time immediately afterwards. > > This also allows us to loop through all CPUs that are part of a > node in guaranteed ascending order, which is something that is > required for some upcoming changes. > --- > src/nodeinfo.c | 26 ++++++++++++++++---------- > 1 file changed, 16 insertions(+), 10 deletions(-) > ... > @@ -480,13 +490,11 @@ virNodeParseNode(const char *sysfs_prefix, > if (!(cores_maps[i] = virBitmapNew(ID_MAX + 1))) > goto cleanup; > > - /* iterate over all CPU's in the node */ > - rewinddir(cpudir); > - while ((direrr = virDirRead(cpudir, &cpudirent, node)) > 0) { > - if (sscanf(cpudirent->d_name, "cpu%u", &cpu) != 1) > - continue; > + /* Iterate over all CPUs in the node, in ascending order */ > + for (cpu = 0; cpu < npresent_cpus; cpu++) { > > - if (!virBitmapIsBitSet(present_cpumap, cpu)) > + /* Skip CPUs that are not part of the current node */ > + if (!virBitmapIsBitSet(node_cpus_map, cpu)) Perhaps you can use virBitmapNextSetBit to simplify the iteration. > continue; > > if (!virBitmapIsBitSet(online_cpus_map, cpu)) { ACK with or without the iteration modified. Peter
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list