From: Bing Bu Cao Date: Thu, 16 Jan 2014 08:18:09 +0000 (+0800) Subject: linuxNodeGetCPUStats: Correctly handle cpu prefix X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=94f82053590795a67bd5fb38026c86fb5329e7b7;p=libvirt.git linuxNodeGetCPUStats: Correctly handle cpu prefix To retrieve node cpu statistics on Linux system, the linuxNodeGetCPUstats function simply uses STRPREFIX() to match the cpuid with the one read from /proc/stat. However, as the file is read line by line it may happen, that some CPUs share the same prefix. So if user requested stats for the first CPU, which is offline, then there's no cpu1 in the stats file so the one that we match is cpu10. Which is obviously wrong. Fortunately, the IDs are terminated by a space, so we can utilize that. Signed-off-by: Bing Bu Cao --- diff --git a/src/nodeinfo.c b/src/nodeinfo.c index 05bc038134..cba2fc147c 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -708,9 +708,9 @@ linuxNodeGetCPUStats(FILE *procstat, } if (cpuNum == VIR_NODE_CPU_STATS_ALL_CPUS) { - strcpy(cpu_header, "cpu"); + strcpy(cpu_header, "cpu "); } else { - snprintf(cpu_header, sizeof(cpu_header), "cpu%d", cpuNum); + snprintf(cpu_header, sizeof(cpu_header), "cpu%d ", cpuNum); } while (fgets(line, sizeof(line), procstat) != NULL) {