|
|
7a3408 |
From 7d9e53dfd33baa9a934548aeba04abcf6775d7ca Mon Sep 17 00:00:00 2001
|
|
|
7a3408 |
Message-Id: <7d9e53dfd33baa9a934548aeba04abcf6775d7ca@dist-git>
|
|
|
7a3408 |
From: Andrea Bolognani <abologna@redhat.com>
|
|
|
7a3408 |
Date: Wed, 5 Aug 2015 18:18:29 +0200
|
|
|
7a3408 |
Subject: [PATCH] nodeinfo: Use nodeGetOnlineCPUBitmap() when parsing node
|
|
|
7a3408 |
|
|
|
7a3408 |
No need to look up the online status of each CPU separately when we
|
|
|
7a3408 |
can get all the information in one go.
|
|
|
7a3408 |
|
|
|
7a3408 |
(cherry picked from commit b909e9fb2c095b7c83eab99e1f812bd1ffe6e480)
|
|
|
7a3408 |
|
|
|
7a3408 |
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1213713
|
|
|
7a3408 |
|
|
|
7a3408 |
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
|
|
7a3408 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
7a3408 |
---
|
|
|
7a3408 |
src/nodeinfo.c | 16 +++++++---------
|
|
|
7a3408 |
1 file changed, 7 insertions(+), 9 deletions(-)
|
|
|
7a3408 |
|
|
|
7a3408 |
diff --git a/src/nodeinfo.c b/src/nodeinfo.c
|
|
|
7a3408 |
index 7d0e6b0..2d910c9 100644
|
|
|
7a3408 |
--- a/src/nodeinfo.c
|
|
|
7a3408 |
+++ b/src/nodeinfo.c
|
|
|
7a3408 |
@@ -409,6 +409,7 @@ virNodeParseNode(const char *sysfs_prefix,
|
|
|
7a3408 |
DIR *cpudir = NULL;
|
|
|
7a3408 |
struct dirent *cpudirent = NULL;
|
|
|
7a3408 |
virBitmapPtr present_cpumap = NULL;
|
|
|
7a3408 |
+ virBitmapPtr online_cpus_map = NULL;
|
|
|
7a3408 |
virBitmapPtr sockets_map = NULL;
|
|
|
7a3408 |
virBitmapPtr *cores_maps = NULL;
|
|
|
7a3408 |
int sock_max = 0;
|
|
|
7a3408 |
@@ -417,7 +418,6 @@ virNodeParseNode(const char *sysfs_prefix,
|
|
|
7a3408 |
size_t i;
|
|
|
7a3408 |
int siblings;
|
|
|
7a3408 |
unsigned int cpu;
|
|
|
7a3408 |
- int online;
|
|
|
7a3408 |
int direrr;
|
|
|
7a3408 |
|
|
|
7a3408 |
*threads = 0;
|
|
|
7a3408 |
@@ -432,6 +432,9 @@ virNodeParseNode(const char *sysfs_prefix,
|
|
|
7a3408 |
present_cpumap = nodeGetPresentCPUBitmap(sysfs_prefix);
|
|
|
7a3408 |
if (!present_cpumap)
|
|
|
7a3408 |
goto cleanup;
|
|
|
7a3408 |
+ online_cpus_map = nodeGetOnlineCPUBitmap(sysfs_prefix);
|
|
|
7a3408 |
+ if (!online_cpus_map)
|
|
|
7a3408 |
+ goto cleanup;
|
|
|
7a3408 |
|
|
|
7a3408 |
/* enumerate sockets in the node */
|
|
|
7a3408 |
if (!(sockets_map = virBitmapNew(ID_MAX + 1)))
|
|
|
7a3408 |
@@ -444,10 +447,7 @@ virNodeParseNode(const char *sysfs_prefix,
|
|
|
7a3408 |
if (!virBitmapIsBitSet(present_cpumap, cpu))
|
|
|
7a3408 |
continue;
|
|
|
7a3408 |
|
|
|
7a3408 |
- if ((online = virNodeGetCpuValue(node, cpu, "online", 1)) < 0)
|
|
|
7a3408 |
- goto cleanup;
|
|
|
7a3408 |
-
|
|
|
7a3408 |
- if (!online)
|
|
|
7a3408 |
+ if (!virBitmapIsBitSet(online_cpus_map, cpu))
|
|
|
7a3408 |
continue;
|
|
|
7a3408 |
|
|
|
7a3408 |
/* Parse socket */
|
|
|
7a3408 |
@@ -489,10 +489,7 @@ virNodeParseNode(const char *sysfs_prefix,
|
|
|
7a3408 |
if (!virBitmapIsBitSet(present_cpumap, cpu))
|
|
|
7a3408 |
continue;
|
|
|
7a3408 |
|
|
|
7a3408 |
- if ((online = virNodeGetCpuValue(node, cpu, "online", 1)) < 0)
|
|
|
7a3408 |
- goto cleanup;
|
|
|
7a3408 |
-
|
|
|
7a3408 |
- if (!online) {
|
|
|
7a3408 |
+ if (!virBitmapIsBitSet(online_cpus_map, cpu)) {
|
|
|
7a3408 |
(*offline)++;
|
|
|
7a3408 |
continue;
|
|
|
7a3408 |
}
|
|
|
7a3408 |
@@ -560,6 +557,7 @@ virNodeParseNode(const char *sysfs_prefix,
|
|
|
7a3408 |
virBitmapFree(cores_maps[i]);
|
|
|
7a3408 |
VIR_FREE(cores_maps);
|
|
|
7a3408 |
virBitmapFree(sockets_map);
|
|
|
7a3408 |
+ virBitmapFree(online_cpus_map);
|
|
|
7a3408 |
virBitmapFree(present_cpumap);
|
|
|
7a3408 |
|
|
|
7a3408 |
return ret;
|
|
|
7a3408 |
--
|
|
|
7a3408 |
2.5.0
|
|
|
7a3408 |
|