]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
12 years agoStandardize whitespace used in example config files
Daniel P. Berrange [Fri, 25 May 2012 09:32:17 +0000 (10:32 +0100)]
Standardize whitespace used in example config files

Instead of doing

  # example_config

use

  #example_config

so it is possible to programatically uncomment example config
options, as distinct from their comment/descriptions

Also delete rogue trailing comma not allowed by lens

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoAdd impl of APIs to get user directories on Win32
Daniel P. Berrange [Thu, 24 May 2012 13:37:54 +0000 (14:37 +0100)]
Add impl of APIs to get user directories on Win32

Add an impl of +virGetUserRuntimeDirectory, virGetUserCacheDirectory
virGetUserConfigDirectory and virGetUserDirectory for Win32 platform.
Also create stubs for non-Win32 platforms which lack getpwuid_r()

In adding these two helpers were added virFileIsAbsPath and
virFileSkipRoot, along with some macros VIR_FILE_DIR_SEPARATOR,
VIR_FILE_DIR_SEPARATOR_S, VIR_FILE_IS_DIR_SEPARATOR,
VIR_FILE_PATH_SEPARATOR, VIR_FILE_PATH_SEPARATOR_S

All this code was adapted from GLib2 under terms of LGPLv2+ license.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoRemove uid param from directory lookup APIs
Daniel P. Berrange [Thu, 24 May 2012 12:29:42 +0000 (13:29 +0100)]
Remove uid param from directory lookup APIs

Remove the uid param from virGetUserConfigDirectory,
virGetUserCacheDirectory, virGetUserRuntimeDirectory,
and virGetUserDirectory

These functions were universally called with the
results of getuid() or geteuid(). To make it practical
to port to Win32, remove the uid parameter and hardcode
geteuid()

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoFix typos in RPM dependencies
Daniel P. Berrange [Fri, 25 May 2012 07:10:56 +0000 (08:10 +0100)]
Fix typos in RPM dependencies

s/daemon-driver-nwilter/daemon-driver-nwfilter/
s/daemon-network/daemon-driver-network/

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoFix check for socket existance / daemon spawn
Daniel P. Berrange [Fri, 25 May 2012 13:54:31 +0000 (14:54 +0100)]
Fix check for socket existance / daemon spawn

When you try to connect to a socket in the abstract namespace,
the error will be ECONNREFUSED for a non-listening daemon. With
the non-abstract namespace though, you instead get ENOENT. Add
a check for this extra errno when auto-spawning the daemon

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoRemove last usage of PATH_MAX and ban its future use
Daniel P. Berrange [Fri, 25 May 2012 13:14:07 +0000 (14:14 +0100)]
Remove last usage of PATH_MAX and ban its future use

Remove a number of pointless checks against PATH_MAX and
add a syntax-check rule to prevent its use in future

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agomaint: avoid new automake warning about AM_PROG_CC_STDC
Jim Meyering [Sat, 26 May 2012 09:21:47 +0000 (11:21 +0200)]
maint: avoid new automake warning about AM_PROG_CC_STDC

* configure.ac (AM_PROG_CC_STDC): Stop using this macro.
It provokes warnings from newer automake and is superseded by
autoconf's AC_PROG_CC, which we're already using.

12 years agobuild: silence libtool warning on probes.o
Eric Blake [Fri, 25 May 2012 15:57:56 +0000 (09:57 -0600)]
build: silence libtool warning on probes.o

Libtool supports linking directly against .o files on some platforms
(such as Linux), which happens to be the only place where we are
actually doing that (for the dtrace-generated probes.o files).  However,
it raises a big stink about the non-portability, even though we don't
attempt it on platforms where it would actually fail:

  CCLD   libvirt_driver_qemu.la

*** Warning: Linking the shared library libvirt_driver_qemu.la against
the non-libtool
*** objects  libvirt_qemu_probes.o is not portable!

This shuts libtool up by creating a proper .lo file that matches
what libtool normally expects.

* src/Makefile.am (%_probes.lo): New rule.
(libvirt_probes.stp, libvirt_qemu_probes.stp): Simplify into...
(%_probes.stp): ...shorter rule.
(CLEANFILES): Clean new .lo files.
(libvirt_la_BUILT_LIBADD, libvirt_driver_qemu_la_LIBADD)
(libvirt_lxc_LDADD, virt_aa_helper_LDADD): Link against .lo file.
* tests/Makefile.am (PROBES_O, qemu_LDADDS): Likewise.

12 years agoImprove docs about compiling libvirt from GIT
Daniel P. Berrange [Thu, 24 May 2012 15:07:58 +0000 (16:07 +0100)]
Improve docs about compiling libvirt from GIT

Add a note about setting the LIBVIRT_DRIVER_DIR env variable,
explain --system and fix example to use --disable-werror

12 years agotests: run valgrind on real executables, not libtool wrappers
Eric Blake [Wed, 24 Nov 2010 20:41:50 +0000 (13:41 -0700)]
tests: run valgrind on real executables, not libtool wrappers

* tests/Makefile.am (valgrind): Use libtool's ability to bypass
libtool wrappers when running valgrind.

12 years agoqemu augeas: Add spice_tls/spice_tls_x509_cert_dir
Douglas Schilling Landgraf [Thu, 24 May 2012 19:04:47 +0000 (15:04 -0400)]
qemu augeas: Add spice_tls/spice_tls_x509_cert_dir

If vdsm is installed and configured in Fedora 17, we add the following
items into qemu.conf:

spice_tls=1
spice_tls_x509_cert_dir="/etc/pki/vdsm/libvirt-spice"

However, after this changes, augtool cannot identify qemu.conf anymore.

12 years agotests: back to short test names
Eric Blake [Fri, 25 May 2012 02:34:16 +0000 (20:34 -0600)]
tests: back to short test names

With the switch to modules by default, I was getting super long
test output:

TEST: /home/remote/eblake/libvirt/tests/.libs/lt-interfacexml2xmltest

compared to the former:

TEST: interfacexml2xmltest

* tests/testutils.c (virtTestMain): Trim off libtool goop.

12 years agomaint: ignore more files from version control
Eric Blake [Fri, 25 May 2012 02:43:43 +0000 (20:43 -0600)]
maint: ignore more files from version control

* .gitignore: Exempt recent test binary and probes.h name change.

12 years agoAdd sentinel for virErrorDomain enum
Daniel P. Berrange [Mon, 14 May 2012 15:31:05 +0000 (16:31 +0100)]
Add sentinel for virErrorDomain enum

Add a VIR_ERR_DOMAIN_LAST sentinel for virErrorDomain and
replace the virErrorDomainName function by a VIR_ENUM_IMPL

In the process the naming of error domains is sanitized

* src/util/virterror.c: Use VIR_ENUM_IMPL for converting
  error domains to strings
* include/libvirt/virterror.h: Add VIR_ERR_DOMAIN_LAST

12 years agoAdd parsing for VIR_ENUM_IMPL & VIR_ENUM_DECL in apibuild.py
Daniel P. Berrange [Tue, 15 May 2012 10:59:00 +0000 (11:59 +0100)]
Add parsing for VIR_ENUM_IMPL & VIR_ENUM_DECL in apibuild.py

The apibuild.py parser needs to be able to parse & ignore
any VIR_ENUM_IMPL/VIR_ENUM_DECL macros in the source. Add
some special case code to deal with this rather than trying
to figure out a generic syntax for parsing macros.

* apibuild.py: Special case  VIR_ENUM_IMPL & VIR_ENUM_DECL

12 years agosecurity: Switch to C99-style struct initialization
Michal Privoznik [Thu, 24 May 2012 13:11:26 +0000 (15:11 +0200)]
security: Switch to C99-style struct initialization

12 years agofix building error on non fedora system
Wen Congyang [Tue, 22 May 2012 08:07:02 +0000 (16:07 +0800)]
fix building error on non fedora system

We forget to define with_storage_rbd if the system is not fedora,
or the version is less than 16.

12 years agoAdd stub impl of virNetlinkEventServiceLocalPid for Win32
Daniel P. Berrange [Thu, 24 May 2012 12:14:57 +0000 (13:14 +0100)]
Add stub impl of virNetlinkEventServiceLocalPid for Win32

The libvirt_private.syms file exports virNetlinkEventServiceLocalPid
so there needs to be a no-op stub for Win32 to avoid linker errors

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoEnable driver modules in libvirt RPM
Daniel P. Berrange [Mon, 2 Apr 2012 19:53:43 +0000 (20:53 +0100)]
Enable driver modules in libvirt RPM

Turn on loadable modules for libvirtd. Add new sub-RPMs
libvirt-daemon-driver-XXX, one for each loadable .so.
Modify the libvirt-daemon-YYY RPMs to depend on each of
the individual drivers they required

* libvirt.spec.in: Enable driver modules

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoDefault to enable driver modules for libvirtd
Daniel P. Berrange [Mon, 2 Apr 2012 14:49:32 +0000 (15:49 +0100)]
Default to enable driver modules for libvirtd

Always enable driver modules for libvirtd, if we have dlopen
available. This allows more modular packaging by distros
and ensures we don't break this config

* configure.ac: Default to enable driver modules

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoAdd test case for loading driver modules
Daniel P. Berrange [Mon, 2 Apr 2012 16:25:30 +0000 (17:25 +0100)]
Add test case for loading driver modules

To ensure all symbols used by loadable driver modules are
exported in libvirt.so, add a test suite that simply loads
each driver in turn

* tests/Makefile.am, tests/virdrivermoduletest.c: Add
  a test case for loading drivers

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoOverride default driver dir when running from GIT
Daniel P. Berrange [Mon, 2 Apr 2012 17:51:11 +0000 (18:51 +0100)]
Override default driver dir when running from GIT

* daemon/libvirtd.c: Set custom driver module dir if the current
  binary name is 'lt-libvirtd' (indicating execution directly
  from GIT checkout)
* src/driver.c, src/driver.h, src/libvirt_driver_modules.syms: Add
  virDriverModuleInitialize to allow driver module location to
  be changed

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoSplit QEMU dtrace probes into separate file
Daniel P. Berrange [Mon, 2 Apr 2012 17:24:29 +0000 (18:24 +0100)]
Split QEMU dtrace probes into separate file

When building as driver modules, it is not possible for the QEMU
driver module to reference the DTrace/SystemTAP probes linked into
the main libvirt.so. Thus we need to move the QEMU probes into a
separate file 'libvirt_qemu_probes.d'. Also rename the existing
file from 'probes.d' to 'libvirt_probes.d' while we're at it

* daemon/Makefile.am, src/internal.h: Include libvirt_probes.h
  instead of probes.h
* src/Makefile.am: Add rules for libvirt_qemu_probes.d
* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor_json.c,
  src/qemu/qemu_monitor_text.c: Include libvirt_qemu_probes.h
* src/libvirt_probes.d: Rename from probes.d
* src/libvirt_qemu_probes.d: QEMU specific probes formerly
  in probes.d

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoReplace RTLD_LOCAL with RTLD_GLOBAL
Daniel P. Berrange [Mon, 2 Apr 2012 16:23:59 +0000 (17:23 +0100)]
Replace RTLD_LOCAL with RTLD_GLOBAL

Since we have drivers which depend on each other (ie QEMU/LXC
depend on the network driver APIs), we need to use RTLD_GLOBAL
instead of RTLD_LOCAL. While this pollutes the calling binary
with many more symbols, this is no worse than if we directly
link to the drivers, and this only applies to libvirtd

* src/driver.c: s/RTLD_LOCAL/RTLD_GLOBAL/

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoEnsure LXC driver links against libblkid explicitly.
Daniel P. Berrange [Mon, 2 Apr 2012 15:47:11 +0000 (16:47 +0100)]
Ensure LXC driver links against libblkid explicitly.

Only libvirt_driver_storage.la links to libblkid currently. If
we are running in a scenario with driver modules, LXC must
directly link to it, since it can't assume the storage driver
is present

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoRemove libvirt_test.la library
Daniel P. Berrange [Mon, 2 Apr 2012 15:45:01 +0000 (16:45 +0100)]
Remove libvirt_test.la library

The libvirt_test.la library was introduced to allow test suites
to reference internal-only symbols. These days, nearly every
symbol we care about is in src/libvirt_private.syms, so there
is no need for libvirt_test.la to continue to exist

* src/Makefile.am: Delete libvirt_test.la & add new .syms files
* src/libvirt_private.syms: Export symbols needed by test suite
* tests/Makefile.am: Link to libvirt_test.la. Ensure LXC tests link
  to network_driver.la
* src/libvirt_esx.syms, src/libvirt_openvz.syms: Add exports needed
  by test suite

12 years agoFix broken linkage of libvirt_driver_nodedev.la
Daniel P. Berrange [Mon, 2 Apr 2012 14:46:56 +0000 (15:46 +0100)]
Fix broken linkage of libvirt_driver_nodedev.la

libvirt_driver_nodedev.la should not link against either
libvirt_util.la or gnulib.la, since libvirt.so brings
in those deps.

* src/Makefile.am: Fix broken linkage of libvirt_driver_nodedev.la

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoOnly build server side drivers as modules
Daniel P. Berrange [Wed, 1 Jun 2011 15:36:21 +0000 (16:36 +0100)]
Only build server side drivers as modules

The driver modules all use symbols which are defined in libvirt.so.
Thus for loading of modules to work, the binary that libvirt.so
is linked to must export its symbols back to modules. If the
libvirt.so itself is dlopen()d then the RTLD_GLOBAL flag must
be set. Unfortunately few, if any, programming languages use
the RTLD_GLOBAL flag when loading modules :-( This means is it
not practical to use driver modules for any libvirt client side
drivers (OpenVZ, VMWare, Hyper-V, Remote client, test).

This patch changes the build process so only server side drivers
are built as modules (Xen, QEMU, LXC, UML)

* daemon/libvirtd.c: Add missing load of 'interface' driver
* src/Makefile.am: Only build server side drivers as modules
* src/libvirt.c: Don't load any driver modules

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoFix dep from libvirt-lock-sanlock RPM
Daniel P. Berrange [Mon, 21 May 2012 18:36:30 +0000 (19:36 +0100)]
Fix dep from libvirt-lock-sanlock RPM

The libvirt-lock-sanlock RPM requires libvirtd, so its RPM dep
should be on libvirt-daemon, not libvirt

12 years agoopenvz: add quota argument when creating container
Guido Günther [Sat, 5 May 2012 06:52:23 +0000 (08:52 +0200)]
openvz: add quota argument when creating container

12 years agoopenvz: support file system quota reporting
Guido Günther [Tue, 24 Apr 2012 06:39:01 +0000 (08:39 +0200)]
openvz: support file system quota reporting

12 years agoIntroduce filesystem limits to virDomainFSDef
Guido Günther [Wed, 23 May 2012 12:38:55 +0000 (14:38 +0200)]
Introduce filesystem limits to virDomainFSDef

12 years agoIntroduce virDomainParseScaledValue
Guido Günther [Wed, 23 May 2012 12:37:10 +0000 (14:37 +0200)]
Introduce virDomainParseScaledValue

and use it for virDomainParseMemory. This allows to parse arbitrary
scaled value, not only memory related values as needed for the
filesystem limits code following later in this series.

12 years agoRemove more bogus systemd service dependencies
Daniel P. Berrange [Wed, 23 May 2012 11:01:57 +0000 (12:01 +0100)]
Remove more bogus systemd service dependencies

Adding syslog.target is obsolete, avahi.target does not
exist and dbus.target is also obsolete

Reported-by: Lennart Poettering <lpoetter@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoRevert "rpc: Discard non-blocking calls only when necessary"
Jiri Denemark [Mon, 21 May 2012 14:02:05 +0000 (16:02 +0200)]
Revert "rpc: Discard non-blocking calls only when necessary"

This reverts commit b1e374a7ac56927cfe62435179bf0bba1e08b372, which was
rather bad since I failed to consider all sides of the issue. The main
things I didn't consider properly are:

- a thread which sends a non-blocking call waits for the thread with
  the buck to process the call
- the code doesn't expect non-blocking calls to remain in the queue
  unless they were already partially sent

Thus, the reverted patch actually breaks more than what it fixes and
clients (which may even be libvirtd during p2p migrations) will likely
end up in a deadlock.

12 years agoqemu_hotplug: Don't free the PCI device structure after hot-unplug
Peter Krempa [Mon, 21 May 2012 14:31:53 +0000 (16:31 +0200)]
qemu_hotplug: Don't free the PCI device structure after hot-unplug

The pciDevice structure corresponding to the device being hot-unplugged
was freed after it was "stolen" from activeList. The pointer was still
used for eg-inactive list. This patch removes the free of the structure
and frees it only if reset fails on the device.

12 years agoutil: export virBufferTrim
Laine Stump [Tue, 22 May 2012 15:35:06 +0000 (11:35 -0400)]
util: export virBufferTrim

This was forgotten in commit cdb87b1c4b3c325c61e2a6a7d8edcca3ca73a765.

12 years agovirBuffer: add way to trim back extra text
Eric Blake [Fri, 18 May 2012 22:36:59 +0000 (16:36 -0600)]
virBuffer: add way to trim back extra text

I'm tired of writing:

bool sep = false;
while (...) {
    if (sep)
       virBufferAddChar(buf, ',');
    sep = true;
    virBufferAdd(buf, str);
}

This makes it easier, allowing one to write:

while (...)
    virBufferAsprintf(buf, "%s,", str);
virBufferTrim(buf, ",", -1);

to trim any remaining comma.

* src/util/buf.h (virBufferTrim): Declare.
* src/util/buf.c (virBufferTrim): New function.
* tests/virbuftest.c (testBufTrim): Test it.

12 years agostorage backend: Add RBD (RADOS Block Device) support
Wido den Hollander [Mon, 14 May 2012 09:06:42 +0000 (11:06 +0200)]
storage backend: Add RBD (RADOS Block Device) support

This patch adds support for a new storage backend with RBD support.

RBD is the RADOS Block Device and is part of the Ceph distributed storage
system.

It comes in two flavours: Qemu-RBD and Kernel RBD, this storage backend only
supports Qemu-RBD, thus limiting the use of this storage driver to Qemu only.

To function this backend relies on librbd and librados being present on the
local system.

The backend also supports Cephx authentication for safe authentication with
the Ceph cluster.

For storing credentials it uses the built-in secret mechanism of libvirt.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
12 years agobuild: fix unused variable after last patch
Eric Blake [Mon, 21 May 2012 18:36:50 +0000 (12:36 -0600)]
build: fix unused variable after last patch

The previous commit (2cb0899) left a dead variable behind.

* src/libxl/libxl_driver.c (libxlClose): Drop dead variable.

12 years agoFix potential events deadlock when unref'ing virConnectPtr
Daniel P. Berrange [Mon, 21 May 2012 11:10:53 +0000 (12:10 +0100)]
Fix potential events deadlock when unref'ing virConnectPtr

When the last reference to a virConnectPtr is released by
libvirtd, it was possible for a deadlock to occur in the
virDomainEventState functions. The virDomainEventStatePtr
holds a reference on virConnectPtr for each registered
callback. When removing a callback, the virUnrefConnect
function is run. If this causes the last reference on the
virConnectPtr to be released, then virReleaseConnect can
be run, which in turns calls qemudClose. This function has
a call to virDomainEventStateDeregisterConn which is intended
to remove all callbacks associated with the virConnectPtr
instance. This will try to grab a lock on virDomainEventState
but this lock is already held. Deadlock ensues

Thread 1 (Thread 0x7fcbb526a840 (LWP 23185)):

Since each callback associated with a virConnectPtr holds a
reference on virConnectPtr, it is impossible for the qemudClose
method to be invoked while any callbacks are still registered.
Thus the call to virDomainEventStateDeregisterConn must in fact
be a no-op. Thus it is possible to just remove all trace of
virDomainEventStateDeregisterConn and avoid the deadlock.

* src/conf/domain_event.c, src/conf/domain_event.h,
  src/libvirt_private.syms: Delete virDomainEventStateDeregisterConn
* src/libxl/libxl_driver.c, src/lxc/lxc_driver.c,
  src/qemu/qemu_driver.c, src/uml/uml_driver.c: Remove
  calls to virDomainEventStateDeregisterConn

12 years agoFix build when configuring with polkit0
Jim Fehlig [Mon, 21 May 2012 15:23:41 +0000 (09:23 -0600)]
Fix build when configuring with polkit0

Commit 2223ea98 removed the only use of 'server' param in
remoteDispatchAuthPolkit().  Mark the parameter with ATTRIBUTE_UNUSED
to fix the build when configuring with polkit0.

12 years agonwfilter: Add support for ipset
Stefan Berger [Mon, 21 May 2012 10:26:34 +0000 (06:26 -0400)]
nwfilter: Add support for ipset

This patch adds support for the recent ipset iptables extension
to libvirt's nwfilter subsystem. Ipset allows to maintain 'sets'
of IP addresses, ports and other packet parameters and allows for
faster lookup (in the order of O(1) vs. O(n)) and rule evaluation
to achieve higher throughput than what can be achieved with
individual iptables rules.

On the command line iptables supports ipset using

iptables ... -m set --match-set <ipset name> <flags> -j ...

where 'ipset name' is the name of a previously created ipset and
flags is a comma-separated list of up to 6 flags. Flags use 'src' and 'dst'
for selecting IP addresses, ports etc. from the source or
destination part of a packet. So a concrete example may look like this:

iptables -A INPUT -m set --match-set test src,src -j ACCEPT

Since ipset management is quite complex, the idea was to leave ipset
management outside of libvirt but still allow users to reference an ipset.
The user would have to make sure the ipset is available once the VM is
started so that the iptables rule(s) referencing the ipset can be created.

Using XML to describe an ipset in an nwfilter rule would then look as
follows:

  <rule action='accept' direction='in'>
    <all ipset='test' ipsetflags='src,src'/>
  </rule>

The two parameters on the command line are also the two distinct XML attributes
'ipset' and 'ipsetflags'.

FYI: Here is the man page for ipset:

https://ipset.netfilter.org/ipset.man.html

Regards,
    Stefan

12 years agobuild: fix virnetlink on glibc 2.11
Eric Blake [Fri, 18 May 2012 15:42:25 +0000 (09:42 -0600)]
build: fix virnetlink on glibc 2.11

We were being lazy - virnetlink.c was getting uint32_t as a
side-effect from glibc 2.14's <unistd.h>, but older glibc 2.11
does not provide uint32_t from <unistd.h>.  In fact, POSIX states
that <unistd.h> need only provide intptr_t, not all of <stdint.h>,
so the bug really is ours.  Reported by Jonathan Alescio.

* src/util/virnetlink.h: Include <stdint.h>.

12 years agoAdds support to param 'vcpu_time' in qemu_driver.
Hu Tao [Wed, 9 May 2012 08:41:38 +0000 (16:41 +0800)]
Adds support to param 'vcpu_time' in qemu_driver.

This involves setting the cpuacct cgroup to a per-vcpu granularity,
as well as summing the each vcpu accounting into a common array.
Now that we are reading more than one cgroup file, we double-check
that cpus weren't hot-plugged between reads to invalidate our
summing.

Signed-off-by: Eric Blake <eblake@redhat.com>
12 years agoAdd a new param 'vcpu_time' to virDomainGetCPUStats
Hu Tao [Wed, 9 May 2012 08:41:37 +0000 (16:41 +0800)]
Add a new param 'vcpu_time' to virDomainGetCPUStats

Currently virDomainGetCPUStats gets total cpu usage, which consists
of:

  1. vcpu usage: the physical cpu time consumed by virtual cpu(s) of
     domain
  2. hypervisor: `total cpu usage' - `vcpu usage'

The param 'vcpu_time' is for getting vcpu usages.

12 years agotests: add ich6 codec type test to qemuxml2argv-sound-device
Marc-André Lureau [Tue, 15 May 2012 22:55:11 +0000 (00:55 +0200)]
tests: add ich6 codec type test to qemuxml2argv-sound-device

Test new codec type element.

12 years agoqemu: honour sound <codec> sub-elements
Marc-André Lureau [Tue, 15 May 2012 22:55:10 +0000 (00:55 +0200)]
qemu: honour sound <codec> sub-elements

With ICH6 audio device, allow to specify codecs.
By default, for compatibility reasons, if no codec is specified,
"hda-duplex" will be used.

12 years agodomain: add <codec> sound sub-element
Marc-André Lureau [Tue, 15 May 2012 22:55:09 +0000 (00:55 +0200)]
domain: add <codec> sound sub-element

Allow specifying sound device codecs. See formatdomain.html for
more details.

12 years agoqemu: test CAPS_HDA_MICRO
Marc-André Lureau [Tue, 15 May 2012 22:55:08 +0000 (00:55 +0200)]
qemu: test CAPS_HDA_MICRO

12 years agoqemu: Don't delete USB device on failed qemuPrepareHostdevUSBDevices
Michal Privoznik [Thu, 17 May 2012 11:40:52 +0000 (13:40 +0200)]
qemu: Don't delete USB device on failed qemuPrepareHostdevUSBDevices

If qemuPrepareHostdevUSBDevices fail it will roll back devices added
to the driver list of used devices. However, if it may fail because
the device is being used already. But then again - with roll back.
Therefore don't try to remove a usb device manually if the function
fail. Although, we want to remove the device if any operation
performed afterwards fail.

12 years agonodeinfo: test more details
Eric Blake [Mon, 14 May 2012 23:11:47 +0000 (17:11 -0600)]
nodeinfo: test more details

Make it obvious why we need Osier's patch in commit 10d9038b
to fix NUMA parsing of an AMD machine with two cores sharing
a socket id.

* tests/nodeinfotest.c (linuxTestCompareFiles): Enhance the test.
* tests/nodeinfodata/linux-nodeinfo-sysfs-test-*-output.txt: Update.

12 years agoAdd a virLogMessage alternative taking va_list args
Daniel P. Berrange [Mon, 23 Jan 2012 14:57:16 +0000 (14:57 +0000)]
Add a virLogMessage alternative taking va_list args

Allow the logging APIs to be called with a va_list for format
args, instead of requiring var-args usage.

* src/util/logging.h, src/util/logging.c: Add virLogVMessage

12 years agobuild: fix recent syntax-check breakage
Eric Blake [Wed, 16 May 2012 15:52:44 +0000 (09:52 -0600)]
build: fix recent syntax-check breakage

The use of readlink() in lxc_container.c is intentional; we don't
want an absolute pathname there.

* src/util/cgroup.h (VIR_CGROUP_SYSFS_MOUNT): Indent properly.
* cfg.mk (exclude_file_name_regexp--sc_prohibit_readlink): Add
exemption.

12 years agoqemu: Rollback on used USB devices
Michal Privoznik [Wed, 16 May 2012 14:42:02 +0000 (16:42 +0200)]
qemu: Rollback on used USB devices

One of our latest USB device handling patches
05abd1507d66aabb6cad12eeafeb4c4d1911c585 introduced a regression.
That is, we first create a temporary list of all USB devices that
are to be used by domain just starting up. Then we iterate over and
check if a device from the list is in the global list of currently
assigned devices (activeUsbHostdevs). If not, we add it there and
continue with next iteration then. But if a device from temporary
list is either taken already or adding to the activeUsbHostdevs fails,
we remove all devices in temp list from the activeUsbHostdevs list.
Therefore, if a device is already taken we remove it from
activeUsbHostdevs even if we should not. Thus, next time we allow
the device to be assigned to another domain.

12 years agoFix build compat with older libselinux for LXC
Daniel P. Berrange [Wed, 16 May 2012 13:18:25 +0000 (14:18 +0100)]
Fix build compat with older libselinux for LXC

Most versions of libselinux do not contain the function
selinux_lxc_contexts_path() that the security driver
recently started using for LXC. We must add a conditional
check for it in configure and then disable the LXC security
driver for builds where libselinux lacks this function.

* configure.ac: Check for selinux_lxc_contexts_path
* src/security/security_selinux.c: Disable LXC security
  if selinux_lxc_contexts_path() is missing

12 years agoReject any non-option command line arguments
Daniel P. Berrange [Wed, 16 May 2012 11:03:02 +0000 (12:03 +0100)]
Reject any non-option command line arguments

Due to a bug in editing /etc/sysconfig/libvirtd, VDSM was causing
libvirt processes to run with the following command line args

   /usr/sbin/libvirtd --listen '#' 'by vdsm'

While it correctly rejects any invalid option flags, libvirtd
was not rejecting any non-option command line arguments

* daemon/libvirtd.c: Reject non-option argv

12 years agoRemount cgroups controllers after setting up new /sys in LXC
Daniel P. Berrange [Fri, 11 May 2012 16:26:48 +0000 (17:26 +0100)]
Remount cgroups controllers after setting up new /sys in LXC

Normal practice is for cgroups controllers to be mounted at
/sys/fs/cgroup. When setting up a container, /sys is mounted
with a new sysfs instance, thus we must re-mount all the
cgroups controllers. The complexity is that we must mount
them in the same layout as the host OS. ie if 'cpu' and 'cpuacct'
were mounted at the same location in the host we must preserve
this in the container. Also if any controllers are co-located
we must setup symlinks from the individual controller name to
the co-located mount-point

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoTrim /proc & /sys subtrees before mounting new instances
Daniel P. Berrange [Fri, 11 May 2012 10:35:28 +0000 (11:35 +0100)]
Trim /proc & /sys subtrees before mounting new instances

Both /proc and /sys may have sub-mounts in them from the host
OS. We must explicitly unmount them all before mounting the
new instance over that location. If we don't then /proc/mounts
will show the sub-mounts as existing, even though nothing will
be able to access them, due to the over-mount.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoAvoid LXC pivot root in the root source is still /
Daniel P. Berrange [Fri, 11 May 2012 14:09:27 +0000 (15:09 +0100)]
Avoid LXC pivot root in the root source is still /

If the LXC config has a filesystem

  <filesystem>
     <source dir='/'/>
     <target dir='/'/>
  </filesystem>

then there is no need to go down the pivot root codepath.
We can simply use the existing root as needed.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoMount fresh instance of sysfs/selinux in LXC
Daniel P. Berrange [Thu, 10 May 2012 16:16:11 +0000 (17:16 +0100)]
Mount fresh instance of sysfs/selinux in LXC

Currently to make sysfs readonly, we remount the existing
instance and then bind it readonly. Unfortunately this means
sysfs is still showing device objects wrt the host OS namespace.
We need it to reflect the container namespace, so we must mount
a completely new instance of it. Do the same for selinuxfs since
there is no benefit to bind mounting & this lets us simplify
the code.

* src/lxc/lxc_container.c: Mount fresh sysfs instance

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoConvert the LXC driver to use the security driver API for mount options
Daniel Walsh [Fri, 11 May 2012 10:02:50 +0000 (11:02 +0100)]
Convert the LXC driver to use the security driver API for mount options

Instead of hardcoding use of SELinux contexts in the LXC driver,
switch over to using the official security driver API.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoAdd security driver APIs for getting mount options
Daniel Walsh [Tue, 1 May 2012 14:16:04 +0000 (15:16 +0100)]
Add security driver APIs for getting mount options

Some security drivers require special options to be passed to
the mount system call. Add a security driver API for handling
this data.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoAdd support for LXC specific SELinux configuration
Daniel Walsh [Fri, 11 May 2012 09:54:31 +0000 (10:54 +0100)]
Add support for LXC specific SELinux configuration

The SELinux policy for LXC uses a different configuration file
than the traditional svirt one. Thus we need to load
/etc/selinux/targeted/contexts/lxc_contexts which contains
something like this:

 process = "system_u:system_r:svirt_lxc_net_t:s0"
 file = "system_u:object_r:svirt_lxc_file_t:s0"
 content = "system_u:object_r:virt_var_lib_t:s0"

cleverly designed to be parsable by virConfPtr

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoUse private data struct in SELinux driver
Daniel Walsh [Fri, 11 May 2012 09:43:30 +0000 (10:43 +0100)]
Use private data struct in SELinux driver

Currently the SELinux driver stores its state in a set of global
variables. This switches it to use a private data struct instead.
This will enable different instances to have their own data.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoDon't enable the AppArmour security driver with LXC
Daniel Walsh [Fri, 11 May 2012 09:34:49 +0000 (10:34 +0100)]
Don't enable the AppArmour security driver with LXC

The AppArmour driver does not currently have support for LXC
so ensure that when probing, it claims to be disabled

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoPass the virt driver name into security drivers
Daniel Walsh [Thu, 10 May 2012 16:49:29 +0000 (17:49 +0100)]
Pass the virt driver name into security drivers

To allow the security drivers to apply different configuration
information per hypervisor, pass the virtualization driver name
into the security manager constructor.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoRemove bogus udev.target dep from libvirtd unit
Daniel P. Berrange [Tue, 15 May 2012 16:33:00 +0000 (17:33 +0100)]
Remove bogus udev.target dep from libvirtd unit

There is no 'udev.target' unit in systemd (only 'udev.service')
yet libvirtd's unit file had a dep on one. There's no compelling
reason for a dep on udev, so remove it altogether.

Reported-by: Avi Kivity <avi@redhat.com>
12 years agoqemu: Add support for -no-user-config
Jiri Denemark [Thu, 26 Apr 2012 10:11:49 +0000 (12:11 +0200)]
qemu: Add support for -no-user-config

Thanks to this new option we are now able to use modern CPU models (such
as Westmere) defined in external configuration file.

The qemu-1.1{,-device} data files for qemuhelptest are filled in with
qemu-1.1-rc2 output for now. I will update those files with real
qemu-1.1 output once it is released.

12 years agoSet a sensible default master start port for ehci companion controllers
Daniel P. Berrange [Mon, 14 May 2012 12:22:58 +0000 (13:22 +0100)]
Set a sensible default master start port for ehci companion controllers

The uhci1, uhci2, uhci3 companion controllers for ehci1 must
have a master start port set. Since this value is predictable
we should set it automatically if the app does not supply it

12 years agoFix logic for assigning PCI addresses to USB2 companion controllers
Daniel P. Berrange [Mon, 14 May 2012 10:16:22 +0000 (11:16 +0100)]
Fix logic for assigning PCI addresses to USB2 companion controllers

Currently each USB2 companion controller gets put on a separate
PCI slot. Not only is this wasteful of PCI slots, but it is not
in compliance with the spec for USB2 controllers. The master
echi1 and all companion controllers should be in the same slot,
with echi1 in function 7, and uhci1-3 in functions 0-2 respectively.

* src/qemu/qemu_command.c: Special case handling of USB2 controllers
  to apply correct pci slot assignment
* tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.args,
  tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.xml: Expand
  test to cover automatic slot assignment

12 years agoFix virDomainDeviceInfoIsSet() to check all struct fields
Daniel P. Berrange [Tue, 15 May 2012 15:16:49 +0000 (16:16 +0100)]
Fix virDomainDeviceInfoIsSet() to check all struct fields

The virDomainDeviceInfoIsSet API was only checking if an
address or alias was set in the struct. Thus if only a
rom bar setting / filename, boot index, or USB master
value was set, they could be accidentally dropped when
formatting XML

12 years agoRemove redundant trailing slash in user dir paths
Daniel P. Berrange [Tue, 15 May 2012 15:49:26 +0000 (16:49 +0100)]
Remove redundant trailing slash in user dir paths

Callers of virGetUser{Config,Runtime,Cache}Directory all
append further path component. We should not be
adding a trailing slash in the return path otherwise we
get paths containing '//'

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoAllow stack traces to be included with log messages
Daniel P. Berrange [Wed, 9 May 2012 14:18:56 +0000 (15:18 +0100)]
Allow stack traces to be included with log messages

Sometimes it is useful to see the callpath for log messages.
This change enhances the log filter syntax so that stack traces
can be show by setting '1:+NAME' instead of '1:NAME'.

This results in output like:

2012-05-09 14:18:45.136+0000: 13314: debug : virInitialize:414 : register drivers
/home/berrange/src/virt/libvirt/src/.libs/libvirt.so.0(virInitialize+0xd6)[0x7f89188ebe86]
/home/berrange/src/virt/libvirt/tools/.libs/lt-virsh[0x431921]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3a21e21735]
/home/berrange/src/virt/libvirt/tools/.libs/lt-virsh[0x40a279]

2012-05-09 14:18:45.136+0000: 13314: debug : virRegisterDriver:775 : driver=0x7f8918d02760 name=Test
/home/berrange/src/virt/libvirt/src/.libs/libvirt.so.0(virRegisterDriver+0x6b)[0x7f89188ec717]
/home/berrange/src/virt/libvirt/src/.libs/libvirt.so.0(+0x11b3ad)[0x7f891891e3ad]
/home/berrange/src/virt/libvirt/src/.libs/libvirt.so.0(virInitialize+0xf3)[0x7f89188ebea3]
/home/berrange/src/virt/libvirt/tools/.libs/lt-virsh[0x431921]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3a21e21735]
/home/berrange/src/virt/libvirt/tools/.libs/lt-virsh[0x40a279]

* docs/logging.html.in: Document new syntax
* configure.ac: Check for execinfo.h
* src/util/logging.c, src/util/logging.h: Add support for
  stack traces
* tests/testutils.c: Adapt to API change

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
12 years agoMove user libvirtd socket out of abstract namespace
Daniel P. Berrange [Thu, 3 May 2012 12:40:32 +0000 (13:40 +0100)]
Move user libvirtd socket out of abstract namespace

The current unprivileged user libvirtd sockets are in the abstract
namespace. This has a number of problems

 - You can't connect to them remotely using the nc/ssh tunnel
 - This is not portable for OS-X, BSD & probably others
 - Parent directory permissions don't apply

12 years agoAdd openvz_util.c to POTFILES
Daniel P. Berrange [Tue, 15 May 2012 15:27:08 +0000 (16:27 +0100)]
Add openvz_util.c to POTFILES

12 years agoAdd bundled(gnulib) to RPM specfile
Daniel P. Berrange [Tue, 15 May 2012 15:03:14 +0000 (16:03 +0100)]
Add bundled(gnulib) to RPM specfile

According to Fedora guidelines, because we bundle gnulib we
need to add a virtual Provides: bundled(gnulib).

https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Requirement_if_you_bundle

12 years agoopenvz: determine kb/pages only once
Guido Günther [Mon, 7 May 2012 21:00:28 +0000 (23:00 +0200)]
openvz: determine kb/pages only once

to save some syscalls (as suggested by Eric Blake)

12 years agolibvirt-guests: Remove LISTFILE if it's empty when stopping service
Osier Yang [Tue, 15 May 2012 08:22:28 +0000 (16:22 +0800)]
libvirt-guests: Remove LISTFILE if it's empty when stopping service

$LISTFILE is created even no domain is running, and the empty
$LISTFILE could cause improper service status.

    stopped ,with saved guests

Which is not right, as there is no domain was saved.

12 years agonodeinfo: Get the correct CPU number on AMD Magny Cours platform
Osier Yang [Mon, 14 May 2012 13:12:53 +0000 (21:12 +0800)]
nodeinfo: Get the correct CPU number on AMD Magny Cours platform

"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.

12 years agoqemu: Set memory policy using cgroup if placement is auto
Osier Yang [Sat, 12 May 2012 12:53:15 +0000 (20:53 +0800)]
qemu: Set memory policy using cgroup if placement is auto

Like for 'static' placement, when the memory policy mode is
'strict', set the memory policy by writing the advisory nodeset
returned from numad to cgroup file cpuset.mems,

12 years agoqemu: Use the CPU index in capabilities to map NUMA node to cpu list.
Osier Yang [Sat, 12 May 2012 12:52:45 +0000 (20:52 +0800)]
qemu: Use the CPU index in capabilities to map NUMA node to cpu list.

On some of the NUMA platforms, the CPU index in each NUMA node
grows non-consecutive. While on other platforms, it can be inconsecutive,
E.g.

% numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 4 8 12 16 20 24 28
node 0 size: 131058 MB
node 0 free: 86531 MB
node 1 cpus: 1 5 9 13 17 21 25 29
node 1 size: 131072 MB
node 1 free: 127070 MB
node 2 cpus: 2 6 10 14 18 22 26 30
node 2 size: 131072 MB
node 2 free: 127758 MB
node 3 cpus: 3 7 11 15 19 23 27 31
node 3 size: 131072 MB
node 3 free: 127226 MB
node distances:
node   0   1   2   3
  0:  10  20  20  20
  1:  20  10  20  20
  2:  20  20  10  20
  3:  20  20  20  10

This patch is to fix the problem by using the CPU index in
caps->host.numaCell[i]->cpus[i] to set the bitmask instead of
assuming the CPU index of the NUMA nodes are always sequential.

12 years agoAssign spapr-vio bus address to ibmvscsi controller
Li Zhang [Mon, 14 May 2012 06:16:37 +0000 (14:16 +0800)]
Assign spapr-vio bus address to ibmvscsi controller

For pseries guest, the default controller model is
ibmvscsi controller, this controller only can work
on spapr-vio address.

This patch is to assign spapr-vio address type to
ibmvscsi controller and correct vscsi test case.

Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
12 years agosanlock: fix locking for readonly devices
David Weber [Mon, 14 May 2012 09:53:02 +0000 (09:53 +0000)]
sanlock: fix locking for readonly devices

Add ignore param for readonly and shared disk in sanlock

12 years agonodeinfo: add some more tests
Eric Blake [Fri, 11 May 2012 20:30:05 +0000 (14:30 -0600)]
nodeinfo: add some more tests

Test 2 data grabbed from a 2-core 1-node laptop.
Test 3 data grabbed from a 48-cpu AMD Magny Cours box.

* tests/nodeinfodata/linux-nodeinfo-sysfs-test-2*: New test data.
* tests/nodeinfodata/linux-nodeinfo-sysfs-test-3*: Likewise.
* tests/nodeinfotest.c (mymain): Run them.
* cfg.mk
(exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF): Exempt
new test files.

12 years agonodeinfo: avoid probing host filesystem during test
Eric Blake [Fri, 11 May 2012 19:59:59 +0000 (13:59 -0600)]
nodeinfo: avoid probing host filesystem during test

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.

12 years agonodeinfo: drop static variable
Eric Blake [Fri, 11 May 2012 18:50:08 +0000 (12:50 -0600)]
nodeinfo: drop static variable

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.

12 years agobuild: really silence the 32-bit warning
Eric Blake [Sat, 12 May 2012 13:24:08 +0000 (07:24 -0600)]
build: really silence the 32-bit warning

Commit cdce2f42d tried to silence a compiler warning on 32-bit builds,
but the gcc shipped with RHEL 5 is old enough that the type conversion
via multiplication by 1 was insufficient for the task.

* src/qemu/qemu_monitor.c (qemuMonitorBlockJob): Previous attempt
didn't get past all gcc versions.

12 years agomaint: fix AUTHORS
Eric Blake [Mon, 14 May 2012 15:14:19 +0000 (09:14 -0600)]
maint: fix AUTHORS

Use the address specified in the actual commit, to placate
'make syntax-check'.

12 years agoUse XDG Base Directories instead of storing in home directory
William Jon McCann [Thu, 3 May 2012 16:36:27 +0000 (12:36 -0400)]
Use XDG Base Directories instead of storing in home directory

As defined in:
http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

This offers a number of advantages:
 * Allows sharing a home directory between different machines, or
sessions (eg. using NFS)
 * Cleanly separates cache, runtime (eg. sockets), or app data from
user settings
 * Supports performing smart or selective migration of settings
between different OS versions
 * Supports reseting settings without breaking things
 * Makes it possible to clear cache data to make room when the disk
is filling up
 * Allows us to write a robust and efficient backup solution
 * Allows an admin flexibility to change where data and settings are stored
 * Dramatically reduces the complexity and incoherence of the
system for administrators

12 years agoRelease of libvirt-0.9.12
Daniel Veillard [Mon, 14 May 2012 02:52:04 +0000 (10:52 +0800)]
Release of libvirt-0.9.12

* configure.ac docs/news.html.in libvirt.spec.in: updates for the release
* po/*.po: pushed new sources and synchronized new languages translations

13 years agoesx: Fix memory leaks in error paths related to transferred ownership
Matthias Bolte [Sun, 6 May 2012 17:33:59 +0000 (19:33 +0200)]
esx: Fix memory leaks in error paths related to transferred ownership

Appending an item to a list transfers ownership of that item to the
list owner. But an error can occur in between item allocation and
appending it to the list. In this case the item has to be freed
explicitly. This was not done in some special cases resulting in
possible memory leaks.

Reported by Coverity.

13 years agoqemu: Don't skip detection of virtual cpu's on non KVM targets
Peter Krempa [Mon, 7 May 2012 11:58:22 +0000 (13:58 +0200)]
qemu: Don't skip detection of virtual cpu's on non KVM targets

This patch lifts the limit of calling thread detection code only on KVM
guests. With upstream qemu the thread mappings are reported also on
non-KVM machines.

QEMU adopted the thread_id information from the kvm branch.

To remain compatible with older upstream versions of qemu the check is
attempted but the failure to detect threads (or even run the monitor
command - on older versions without SMP support) is treated non-fatal
and the code reports one vCPU with pid of the hypervisor (in same
fashion this was done on non-KVM guests).

13 years agoqemu: Re-detect virtual cpu threads after cpu hot (un)plug.
Peter Krempa [Mon, 7 May 2012 11:56:17 +0000 (13:56 +0200)]
qemu: Re-detect virtual cpu threads after cpu hot (un)plug.

After a cpu hotplug the qemu driver did not refresh information about
virtual processors used by qemu and their corresponding threads. This
patch forces a re-detection as is done on start of QEMU.

This ensures that correct information is reported by the
virDomainGetVcpus API and "virsh vcpuinfo".

A failure to obtain the thread<->vcpu mapping is treated non-fatal and
the mapping is not updated in a case of failure as not all versions of
QEMU report this in the info cpus command.

13 years agoqemu: Refactor qemuDomainSetVcpusFlags
Peter Krempa [Mon, 7 May 2012 11:53:20 +0000 (13:53 +0200)]
qemu: Refactor qemuDomainSetVcpusFlags

This patch changes a switch statement into ifs when handling live vs.
configuration modifications getting rid of redundant code in case when
both live and persistent configuration gets changed.

13 years agobuild: fix stamp file name
Eric Blake [Fri, 11 May 2012 14:20:34 +0000 (08:20 -0600)]
build: fix stamp file name

Ever since commit c964b6a, make was trying to find the timestamp
of '""./apibuild.py".stamp"', but only touching 'apibuild.py.stamp',
and thus always rebuilding.  Reported by Daniel P. Berrange.

* docs/Makefile.am (APIBUILD, APIBUILD_STAMP): Omit bogus quotes.

13 years agousb: fix crash when failing to attach a second usb device
Guannan Ren [Fri, 11 May 2012 06:29:15 +0000 (14:29 +0800)]
usb: fix crash when failing to attach a second usb device

when failing to attach another usb device to a domain for some reason
which has one use device attached before, the libvirtd crashed.
The crash is caused by null-pointer dereference error in invoking
usbDeviceListSteal passed in NULL value usb variable.
commit 05abd1507d66aabb6cad12eeafeb4c4d1911c585 introduces the bug.

13 years agodocs: mention migration issue of which credentials are used
Eric Blake [Mon, 30 Apr 2012 20:51:07 +0000 (14:51 -0600)]
docs: mention migration issue of which credentials are used

Based on a report by Seth Vidal.  Just because _you_ can use virsh
to connect to both source and destinations does not mean that libvirtd
on the source (aka _root_) can likewise connect to the destination;
this matters when setting up a peer-to-peer migration instead of a
native one.

* docs/migration.html.in: Mention that in peer-to-peer, the owner
of the source libvirtd (usually root) must be able to connect to
the destination.

13 years agobuild: Fix the typo in configure.ac
Osier Yang [Thu, 10 May 2012 02:25:22 +0000 (10:25 +0800)]
build: Fix the typo in configure.ac

s/nuamd/numad/,

13 years agoconf: Fix memory leaks in virStoragePoolDefParseSource
Alex Jia [Wed, 9 May 2012 10:48:46 +0000 (18:48 +0800)]
conf: Fix memory leaks in virStoragePoolDefParseSource

Detected by valgrind. Leaks are introduced in commit 122fa379.

src/conf/storage_conf.c: fix memory leaks.

How to reproduce?
$ make && make -C tests check TESTS=storagepoolxml2xmltest
$ cd tests && valgrind -v --leak-check=full ./storagepoolxml2xmltest

actual result:
==28571== LEAK SUMMARY:
==28571==    definitely lost: 40 bytes in 5 blocks
==28571==    indirectly lost: 0 bytes in 0 blocks
==28571==      possibly lost: 0 bytes in 0 blocks
==28571==    still reachable: 1,054 bytes in 21 blocks
==28571==         suppressed: 0 bytes in 0 blocks

Signed-off-by: Alex Jia <ajia@redhat.com>