- 22 1月, 2013 1 次提交
-
-
由 John Ferlan 提交于
The use of switch statements inside a bounded for loop resulted in some false positives regarding the "default:" label which cannot be reached since each of the other case statements use the possible for loop values. A [dead_error_begin] was added before the default label. Commit id ebdbe25a adjusted the algorithm and the caller guarantees that the 'params' will have a '_' in the name being searched. Add the [returned_null] tag to the two instances.
-
- 14 1月, 2013 1 次提交
-
-
由 Daniel P. Berrange 提交于
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
- 21 12月, 2012 4 次提交
-
-
由 Daniel P. Berrange 提交于
-
由 Daniel P. Berrange 提交于
-
由 Daniel P. Berrange 提交于
-
由 Daniel P. Berrange 提交于
-
- 19 12月, 2012 2 次提交
-
-
由 Roman Bogorodskiy 提交于
Uses sysctl(3) interface to obtain CPU and memory information on FreeBSD
-
由 Daniel P. Berrange 提交于
Replace use of uname in nodeGetInfo with virArch APIs to provide canonicalization of host architecture name Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
- 29 11月, 2012 1 次提交
-
-
由 Osier Yang 提交于
It makes no sense to fail the whole getting command if there is a parameter unsupported by the kernel. This patch fixes it by omitting the unsupported parameter for getMemoryParameters. And for setMemoryParameters, this checks if there is an unsupported parameter up front of the setting, and just returns failure if not all parameters are supported.
-
- 17 11月, 2012 2 次提交
-
-
由 Eric Blake 提交于
Prior to this patch, 'virsh nodecpumap' on older kernels reported: error: Unable to get cpu map error: out of memory * src/nodeinfo.c (linuxParseCPUmax): Don't overwrite error. (nodeGetCPUBitmap): Provide backup implementation.
-
由 Eric Blake 提交于
On RHEL 5, I was getting a segfault trying to start libvirtd, because we were failing virNodeParseSocket but not checking for errors, and then calling CPU_SET(-1, &sock_map) as a result. But if you don't have a topology/physical_package_id file, then you can just assume that the cpu belongs to socket 0. * src/nodeinfo.c (virNodeGetCpuValue): Change bool into default_value. (virNodeParseSocket): Allow for default value when file is missing, different from fatal error on reading file. (virNodeParseNode): Update call sites to fail on error.
-
- 15 11月, 2012 1 次提交
-
-
由 Viktor Mihajlovski 提交于
Since /sys/devices/system/cpu/present is not available on older kernels like on RHEL 5.x nodeGetCPUCount will fail there. The fallback implemented is to scan for /sys/devices/system/cpu/cpuNN entries. Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
-
- 13 11月, 2012 1 次提交
-
-
由 Peter Krempa 提交于
Lately there were a few reports of the output of the virsh nodeinfo command being inaccurate. This patch tries to avoid that by checking if the topology actually makes sense. If it doesn't we then report a synthetic topology that indicates to the user that the host capabilities should be checked for the actual topology.
-
- 02 11月, 2012 2 次提交
-
-
由 Daniel P. Berrange 提交于
The libvirt coding standard is to use 'function(...args...)' instead of 'function (...args...)'. A non-trivial number of places did not follow this rule and are fixed in this patch. Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
由 Eric Blake 提交于
It turns out that calling virNodeGetCPUMap(conn, NULL, NULL, 0) is both useful, and with Viktor's patches, common enough to optimize. Since this interface hasn't been released yet, we can change the RPC call. A bit more background on the optimization - learning the cpu count is a single file read (/sys/devices/system/cpu/possible), but learning the number of online cpus can possibly trigger a file read per cpu, depending on the age of the kernel, and all wasted if the caller passed NULL for both arguments. * src/nodeinfo.c (nodeGetCPUMap): Avoid bitmap when not needed. * src/remote/remote_protocol.x (remote_node_get_cpu_map_args): Supply two separate flags for needed arguments. * src/remote/remote_driver.c (remoteNodeGetCPUMap): Update caller. * daemon/remote.c (remoteDispatchNodeGetCPUMap): Likewise. * src/remote_protocol-structs: Regenerate.
-
- 30 10月, 2012 1 次提交
-
-
由 Eric Blake 提交于
Ever since commit eefb881d, ATTRIBUTE_NONNULL has normally been a no-op under gcc (since it tends to cause more bugs than it cures given gcc's current lame implementation of the attribute). However, the macro is still useful to Coverity and other static-analysis tools, but only if we use it correctly. Coverity follows gcc's lead in accepting function declarations with attributes at the end, but function bodies must attach attributes to the return type. That is, these are valid: void foo(void *arg) ATTRIBUTE_NONNULL(1); void ATTRIBUTE_NONNULL(1) foo(void *arg); void ATTRIBUTE_NONNULL(1) foo(void *arg) {} but this is not: void foo(void *arg) ATTRIBUTE_NONNULL(1) {} even though you don't get a compile failure until you do static analysis. Bug introduced in commit 80533ca2, with these symptoms: nodeinfo.c:206: error: expected ',' or ';' before '{' token cc1: warning: unrecognized command line option "-Wno-suggest-attribute=const" cc1: warning: unrecognized command line option "-Wno-suggest-attribute=pure" make[3]: *** [libvirt_driver_la-nodeinfo.lo] Error 1 * src/nodeinfo.c (virNodeParseNode): Fix syntax error when non-null attribute is in use.
-
- 27 10月, 2012 1 次提交
-
-
由 Eric Blake 提交于
It turns out that the cpuacct results properly account for offline cpus, and always returns results for every possible cpu, not just the online ones. So there is no need to check the map of online cpus in the first place, merely only a need to know the maximum possible cpu. Meanwhile, virNodeGetCPUBitmap had a subtle change from returning the maximum id to instead returning the width of the bitmap (one larger than the maximum id) in commit 2f4c5338, which made this code encounter some off-by-one logic leading to bad error messages when a cpu was offline: $ virsh cpu-stats dom error: Failed to virDomainGetCPUStats() error: An error occurred, but the cause is unknown Cleaning this up unraveled a chain of other unused variables. * src/qemu/qemu_driver.c (qemuDomainGetPercpuStats): Drop pointless check for cpumap changes, and use correct number of cpus. Simplify signature. (qemuDomainGetCPUStats): Adjust caller. * src/nodeinfo.h (nodeGetCPUCount): New prototype. (nodeGetCPUBitmap): Drop unused parameter. * src/nodeinfo.c (nodeGetCPUBitmap): Likewise. (nodeGetCPUMap): Adjust caller. (nodeGetCPUCount): New function. * src/libvirt_private.syms (nodeinfo.h): Export it.
-
- 26 10月, 2012 2 次提交
-
-
由 Viktor Mihajlovski 提交于
Added an implemention of virNodeGetCPUMap to nodeinfo.c, (nodeGetCPUMap) which can be used by all drivers for a Linux hypervisor host. Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
-
由 Eric Blake 提交于
Callers should not need to know what the name of the file to be read in the Linux-specific version of nodeGetCPUmap; furthermore, qemu cares about online cpus, not present cpus, when determining which cpus to skip. While at it, I fixed the fact that we were computing the maximum online cpu id by doing a slow iteration, when what we really want to know is the max available cpu. * src/nodeinfo.h (nodeGetCPUmap): Rename... (nodeGetCPUBitmap): ...and simplify signature. * src/nodeinfo.c (linuxParseCPUmax): New function. (linuxParseCPUmap): Simplify and alter signature. (nodeGetCPUBitmap): Change implementation. * src/libvirt_private.syms (nodeinfo.h): Reflect rename. * src/qemu/qemu_driver.c (qemuDomainGetPercpuStats): Update caller.
-
- 15 10月, 2012 1 次提交
-
-
由 Osier Yang 提交于
Upstream kernel introduced new sysfs knob "merge_across_nodes" to specify if pages from different numa nodes can be merged. When set to 0, only pages which physically reside in the memory area of same NUMA node can be merged. When set to 1, pages from all nodes can be merged. This patch supports the tuning by adding new param field "shm_merge_across_nodes".
-
- 09 10月, 2012 1 次提交
-
-
由 Michal Privoznik 提交于
With our latest s/[a-z]+ReportError/virReportError/ rewrite (47ab34e2) we forgot to update arm part of the code.
-
- 28 9月, 2012 1 次提交
-
-
由 Chuck Short 提交于
Minimal CPU "parser" for armhf to avoid compile time warning. Signed-off-by: NChuck Short <chuck.short@canonical.com>
-
- 21 9月, 2012 1 次提交
-
-
由 Eric Blake 提交于
https://www.gnu.org/licenses/gpl-howto.html recommends that the 'If not, see <url>.' phrase be a separate sentence. * tests/securityselinuxhelper.c: Remove doubled line. * tests/securityselinuxtest.c: Likewise. * globally: s/; If/. If/
-
- 19 9月, 2012 1 次提交
-
-
由 Eric Blake 提交于
Commit aaa8ab3e added new static functions that are only used on Linux; but commit 22acfdc7 didn't go far enough to fix compiler issues. * src/nodeinfo.c (nodeSetMemoryParameterValue) (nodeGetMemoryParameterValue): Conditionally compile based on use.
-
- 18 9月, 2012 2 次提交
-
-
由 Osier Yang 提交于
-
由 Hu Tao 提交于
-
- 17 9月, 2012 1 次提交
-
-
由 Osier Yang 提交于
Only implemented for linux platform. * src/nodeinfo.h: (Declare node{Get,Set}MemoryParameters) * src/nodeinfo.c: (Implement node{Get,Set}MemoryParameters) * src/libvirt_private.syms: (Export those two new internal APIs to private symbols)
-
- 22 8月, 2012 1 次提交
-
-
由 Eric Blake 提交于
Building on RHEL 5 warned: nodeinfo.c: 305: warning: implicit declaration of function 'CPU_COUNT' This extension macro in <sched.h> was not added until later glibc. * src/nodeinfo.c (CPU_COUNT): Add fallback implementation.
-
- 23 7月, 2012 1 次提交
-
-
由 Osier Yang 提交于
Per the FSF address could be changed from time to time, and GNU recommends the following now: (http://www.gnu.org/licenses/gpl-howto.html) You should have received a copy of the GNU General Public License along with Foobar. If not, see <http://www.gnu.org/licenses/>. This patch removes the explicit FSF address, and uses above instead (of course, with inserting 'Lesser' before 'General'). Except a bunch of files for security driver, all others are changed automatically, the copyright for securify files are not complete, that's why to do it manually: src/security/security_selinux.h src/security/security_driver.h src/security/security_selinux.c src/security/security_apparmor.h src/security/security_apparmor.c src/security/security_driver.c
-
- 20 7月, 2012 1 次提交
-
-
由 Daniel P. Berrange 提交于
Update the nodeinfo helper code to use virReportError instead of the nodeReportError custom macro Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
- 19 7月, 2012 1 次提交
-
-
由 Eric Blake 提交于
Commit 80533ca2 forgot to think about offline cpus. When a node cpu is offline, then its topology/ subdirectory is not present, leading to spurious error messages leaked to the user such as: libvir: error : cannot open /home/dummy/libvirt/tests/nodeinfodata/linux-nodeinfo-sysfs-test-6/node/node0/cpu7/topology/physical_package_id: No such file or directory Fix that, as well as test it; the test data is gathered from a machine with one NUMA node, hyperthreading, and with 2 of the 8 cpus offline. * src/nodeinfo.c (virNodeParseNode): Don't parse topology of offline cpus. * tests/nodeinfotest.c (mymain): Run new test. * tests/nodeinfodata/linux-nodeinfo-sysfs-test-6*: New data.
-
- 11 7月, 2012 1 次提交
-
-
由 Peter Krempa 提交于
This patch changes the way data to fill the nodeinfo structure are gathered. We've gathere the test data by iterating processors an sockets separately from nodes. The reported data was based solely on information about core id. Problems arise when eg cores in mulit-processor machines don't have same id's on both processors or maybe one physical processor contains more NUMA nodes. This patch changes the approach how we detect processors and nodes. Now we start at enumerating nodes and for each node processors, sockets and threads are enumerated separately. This approach provides acurate data that comply to docs about the nodeinfo structure. This also enables to get rid of hacks: see commits 10d9038b, ac9dd4a6. (Those changes in nodeinfo.c are efectively reverted by this patch). This patch also changes output of one of the tests, as the processor topology is now acquired more precisely.
-
- 25 6月, 2012 2 次提交
-
-
由 Viktor Mihajlovski 提交于
For the s390x architecture the sysfs core_id alone is not unique. As a result it can happen that libvirt thinks there are less host CPUs available than really present. Currently, a logical CPU is equivalent to a core for s390x. We therefore produce a fake core id from the CPU number. Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
-
由 Thang Pham 提交于
Minimal CPU "parser" for s390 to avoid compile time warning. Signed-off-by: NThang Pham <thang.pham@us.ibm.com> Signed-off-by: NViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
-
- 28 5月, 2012 1 次提交
-
-
由 Daniel P. Berrange 提交于
To ensure consistent error reporting of invalid arguments, provide a number of predefined helper methods & macros. - An arg which must not be NULL: virCheckNonNullArgReturn(argname, retvalue) virCheckNonNullArgGoto(argname, label) - An arg which must be NULL virCheckNullArgGoto(argname, label) - An arg which must be positive (ie 1 or greater) virCheckPositiveArgGoto(argname, label) - An arg which must not be 0 virCheckNonZeroArgGoto(argname, label) - An arg which must be zero virCheckZeroArgGoto(argname, label) - An arg which must not be negative (ie 0 or greater) virCheckNonNegativeArgGoto(argname, label) * src/libvirt.c, src/libvirt-qemu.c, src/nodeinfo.c, src/datatypes.c: Update to use virCheckXXXX macros * po/POTFILES.in: Add libvirt-qemu.c and virterror_internal.h * src/internal.h: Define macros for checking invalid args * src/util/virterror_internal.h: Define macros for reporting invalid args Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
-
- 15 5月, 2012 3 次提交
-
-
由 Osier Yang 提交于
"Instead of developing one CPU with 12 cores, the Magny Cours is actually two 6 core “Bulldozer” CPUs combined in to one package" I.e, each package has two NUMA nodes, and the two numa nodes share the same core ID set (0-6), which means parsing the cores number from sysfs doesn't work in this case. And the wrong CPU number could cause three problems for libvirt: 1) performance lost A domain without "cpuset" or "placement='auto'" (to drive numad) specified will be only pinned to part of the CPUs. 2) domain can be started If a domain uses numad, and the advisory nodeset returned from numad contains node which exceeds the range of wrong total CPU number. The domain will fail to start, as the bitmask passed to sched_setaffinity could be fully filled with zero. 3) wrong CPU number affects lots of stuffs. E.g. for command "virsh vcpuinfo", "virsh vcpupin", it will always output with the truncated CPU list. For more details: https://www.redhat.com/archives/libvir-list/2012-May/msg00607.html This patch is to fix the problem by parsing /proc/cpuinfo to get the value of field "cpu cores", and use it as nodeinfo->cores if it's greater than the cores number from sysfs.
-
由 Eric Blake 提交于
We had previously weakened our nodeinfotest in order to ignore parsed node values, because the parse function was mistakenly relying on host files. A better fix is to avoid using the numactl library, but to instead parse the same files that numactl would read, all while allowing the files to be relative to our choice of directory. * src/nodeinfo.c (CPU_SYS_PATH, NODE_SYS_PATH): Replace with... (SYSFS_SYSTEM_PATH): ...parent directory. (linuxNodeInfoCPUPopulate): Check NUMA nodes from requested directory (by inlining numactl code). (nodeGetCPUmap, nodeGetMemoryStats): Adjust macro use. * tests/nodeinfotest.c (linuxTestCompareFiles, linuxTestNodeInfo): Update test to match.
-
由 Eric Blake 提交于
We were wasting time to malloc a copy of a constant string, then copy it into static storage, for every call to nodeGetInfo. At least we were lucky that it was a constant source, and thus not subject to even worse issues with one thread clobbering the static storage while another was using it. This gets rid of the waste, by passing the string through the stack instead, as well as renaming internal functions to better match our conventions. * src/nodeinfo.c (sysfs_path): Delete. (get_cpu_value, count_thread_siblings, parse_socket): Add parameter, and rename... (virNodeGetCpuValue, virNodeCountThreadSiblings) (virNodeParseSocket): ... into a common namespace. (cpu_online, parse_core): Inline into callers. (linuxNodeInfoCPUPopulate): Update caller. (nodeGetInfo): Drop a useless malloc.
-
- 04 5月, 2012 1 次提交
-
-
由 Osier Yang 提交于
Error: RESOURCE_LEAK: /builddir/build/BUILD/libvirt-0.9.10/src/nodeinfo.c:629: alloc_fn: Calling allocation function "fopen". /builddir/build/BUILD/libvirt-0.9.10/src/nodeinfo.c:629: var_assign: Assigning: "cpuinfo" = storage returned from "fopen("/proc/cpuinfo", "r")". /builddir/build/BUILD/libvirt-0.9.10/src/nodeinfo.c:638: leaked_storage: Variable "cpuinfo" going out of scope leaks the storage it points to.
-
- 24 4月, 2012 1 次提交
-
-
由 Hu Tao 提交于
-