]> git.ipfire.org Git - thirdparty/libvirt.git/log
thirdparty/libvirt.git
13 years agoclient rpc: Don't drop non-blocking calls
Jiri Denemark [Fri, 8 Jun 2012 12:21:00 +0000 (14:21 +0200)] 
client rpc: Don't drop non-blocking calls

So far, we were dropping non-blocking calls whenever sending them would
block. In case a client is sending lots of stream calls (which are not
supposed to generate any reply), the assumption that having other calls
in a queue is sufficient to get a reply from the server doesn't work. I
tried to fix this in b1e374a7ac56927cfe62435179bf0bba1e08b372 but
failed and reverted that commit.

With this patch, non-blocking calls are never dropped (unless the
connection is being closed) and will always be sent.
(cherry picked from commit 78602c4e83bbf51f89c24a0be14074e71d01bf60)

13 years agoclient rpc: Use event loop for writing
Jiri Denemark [Tue, 12 Jun 2012 06:41:59 +0000 (08:41 +0200)] 
client rpc: Use event loop for writing

Normally, when every call has a thread associated with it, the thread
may get the buck and be in charge of sending all calls until its own
call is done. When we introduced non-blocking calls, we had to add
special handling of new non-blocking calls. This patch uses event loop
to send data if there is no thread to get the buck so that any
non-blocking calls left in the queue are properly sent without having to
handle them specially. It also avoids adding even more cruft to client
IO loop in the following patches.

With this change in, non-blocking calls may see unpredictable delays in
delivery when the client has no event loop registered. However, the only
non-blocking calls we have are keepalives and we already require event
loop for them, which makes this a non-issue until someone introduces new
non-blocking calls.
(cherry picked from commit 9e747e5c5079a5aead2f248fc22ff658bd0180be)

13 years agoclient rpc: Improve debug messages in virNetClientIO
Jiri Denemark [Fri, 8 Jun 2012 11:41:25 +0000 (13:41 +0200)] 
client rpc: Improve debug messages in virNetClientIO

When analyzing our debug log, I'm always confused about what each of the
pointers mean. Let's be explicit.
(cherry picked from commit 71689f95ceedbc63953a0b06aa2c2cee7fabfa2b)

13 years agokeepalive: Add ability to disable keepalive messages
Peter Krempa [Tue, 24 Apr 2012 14:38:41 +0000 (16:38 +0200)] 
keepalive: Add ability to disable keepalive messages

The docs for virConnectSetKeepAlive() advertise that this function
should be able to disable keepalives on negative or zero interval time.

This patch removes the check that prohibited this and adds code to
disable keepalives on negative/zero interval.

* src/libvirt.c: virConnectSetKeepAlive(): - remove check for negative
                                             values
* src/rpc/virnetclient.c
* src/rpc/virnetclient.h: - add virNetClientKeepAliveStop() to disable
                            keepalive messages
* src/remote/remote_driver.c: remoteSetKeepAlive(): -add ability to
                                                     disable keepalives
(cherry picked from commit 6446a9e20cc65561ce6061742baf35a3a63d5ba1)

13 years agoconf: Remove console stream callback only when freeing console helper
Peter Krempa [Fri, 3 Aug 2012 09:20:29 +0000 (11:20 +0200)] 
conf: Remove console stream callback only when freeing console helper

Commit ba226d334acbc49f6751b430e0c4e00f69eef6bf tried to fix crash of
the daemon when a domain with an open console was destroyed. The fix was
wrong as it tried to remove the callback also when the stream was
aborted, where at that point the fd stream driver was already freed and
removed.

This patch clears the callbacks with a helper right before the hash is
freed, so that it doesn't interfere with other codepaths where the
stream object is freed.
(cherry picked from commit 45edefc7a7bcbec988f54331ff37fc32e4bc2718)

13 years agoFix typo s/AM_CLFAGS/AM_CFLAGS/ in sanlock link
Daniel P. Berrange [Thu, 2 Aug 2012 19:10:13 +0000 (20:10 +0100)] 
Fix typo s/AM_CLFAGS/AM_CFLAGS/ in sanlock link
(cherry picked from commit 7de158cf68cae7ab55d3cae1a01744b374810840)

13 years agovirsh: console: Avoid using stream after being freed.
Peter Krempa [Fri, 3 Aug 2012 11:16:24 +0000 (13:16 +0200)] 
virsh: console: Avoid using stream after being freed.

The stream object wasn't set to NULL after freeing causing a double free
attempt on the cleanup path.
(cherry picked from commit e3b8808ba764e06f68785a2bbdd8b7ab00b71fa4)

13 years agoqemu: syntax fix
Marc-André Lureau [Tue, 31 Jul 2012 17:51:41 +0000 (19:51 +0200)] 
qemu: syntax fix

Pushed without ack, under the trivial rule.
(cherry picked from commit 2beed2daaf6539a13e915073343a82384e3a135d)

13 years agoqemu: fix use after free
Eric Blake [Tue, 31 Jul 2012 14:05:14 +0000 (08:05 -0600)] 
qemu: fix use after free

Detected by Coverity.

* src/qemu/qemu_hotplug.c (qemuDomainAttachHostDevice): Avoid
double free of usb on failure.
(cherry picked from commit 665c8cdecc2d91a83f08a6ec95531b0de57c0e0a)

13 years agoconf: Remove callback from stream when freeing entries in console hash
Peter Krempa [Fri, 27 Jul 2012 12:50:54 +0000 (14:50 +0200)] 
conf: Remove callback from stream when freeing entries in console hash

When a domain has a active console connection and is destroyed the
callback is called on private data that no longer exist causing a
segfault.
(cherry picked from commit ba226d334acbc49f6751b430e0c4e00f69eef6bf)

13 years agosecurity: Skip labeling resources when seclabel defaults to none
Jiri Denemark [Wed, 25 Jul 2012 12:38:27 +0000 (14:38 +0200)] 
security: Skip labeling resources when seclabel defaults to none

If a domain is explicitly configured with <seclabel type="none"/> we
correctly ensure that no labeling will be done by setting
norelabel=true. However, if no seclabel element is present in domain XML
and hypervisor is configured not to confine domains by default, we only
set type to "none" without turning off relabeling. Thus if such a domain
is being started, security driver wants to relabel resources with
default label, which doesn't make any sense.

Moreover, with SELinux security driver, the generated image label lacks
"s0" sensitivity, which causes setfilecon() fail with EINVAL in
enforcing mode.
(cherry picked from commit ce53382ba28179d3a504b29b4f888b6e130d53f0)

13 years agofixed SegFault in virauth
Martin Kletzander [Tue, 24 Jul 2012 14:08:46 +0000 (16:08 +0200)] 
fixed SegFault in virauth

No check for conn->uri being NULL in virAuthGetConfigFilePath (valid
state) made the client segfault. This happens for example with these
settings:
 - no virtualbox driver installed (modifies conn->uri)
 - no default URI set (VIRSH_DEFAULT_CONNECT_URI="",
   LIBVIRT_DEFAULT_URI="", uri_default="")
 - auth_sock_rw="sasl"
 - virsh run as root

That are unfortunately the settings with fresh Fedora 17 installation
with VDSM.

The check ought to be enough as conn->uri being NULL is valid in later
code and is handled properly.
(cherry picked from commit 5eef74320b0bb9e604400168e0896c5ac527abef)

13 years agoadding handling EINTR to poll to make it more robust
Royce Lv [Thu, 19 Jul 2012 01:49:41 +0000 (09:49 +0800)] 
adding handling EINTR to poll to make it more robust

some system call and signal will interrupt poll,
making event loop stops and fails to react events and keepalive message
from libvirt.
adding handling EINTR to poll to make it more robust

Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com>
(cherry picked from commit 5e62ba3428b377d47f5ddbee705ee33027354824)

13 years agodoc: Fix time keeping example for the guest clock
Doug Goldstein [Sat, 21 Jul 2012 13:14:44 +0000 (08:14 -0500)] 
doc: Fix time keeping example for the guest clock

The time keeping example was missing quotes which resulted in an error
if you copied and pasted the example into a domain's XML. Additionally
the rest of the examples use single quotes (') instead of double quotes
(") so standardized that.
(cherry picked from commit d57e17d58300589e4b53c52360d9fcd7592f53b2)

13 years agoFix test failure when no IPv6 is avail
Doug Goldstein [Sun, 22 Jul 2012 17:04:16 +0000 (12:04 -0500)] 
Fix test failure when no IPv6 is avail

When the system doesn't have IPv6 available (e.g. not built into the
kernel or the module isn't loaded), you can not create an IPv6 socket.
The test determines earlier on that IPv6 isn't available then goes and
creates a socket. This makes socket creation conditional on IPv6
availability.
(cherry picked from commit faffe26909d8e5cde7e80e5a8f33296ed56dcfc7)

13 years agoEnsure failure to talk to Xen hypervisor is fatal when privileged
Daniel P. Berrange [Fri, 20 Jul 2012 13:52:44 +0000 (14:52 +0100)] 
Ensure failure to talk to Xen hypervisor is fatal when privileged

As per the comment, the Xen hypervisor driver is considered to
be mandatory when running privileged. When it fails to open,
we should thus return an error, not ignore it.
(cherry picked from commit 489900e3de9de74ce4197807935ffc3ef8a68bca)

13 years agoDon't autostart domains when reloading config
Daniel P. Berrange [Fri, 13 Jul 2012 11:49:55 +0000 (12:49 +0100)] 
Don't autostart domains when reloading config

When sending SIGHUP to libvirtd, it will trigger the virStateDriver
reload operation. This is intended to reload the configuration files
for guests. For unknown historical reasons this is also triggering
autostart of all guests. Autostart is generally expected to be
something that happens on OS startup. Starting VMs on SIGHUP will
violate that expectation and potentially cause dangerous scenarios
if the admin has explicitly shutdown a misbehaving VM that has
been marked as autostart

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit 95c2c19f06298a6e93849d9a5da8161460c33f43)

13 years agobuild: fix compilation without struct ifreq
Eric Blake [Wed, 18 Jul 2012 22:46:05 +0000 (16:46 -0600)] 
build: fix compilation without struct ifreq

Detected on Cygwin.  Broken in commit 387117ad.

* src/util/virnetdev.c (virNetDevValidateConfig)
(virNetDevReplaceNetConfig): Fix prototypes.
* src/util/virnetlink.c (virNetlinkEventAddClient)
(virNetlinkEventRemoveClient): Likewise.
(cherry picked from commit 68a97bd85fffca4494bc5620c06c8e35f5c0af64)

13 years agoremote: Fix locking in stream APIs
Jiri Denemark [Tue, 17 Jul 2012 14:36:23 +0000 (16:36 +0200)] 
remote: Fix locking in stream APIs

Remote driver needs to make sure the driver lock is released before
entering client IO loop as that may block indefinitely in poll(). As a
direct consequence of not following this in stream APIs, tunneled
migration to a destination host which becomes non-responding may block
qemu driver. Luckily, if keepalive is turned for p2p migrations, both
remote and qemu drivers will get automagically unblocked after keepalive
timeout.
(cherry picked from commit 17f3be079c3c421eff203fcd311b0357ec42d801)

13 years agoqemu: Do not fail virConnectCompareCPU if host CPU is not known
Jiri Denemark [Thu, 12 Jul 2012 09:49:15 +0000 (11:49 +0200)] 
qemu: Do not fail virConnectCompareCPU if host CPU is not known

When host CPU could not be properly detected, virConnectCompareCPU will
just report that any CPU is incompatible with host CPU instead of
failing.
(cherry picked from commit 87c8623161f19c4f37844991deb1477e53c2b310)

13 years agoClarify direct migration
Jiri Denemark [Thu, 12 Jul 2012 13:27:18 +0000 (15:27 +0200)] 
Clarify direct migration

When --direct is used when migrating a domain running on a hypervisor
that does not support direct migration (such as QEMU), the caller would
get the following error message:

    this function is not supported by the connection driver:
    virDomainMigrateToURI2

which is a complete nonsense since qemu driver implements
virDomainMigrateToURI2. This patch would emit a more sensible error in
this case:

    Requested operation is not valid: direct migration is not supported
    by the connection driver
(cherry picked from commit 3189dfb1636da22d426d2fc07cc9f60304b16c5c)

13 years agoFix daemon auto-spawning
Christophe Fergeau [Thu, 12 Jul 2012 11:52:36 +0000 (13:52 +0200)] 
Fix daemon auto-spawning

Commit 32a9aac switched libvirt to use the XDG base directories
to locate most of its data/config. In particular, the per-user socket
for qemu:///session is now stored in the XDG runtime directory.
This directory is located by looking at the XDG_RUNTIME_DIR environment
variable, with a fallback to ~/.cache/libvirt if this variable is not
set.

When the daemon is autospawned because a client application wants
to use qemu:///session, the daemon is ran in a clean environment
which does not contain XDG_RUNTIME_DIR. It will create its socket
in ~/.cache/libvirt. If the client application has XDG_RUNTIME_DIR
set, it will not look for the socket in the fallback place, and will
fail to connect to the autospawned daemon.

This patch adds XDG_RUNTIME_DIR to the daemon environment before
auto-starting it. I've done this in virNetSocketForkDaemon rather
than in virCommandAddEnvPassCommon as I wasn't sure we want to pass
these variables to other commands libvirt spawns. XDG_CACHE_HOME
and XDG_CONFIG_HOME are also added to the daemon env as it makes use
of those as well.
(cherry picked from commit efe6c8021146d046846ead5b5efc9828d97c1ceb)

13 years agoopenvz: Handle domain obj hash map errors
Guido Günther [Mon, 9 Jul 2012 10:11:17 +0000 (12:11 +0200)] 
openvz: Handle domain obj hash map errors

This makes the driver fail with a clear error message in case of UUID
collisions (for example if somebody copied a container configuration
without updating the UUID) and also raises an error on other hash map
failures.

OpenVZ itself doesn't complain about duplicate UUIDs since this
parameter is only used by libvirt.
(cherry picked from commit 31351c316fee0487dcbc5ef6b630d75be6b212e5)

13 years agoFix /domain/features setting in qemuParseCommandLine
Christophe Fergeau [Tue, 10 Jul 2012 10:02:10 +0000 (12:02 +0200)] 
Fix /domain/features setting in qemuParseCommandLine

Commit 5e6ce1 moved down detection of the ACPI feature in
qemuParseCommandLine. However, when ACPI is detected, it clears
all feature flags in def->features to only set ACPI. This used to
be fine because this was the first place were def->features was set,
but after the move this is no longer necessarily true because this
block comes before the ACPI check:

if (strstr(def->emulator, "kvm")) {
    def->virtType = VIR_DOMAIN_VIRT_KVM;
    def->features |= (1 << VIR_DOMAIN_FEATURE_PAE);
}

Since def is allocated in qemuParseCommandLine using VIR_ALLOC, we
can always use |= when modifying def->features
(cherry picked from commit 626dd5180e472c0b4c0c5fb7072358743ca63653)

13 years agosystemd: start libvirtd after network
Jim Fehlig [Mon, 9 Jul 2012 15:52:55 +0000 (09:52 -0600)] 
systemd: start libvirtd after network

Domains configured with autostart may fail to start if the host
network stack has not been started.  E.g. when using bridged
networking autostarting a domain can fail with

libvirtd[1403]: 2012-06-20 13:23:49.833+0000: 1485: error :
qemuAutostartDomain:177 : Failed to autostart VM 'test': Cannot get
interface MTU on 'br0': No such device
(cherry picked from commit 4036aa91bff6482cf4c136c93277619fa8ec6f94)

13 years agoFix a string format bug in qemu_cgroup.c
tangchen [Fri, 6 Jul 2012 01:53:11 +0000 (09:53 +0800)] 
Fix a string format bug in qemu_cgroup.c

Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
(cherry picked from commit 097da1abbd25da5876850785f6b9e742166b16d4)

13 years agovirsh: Clarify documentation for virsh dompmsuspend command
Peter Krempa [Thu, 21 Jun 2012 15:59:27 +0000 (17:59 +0200)] 
virsh: Clarify documentation for virsh dompmsuspend command

Clarify the docs to make more clear what this command does and that it
requires a guest agent running in the guest.
(cherry picked from commit e16d434da75430b05545f4d85d156f36b1ce51d1)

13 years agostorage_backend_fs: Don't free a part of a structure on error
Peter Krempa [Mon, 9 Jul 2012 12:10:05 +0000 (14:10 +0200)] 
storage_backend_fs: Don't free a part of a structure on error

As the storage pool sources are stored in a list of structs, the pointer
returned by virStoragePoolSourceListNewSource() shouldn't be freed as it
points in the middle of a memory block. This combined with a regression
that takes the error path every time on caused a double-free abort on
the src struct in question.
(cherry picked from commit ab9c72ae9e55e7190f52ad1550624630a5c7f78b)

13 years agoFix one test regression on auth Ceph support
Daniel Veillard [Thu, 5 Jul 2012 09:56:23 +0000 (17:56 +0800)] 
Fix one test regression on auth Ceph support

The extra data need to be added to one test case
(cherry picked from commit c47a8aec531714101dd1eb2088742c60296b852b)

13 years agoqemu: Always set auth_supported for Ceph disks.
Wido den Hollander [Mon, 25 Jun 2012 15:44:01 +0000 (17:44 +0200)] 
qemu: Always set auth_supported for Ceph disks.

Recently the Ceph project defaulted auth_supported from 'none' to 'cephx'.

When no auth information was set for Ceph disks this would lead to librados defaulting to
'cephx', but there would be no additional authorization information.

We now explicitly set auth_supported to none when passing down arguments to Qemu.

Signed-off-by: Wido den Hollander <wido@widodh.nl>
(cherry picked from commit ccb94785007d33365d49dd566e194eb0a022148d)

(crobinso: Add Wido to AUTHORS)

13 years agoqemu: add rbd to whitelist of migration-safe formats
Josh Durgin [Mon, 2 Jul 2012 18:55:26 +0000 (11:55 -0700)] 
qemu: add rbd to whitelist of migration-safe formats

QEMU (and librbd) flush the cache on the source before the
destination starts, and the destination does not read any
changeable data before that, so live migration with rbd caching
is safe.

This makes 'virsh migrate' work with rbd and caching without the
--unsafe flag.

Reported-by: Vladimir Bashkirtsev <vladimir@bashkirtsev.com>
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
(cherry picked from commit 78290b1641e95304c862062ee0aca95395c5926c)

13 years agomaint: use full author name for previous commit
Eric Blake [Mon, 2 Jul 2012 15:36:16 +0000 (09:36 -0600)] 
maint: use full author name for previous commit

* .mailmap: Add a name alias.
(cherry picked from commit 30a30a7a7058e4fd22fc8c2efe858b6b701a8145)

13 years agofix key error for qemuMonitorGetBlockStatsInfo
lvroyce [Thu, 21 Jun 2012 07:37:13 +0000 (15:37 +0800)] 
fix key error for qemuMonitorGetBlockStatsInfo

virDomainBlockStatsFlags can't collect total_time_ns for read/write/flush
because of key typo when retriveing from qemu cmd result

Signed-off-by: lvroyce <lvroyce@linux.vnet.ibm.com>
(cherry picked from commit 811cea18f34485cf524639b1527887750da777ca)

13 years agovirsh: Cleanup virsh -V output
Doug Goldstein [Tue, 26 Jun 2012 18:31:31 +0000 (13:31 -0500)] 
virsh: Cleanup virsh -V output

Fixed up virsh -V output by removing invalid WITH_PROXY & WITH_ONE
checks, adding several missing checks, and fixing the DTrace check.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
(cherry picked from commit 9faaaba432851b093b7fac880e0fac17bf8fee96)

13 years agonwfilter: Fix memory leak
Stefan Berger [Fri, 29 Jun 2012 18:36:15 +0000 (14:36 -0400)] 
nwfilter: Fix memory leak

Below patch fixes this coverity report:

/libvirt/src/conf/nwfilter_conf.c:382:
leaked_storage: Variable "varAccess" going out of scope leaks the storage it points to.

(cherry picked from commit b1675bac67c590ffd68b38a6fdacc66442ca7b8c)

13 years agoFix vm's outbound traffic control problem
Eiichi Tsukata [Fri, 29 Jun 2012 06:09:16 +0000 (15:09 +0900)] 
Fix vm's outbound traffic control problem

Hello,

This is a patch to fix vm's outbound traffic control problem.

Currently, vm's outbound traffic control by libvirt doesn't go well.
This problem was previously discussed at libvir-list ML, however
it seems that there isn't still any answer to the problem.
http://www.redhat.com/archives/libvir-list/2011-August/msg00333.html

I measured Guest(with virtio-net) to Host TCP throughput with the
command "netperf -H".
Here are the outbound QoS parameters and the results.

outbound average rate[kilobytes/s] : Guest to Host throughput[Mbit/s]
======================================================================
1024  (8Mbit/s)                    : 4.56
2048  (16Mbit/s)                   : 3.29
4096  (32Mbit/s)                   : 3.35
8192  (64Mbit/s)                   : 3.95
16384 (128Mbit/s)                  : 4.08
32768 (256Mbit/s)                  : 3.94
65536 (512Mbit/s)                  : 3.23

The outbound traffic goes down unreasonably and is even not controled.

The cause of this problem is too large mtu value in "tc filter" command run by
libvirt. The command uses burst value to set mtu and the burst is equal to
average rate value if it's not set. This value is too large. For example
if the average rate is set to 1024 kilobytes/s, the mtu value is set to 1024
kilobytes. That's too large compared to the size of network packets.
Here libvirt applies tc ingress filter to Host's vnet(tun) device.
Tc ingress filter is implemented with TBF(Token Buckets Filter) algorithm. TBF
uses mtu value to calculate the amount of token consumed by each packet. With too
large mtu value, the token consumption rate is set too large. This leads to
token starvation and deterioration of TCP throughput.

Then, should we use the default mtu value 2 kilobytes?
The anser is No, because Guest with virtio-net device uses 65536 bytes
as mtu to transmit packets to Host, and the tc filter with the default mtu
value 2k drops packets whose size is larger than 2k. So, the most packets
is droped and again leads to deterioration of TCP throughput.

The appropriate mtu value is 65536 bytes which is equal to the maximum value
of network interface device defined in <linux/netdevice.h>. The value is
not so large that it causes token starvation and not so small that it
drops most packets.
Therefore this patch set the mtu value to 64kb(== 65535 bytes).

Again, here are the outbound QoS parameters and the TCP throughput with
the libvirt patched.

outbound average rate[kilobytes/s] : Guest to Host throughput[Mbit/s]
======================================================================
1024  (8Mbit/s)                    : 8.22
2048  (16Mbit/s)                   : 16.42
4096  (32Mbit/s)                   : 32.93
8192  (64Mbit/s)                   : 66.85
16384 (128Mbit/s)                  : 133.88
32768 (256Mbit/s)                  : 271.01
65536 (512Mbit/s)                  : 547.32

The outbound traffic conforms to the given limit.

Thank you,

Signed-off-by: Eiichi Tsukata <eiichi.tsukata.xh@hitachi.com>
(cherry picked from commit 0ac3baee2c2fd56ef89f24f5ea484e39d2bf35f5)

Conflicts:

AUTHORS

13 years agonetwork_conf: Don't free uninitialized pointers while parsing DNS SRV
Peter Krempa [Thu, 28 Jun 2012 21:42:50 +0000 (23:42 +0200)] 
network_conf: Don't free uninitialized pointers while parsing DNS SRV

If the user specified invalid protocol type in a network's SRV record
the error path ended up in freeing uninitialized pointers causing a
daemon crash.

*network_conf.c: virNetworkDNSSrvDefParseXML(): initialize local
                                                variables
(cherry picked from commit 96ebb4fe586512487f83b4696d20923315889796)

13 years agostorage: Error out if the target is already mounted for netfs pool
Osier Yang [Wed, 27 Jun 2012 14:02:23 +0000 (22:02 +0800)] 
storage: Error out if the target is already mounted for netfs pool

mnt_fsname can not be the same, as we check the duplicate pool
sources earlier before, means it can't be the same pool, moreover,
a pool can't be started if it's already active anyway. So no reason
to act as success.
(cherry picked from commit 8116529409357c82824fb280165ea0ee6f2d6277)

13 years agoconfigure: show correct default argument in help
Marc-André Lureau [Thu, 28 Jun 2012 00:21:49 +0000 (02:21 +0200)] 
configure: show correct default argument in help

Pushed without ack, under the trivial rule.
(cherry picked from commit b29f9bbe498892aa56c293b9497ac45f54f3bc9e)

13 years agoevents: Don't fail on registering events for two different domains
Michal Privoznik [Wed, 27 Jun 2012 10:06:45 +0000 (12:06 +0200)] 
events: Don't fail on registering events for two different domains

virConnectDomainEventRegisterAny() takes a domain as an argument.
So it should be possible to register the same event (be it
VIR_DOMAIN_EVENT_ID_LIFECYCLE for example) for two different domains.
That is, we need to take domain into account when searching for
duplicate event being already registered.
(cherry picked from commit cd15303fd123146b0ba53e387d08ef22b707223c)

13 years agodoc: fix typo in virDomainDestroy API doc
Christophe Fergeau [Wed, 27 Jun 2012 12:49:06 +0000 (14:49 +0200)] 
doc: fix typo in virDomainDestroy API doc
(cherry picked from commit 0b7ad22ba6aaefaaa1d9792f3c236322aafe93c7)

13 years agoAdd /tools/libvirt-guests.service to .gitignore
Guido Günther [Tue, 26 Jun 2012 16:13:46 +0000 (18:13 +0200)] 
Add /tools/libvirt-guests.service to .gitignore

since it's an autogenerated file
(cherry picked from commit 16a8f5e5b97a9044d33afcbb4814577ac5345dc6)

13 years agoDon't install systemd service files executable
Guido Günther [Tue, 26 Jun 2012 07:53:33 +0000 (09:53 +0200)] 
Don't install systemd service files executable

since they aren't. Detected by Debian's lintian.
(cherry picked from commit 78bf84f4cf53de6b7a492c14cfaf4ef45480ed9f)

13 years agoS390: Fixed Parser for /proc/cpuinfo needs to be adapted for your architecture
Thang Pham [Fri, 22 Jun 2012 11:50:12 +0000 (13:50 +0200)] 
S390: Fixed Parser for /proc/cpuinfo needs to be adapted for your architecture

Minimal CPU "parser" for s390 to avoid compile time warning.

Signed-off-by: Thang Pham <thang.pham@us.ibm.com>
Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
(cherry picked from commit bf2e40fac034428d51efbab4a39cfe3c56132786)

(crobinso: Add Thang to AUTHORS)

13 years agoS390: Override QEMU_CAPS_NO_ACPI for s390x
Viktor Mihajlovski [Fri, 22 Jun 2012 11:50:10 +0000 (13:50 +0200)] 
S390: Override QEMU_CAPS_NO_ACPI for s390x

Starting a KVM guest on s390 fails immediately. This is because
"qemu --help" reports -no-acpi even for the s390(x) architecture but
-no-acpi isn't supported there.
Workaround is to remove QEMU_CAPS_NO_ACPI from the capability set
after the version/capability extraction.

Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
(cherry picked from commit 6a6c347118f0310157277d90c556cdd41b7e922c)

(crobinso: add Viktor to AUTHORS)

13 years agoqemu: Improve error if setmem fails for lacking of balloon support
Osier Yang [Mon, 25 Jun 2012 13:34:22 +0000 (21:34 +0800)] 
qemu: Improve error if setmem fails for lacking of balloon support

"cannot set memory of an active domain" is misleading, it sounds
like setting memory of active domain is not supported.
(cherry picked from commit 968b6c60e9b1889dbaf72cfee1c4fccbd640d69d)

13 years agovirsh: Improve error when trying to change vm's cpu count 0
Peter Krempa [Thu, 21 Jun 2012 16:34:32 +0000 (18:34 +0200)] 
virsh: Improve error when trying to change vm's cpu count 0

This patch adds a check for the count of processors the user requests
for the guest machine so that invalid values produce a more helpful
error message.
(cherry picked from commit de924ca90a0ff1ad8adeab460761f65b7a742d72)

13 years agoInitialize random generator in lxc controller
Jim Fehlig [Thu, 21 Jun 2012 05:28:09 +0000 (23:28 -0600)] 
Initialize random generator in lxc controller

The lxc contoller eventually makes use of virRandomBits(), which was
segfaulting since virRandomInitialize() is never invoked.

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff554d560 in random_r () from /lib64/libc.so.6
(gdb) bt
0  0x00007ffff554d560 in random_r () from /lib64/libc.so.6
1  0x0000000000469eaa in virRandomBits (nbits=32) at util/virrandom.c:80
2  0x000000000045bf69 in virHashCreateFull (size=256,
    dataFree=0x4aa2a2 <hashDataFree>, keyCode=0x45bd40 <virHashStrCode>,
    keyEqual=0x45bdad <virHashStrEqual>, keyCopy=0x45bdfa <virHashStrCopy>,
    keyFree=0x45be37 <virHashStrFree>) at util/virhash.c:134
3  0x000000000045c069 in virHashCreate (size=0, dataFree=0x4aa2a2 <hashDataFree>)
    at util/virhash.c:164
4  0x00000000004aa562 in virNWFilterHashTableCreate (n=0)
    at conf/nwfilter_params.c:686
5  0x00000000004aa95b in virNWFilterParseParamAttributes (cur=0x711d30)
    at conf/nwfilter_params.c:793
6  0x0000000000481a7f in virDomainNetDefParseXML (caps=0x702c90, node=0x7116b0,
    ctxt=0x7101b0, bootMap=0x0, flags=0) at conf/domain_conf.c:4589
7  0x000000000048cc36 in virDomainDefParseXML (caps=0x702c90, xml=0x710040,
    root=0x7103b0, ctxt=0x7101b0, expectedVirtTypes=16, flags=0)
    at conf/domain_conf.c:8658
8  0x000000000048f011 in virDomainDefParseNode (caps=0x702c90, xml=0x710040,
    root=0x7103b0, expectedVirtTypes=16, flags=0) at conf/domain_conf.c:9360
9  0x000000000048ee30 in virDomainDefParse (xmlStr=0x0,
    filename=0x702ae0 "/var/run/libvirt/lxc/x.xml", caps=0x702c90,
    expectedVirtTypes=16, flags=0) at conf/domain_conf.c:9310
10 0x000000000048ef00 in virDomainDefParseFile (caps=0x702c90,
    filename=0x702ae0 "/var/run/libvirt/lxc/x.xml", expectedVirtTypes=16, flags=0)
    at conf/domain_conf.c:9332
11 0x0000000000425053 in main (argc=5, argv=0x7fffffffe2b8)
    at lxc/lxc_controller.c:1773
(cherry picked from commit 57349ffc10290eed2cb25ca7cfb4b34ab5003156)

13 years agoopenvz: check pointer size instead of int
Guido Günther [Tue, 19 Jun 2012 05:26:31 +0000 (07:26 +0200)] 
openvz: check pointer size instead of int

since int is 4 bytes on both i386 and amd64.
(cherry picked from commit 229773fcbd9a06950224600c97350c0d4e8e8701)

13 years agoFix default USB controller for ppc64
Dipankar Sarma [Tue, 19 Jun 2012 10:21:47 +0000 (15:51 +0530)] 
Fix default USB controller for ppc64

Fix the default usb controller for pseries systems if none
specified.

Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com>
(cherry picked from commit d1778b71480ff76e22be3ab47936b919deb27145)

13 years agovirsh: fix few typos on desc command
Martin Kletzander [Tue, 19 Jun 2012 09:05:31 +0000 (11:05 +0200)] 
virsh: fix few typos on desc command

virsh help fix:
 - <--title> can also /get/ the title

virsh man page:
 - missing <domain-id>
 - <new_desc> should be <new-desc>
(cherry picked from commit 3dc733bb0134c1d026b48b8bdfd98db9751f6f3f)

13 years agodomain_conf: fix possible memory leak
Martin Kletzander [Tue, 19 Jun 2012 10:08:49 +0000 (12:08 +0200)] 
domain_conf: fix possible memory leak

Until now, it was possible to crash libvirtd when defining domain with
channel device with missing source element.

When creating new virDomainChrDef, target.port is set to -1, but
unfortunately it is an union with addresses that virDomainChrDefFree
tries to free in case the deviceType is channel. Having the port set
to -1 is intended, however the cleanest way to get around the problems
with the crash seems to be renumbering the VIR_DOMAIN_CHR_CHANNEL_
target types to cover new NONE type (with value 0) being the default
(no target type yet).
(cherry picked from commit 830d035ff5a88c3896a6e508364e34697de941a1)

13 years agovirsh: make domiftune interface help string consistent
Martin Kletzander [Tue, 19 Jun 2012 12:14:50 +0000 (14:14 +0200)] 
virsh: make domiftune interface help string consistent

Append '(MAC Address)' after the help string of domiftune virsh
command as it takes the same type of argument as domif-{get,set}link
which have it specified.
(cherry picked from commit 4b2273074c2459136c67e657d2a2ac2e9db6f5a4)

13 years agoopenvz: Fix wordsize on 64 bit architectures
Guido Günther [Thu, 14 Jun 2012 18:14:05 +0000 (20:14 +0200)] 
openvz: Fix wordsize on 64 bit architectures

The word size there is 64 bit not 8.
(cherry picked from commit 7dcee3f9562938c3e25ca2b96fbc01f5e9251055)

13 years agoLXC: fix memory leak in lxcContainerMountFSBlockHelper
Gao feng [Tue, 12 Jun 2012 05:55:48 +0000 (13:55 +0800)] 
LXC: fix memory leak in lxcContainerMountFSBlockHelper

we alloc the memory for format in lxcContainerMountDetectFilesystem
but without free it in lxcContainerMountFSBlockHelper.

this patch just call VIR_FREE to free it.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
(cherry picked from commit 73e2d646fb027a8f943bea9cc7ff28aa0362781d)

13 years agoqemu_agent: Wait for events instead of agent response
Michal Privoznik [Fri, 15 Jun 2012 16:00:13 +0000 (18:00 +0200)] 
qemu_agent: Wait for events instead of agent response

With latest changes to qemu-ga success on some commands is not reported
anymore, e.g. guest-shutdown or guest-suspend-*. However, errors are
still being reported. Therefore, we need to find different source of
indication if operation was successful. Events.
(cherry picked from commit d97a234c62d272eb140c836cb93d750a4dec3354)

13 years agobuild: hoist qemu dependence on yajl to configure
Eric Blake [Wed, 13 Jun 2012 16:09:39 +0000 (10:09 -0600)] 
build: hoist qemu dependence on yajl to configure

Commit 6e769eba made it a runtime error if libvirt was compiled
without yajl support but targets a new enough qemu.  But enough
users are hitting this on self-compiled libvirt that it is worth
erroring out at compilation time, rather than an obscure failure
when trying to use the built executable.

* configure.ac: If qemu is requested and -version works, require
yajl when qemu version is new enough.
* src/qemu/qemu_capabilities.c (qemuCapsComputeCmdFlags): Add
comment.
(cherry picked from commit 350583c859deaaddc98d7319e1c2ad649e4d3e83)

13 years agoautogen: Always abide --system
Cole Robinson [Fri, 15 Jun 2012 17:46:51 +0000 (13:46 -0400)] 
autogen: Always abide --system

If we do ./autogen.sh && ./configure, then later try ./autogen.sh --system,
configure isn't invoked with the requested params. Instead
config.status --recheck is run.
(cherry picked from commit 2cd29c3107ff1f135e05fa55f3b389f37a6cb867)

13 years agoCheck for errors when parsing bridge interface XML
Jim Fehlig [Thu, 14 Jun 2012 17:20:17 +0000 (11:20 -0600)] 
Check for errors when parsing bridge interface XML

The return status of virInterfaceDefParseBridge() was not being
checked, potentially resulting in the creation of a broken
interface.
(cherry picked from commit cc004a664750e84a234d01ae4a5d774f7f980307)

13 years agoschema: Update domain XML schema
Osier Yang [Fri, 15 Jun 2012 02:34:04 +0000 (10:34 +0800)] 
schema: Update domain XML schema

'boot' tag shouldn't be exclusive with 'kernel', 'initrd', and 'cmdline',
though the boot sequence doesn't make sense when the guest boots from
kernel directly. But it's useful if booting from kernel is to install
a newguest, even if it's not to install a guest, there is no hurt. And
on the other hand, we allow 'boot' and the kernel tags when parsing.
(cherry picked from commit b34324fbf09c82fbd4ad2c0dcc140172ee045c8a)

13 years agoqemu: fix potential dead lock
Wen Congyang [Fri, 25 May 2012 10:12:00 +0000 (18:12 +0800)] 
qemu: fix potential dead lock

If we lock the qemu_driver, we should call qemuDomainObjBeginJobWithDriver()
not qemuDomainObjBeginJob().
(cherry picked from commit 5136c5799fabe411eb0fadc59377572e21386d83)

13 years agovirsh: Null terminated the string memcpy from buffer explicitly
Osier Yang [Thu, 14 Jun 2012 11:09:53 +0000 (19:09 +0800)] 
virsh: Null terminated the string memcpy from buffer explicitly

Detected by valgrind:

==16217== 1 errors in context 1 of 12:
==16217== Invalid read of size 1
==16217==    at 0x4A07804: __GI_strlen (mc_replace_strmem.c:284)
==16217==    by 0x3019F167F6: xdr_string (in /lib64/libc-2.12.so)
==16217==    by 0x3033709E8D: xdr_remote_nonnull_string (remote_protocol.c:31)
==16217==    by 0x303370E5CB: xdr_remote_domain_update_device_flags_args (remote_protocol.c:2028)
==16217==    by 0x30337197D1: virNetMessageEncodePayload (virnetmessage.c:341)
==16217==    by 0x30337135E1: virNetClientProgramCall (virnetclientprogram.c:327)
==16217==    by 0x30336F1EFD: callWithFD (remote_driver.c:4586)
==16217==    by 0x30336F1F7B: call (remote_driver.c:4607)
==16217==    by 0x30336F42F2: remoteDomainUpdateDeviceFlags (remote_client_bodies.h:2865)
==16217==    by 0x30336D46E5: virDomainUpdateDeviceFlags (libvirt.c:9457)
==16217==    by 0x41AEE8: cmdChangeMedia (virsh.c:15249)
==16217==    by 0x413CB4: vshCommandRun (virsh.c:18669)
==16217==  Address 0x4ec5e25 is 0 bytes after a block of size 293 alloc'd
==16217==    at 0x4A04A28: calloc (vg_replace_malloc.c:467)
==16217==    by 0x303364F1DB: virAllocN (memory.c:129)
==16217==    by 0x41A844: vshPrepareDiskXML (virsh.c:15043)
==16217==    by 0x41AECC: cmdChangeMedia (virsh.c:15246)
==16217==    by 0x413CB4: vshCommandRun (virsh.c:18669)
==16217==    by 0x423973: main (virsh.c:20261)
(cherry picked from commit e3843d7f046da93d5dfb8f1a8a8f4fcee8f6a5c1)

13 years agodocs: small typo in formatdomain.html
Laine Stump [Thu, 14 Jun 2012 17:26:19 +0000 (13:26 -0400)] 
docs: small typo in formatdomain.html
(cherry picked from commit 8b36e32c16641f09c484a32920bb9da255ea4df9)

13 years agoRemove bogus xen-devel dep from libvirt-devel RPM
Daniel P. Berrange [Tue, 3 Apr 2012 11:02:49 +0000 (12:02 +0100)] 
Remove bogus xen-devel dep from libvirt-devel RPM

The public libvirt API does not have any application visible
dependency on Xen libraries. The xen-devel dependency is thus
bogus
(cherry picked from commit 899bf6680a8c7c715e79ed6e80b00528eacb73cc)

Signed-off-by: Cole Robinson <crobinso@redhat.com>
13 years agoRevert "qemu: fix build when !HAVE_NUMACTL"
Cole Robinson [Sat, 11 Aug 2012 22:44:37 +0000 (18:44 -0400)] 
Revert "qemu: fix build when !HAVE_NUMACTL"

This reverts commit d8978c90f950a7ea58a2cab6d3157dbcfcce2e3e.

Not suitable for -maint without backporting a feature as well,
according to Jim's post here:

http://www.mail-archive.com/libvir-list@redhat.com/msg57781.html

13 years agodaemon: Fix crash in virTypedParameterArrayClear
Jiri Denemark [Mon, 30 Jul 2012 10:14:54 +0000 (12:14 +0200)] 
daemon: Fix crash in virTypedParameterArrayClear

CVE-2012-3445, https://bugzilla.redhat.com/show_bug.cgi?id=844745

Daemon uses the following pattern when dispatching APIs with typed
parameters:

    VIR_ALLOC_N(params, nparams);
    virDomain*(dom, params, &nparams, flags);
    virTypedParameterArrayClear(params, nparams);

In case nparams was originally set to 0, virDomain* API would fill it
with the number of typed parameters it can provide and we would use this
number (rather than zero) to clear params. Because VIR_ALLOC* returns
non-NULL pointer even if size is 0, the code would end up walking
through random memory. If we were lucky enough and the memory contained
7 (VIR_TYPED_PARAM_STRING) at the right place, we would try to free a
random pointer and crash.

Let's make sure params stays NULL when nparams is 0.
(cherry picked from commit 6039a2cb49c8af4c68460d2faf365a7e1c686c7b)

13 years agolibvirt-guests: systemd host shutdown does not work
Gerd v. Egidy [Fri, 27 Jul 2012 15:01:04 +0000 (17:01 +0200)] 
libvirt-guests: systemd host shutdown does not work

I originally postet this into the Fedora bugzilla
https://bugzilla.redhat.com/show_bug.cgi?id=843836

Currently gracefully shutting down guest vms on host shutdown does not work on
Fedora 17, the guests are killed hard on system shutdown.

The reason is systemd considers libvirt-guests.service to be stopped when the
system is running:

$ systemctl status libvirt-guests.service
libvirt-guests.service - Suspend Active Libvirt Guests
          Loaded: loaded (/usr/lib/systemd/system/libvirt-guests.service;
enabled)
          Active: deactivating (stop) since Fri, 27 Jul 2012 15:47:31 +0200;
2min 48s ago
         Process: 1085 ExecStart=/etc/init.d/libvirt-guests start
(code=exited, status=0/SUCCESS)
         Control: 1150 (libvirt-guests)
          CGroup: name=systemd:/system/libvirt-guests.service
                  └ control
                    ├ 1150 /bin/sh /etc/init.d/libvirt-guests stop
                    └ 2257 sleep 1

libvirt-guests.service is defined as type "simple" in systemd (the default).
That means systemd will shut down the service when the start executable is
terminated after starting is done. Systemd will not call stop again on system
shutdown because it thinks it is already stopped.

The solution is to define it as type "oneshot" and set the flag
"RemainAfterExit". Then systemd will consider the service as active after
startup and will call the stop function on host shutdown.
(cherry picked from commit 79ca7e4e5763795b041e95738c73d4e64bf1024b)

13 years agobuild: update to latest gnulib, for secure tarball
Eric Blake [Tue, 10 Jul 2012 15:37:07 +0000 (09:37 -0600)] 
build: update to latest gnulib, for secure tarball

Pick up some build fixes in the latest gnulib.  In particular,
we want to ensure that official tarballs are secure, but don't
want to penalize people who don't run 'make dist', since fixed
automake still hasn't hit common platforms like Fedora 17.

* .gnulib: Update to latest, for Automake CVE-2012-3386 detection.
* bootstrap: Resync from gnulib.
* bootstrap.conf (gnulib_extra_files): Drop missing, since gnulib
has dropped it in favor of Automake's version.
* cfg.mk (local-checks-to-skip): Conditionally skip the security
check in cases where it doesn't matter.
(cherry picked from commit f12e1396212b9127306245c61566f171a3df7aa3)

13 years agoUpdate to latest GNULIB to fix compat with Mingw64 toolchain
Daniel P. Berrange [Thu, 21 Jun 2012 13:55:51 +0000 (14:55 +0100)] 
Update to latest GNULIB to fix compat with Mingw64 toolchain

On both x86_64-w64-mingw32 and i686-w64-mingw32 there were
the following warnings/errors:

  CC     fstat.lo
../../../gnulib/lib/fstat.c:27:0: warning: "stat" redefined [enabled by default]
In file included from ./sys/stat.h:32:0,
                 from ../../../gnulib/lib/fstat.c:25:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/stat.h:258:0: note: this is the location of the previous definition
../../../gnulib/lib/fstat.c:28:0: warning: "fstat" redefined [enabled by default]
In file included from ./sys/stat.h:32:0,
                 from ../../../gnulib/lib/fstat.c:25:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/stat.h:259:0: note: this is the location of the previous definition

  CC     stat.lo
../../../gnulib/lib/stat.c:32:0: warning: "stat" redefined [enabled by default]
In file included from ./sys/stat.h:32:0,
                 from ../../../gnulib/lib/stat.c:27:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/sys/stat.h:258:0: note: this is the location of the previous definition

  CC     stdio-read.lo
../../../gnulib/lib/stdio-read.c:102:1: error: redefinition of 'vscanf'
In file included from ./stdio.h:43:0,
                 from ../../../gnulib/lib/stdio-read.c:21:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/stdio.h:397:7: note: previous definition of 'vscanf' was here
../../../gnulib/lib/stdio-read.c:108:1: error: redefinition of 'vfscanf'
In file included from ./stdio.h:43:0,
                 from ../../../gnulib/lib/stdio-read.c:21:
/usr/x86_64-w64-mingw32/sys-root/mingw/include/stdio.h:384:7: note: previous definition of 'vfscanf' was here
make[3]: *** [stdio-read.lo] Error 1
make[3]: Leaving directory `/home/berrange/src/virt/libvirt/build/gnulib/lib'

While on x86_64-w64-mingw32 only there was:

In file included from ../../../gnulib/lib/regex.c:69:0:
../../../gnulib/lib/regcomp.c: In function 'parse_dup_op':
../../../gnulib/lib/regcomp.c:2624:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
../../../gnulib/lib/regcomp.c: In function 'mark_opt_subexp':
../../../gnulib/lib/regcomp.c:3859:19: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit db835b7b3ad5f6ace5a84bc8f5b1a713548d596a)

13 years agobuild: update to latest gnulib
Eric Blake [Mon, 28 May 2012 12:48:26 +0000 (06:48 -0600)] 
build: update to latest gnulib

Gnulib finally relaxed the isatty license, needed as first mentioned here:
https://www.redhat.com/archives/libvir-list/2012-February/msg01022.html

Other improvements include better syntax-check rules (we can delete one
of ours now that it is a duplicate) and better compiler warning usage.

* .gnulib: Update to latest, for isatty.
* cfg.mk (sc_prohibit_strncpy): Drop a now-redundant rule.
* bootstrap.conf (gnulib_modules): Add isatty.
* bootstrap: Resync from gnulib.
(cherry picked from commit e925ea3156f2cc8d57a29eeeb839202adc989391)

13 years agoStable release 0.9.11.4 v0.9.11.4
Cole Robinson [Fri, 15 Jun 2012 16:59:49 +0000 (12:59 -0400)] 
Stable release 0.9.11.4

13 years agobuild: fix build of fresh checkout
Eric Blake [Wed, 6 Jun 2012 15:45:04 +0000 (09:45 -0600)] 
build: fix build of fresh checkout

Commit 7bff56a worked in an incremental build, but fails for a
fresh clone; apparently, if make sees both an actual file
spelling and an inference rule, only the exact spelling is used.

  CCLD   libvirt_driver_test.la
  CC     libvirt_driver_remote_la-remote_driver.lo
remote/remote_driver.c:4707:34: fatal error: remote_client_bodies.h: No such file or directory
compilation terminated.

BUILT_SOURCES to the rescue, instead of trying to mess with .lo
dependencies directly.

* src/Makefile.am (REMOTE_DRIVER_PREREQS, %remote_driver.lo): Drop...
(BUILT_SOURCES): ...and add here instead.
(cherry picked from commit ca02b101d74510df424c5ea659d7b7d481874f98)

Conflicts:

src/Makefile.am

13 years agobuild: fix 'make distcheck' issues
Eric Blake [Wed, 30 May 2012 17:30:18 +0000 (11:30 -0600)] 
build: fix 'make distcheck' issues

We had a distributed file (remote_protocol.h, which in turn was
a prereq to remote_driver.c) depending on a generated file
(libvirt_probes.h), which is a no-no for a VPATH build from a
read-only source tree (no wonder 'make distcheck' tests precisely
that situation):

     File `libvirt_driver_remote.la' does not exist.
       File `libvirt_driver_remote_la-remote_driver.lo' does not exist.
             Prerequisite `libvirt_probes.h' is newer than target `../../src/remote/remote_protocol.h'.
            Must remake target `../../src/remote/remote_protocol.h'.
Invoking recipe from Makefile:7464 to update target `../../src/remote/remote_protocol.h'.
make[3]: Entering directory `/home/remote/eblake/libvirt-tmp2/build/libvirt-0.9.12/_build/src'
  GEN    ../../src/remote/remote_protocol.h
cannot create ../../src/remote/remote_protocol.h: Permission denied at ../../src/rpc/genprotocol.pl line 31.
make[3]: *** [../../src/remote/remote_protocol.h] Error 13

Rather than making distributed .c files depend on generated files, we
really want to ensure that compilation into .lo files is not attempted
until the generated files are present, done by this patch.  Since there
were two different sets of conditionally generated files that both
feed the .lo file, I had to introduce a new variable REMOTE_DRIVER_PREREQS
to keep automake happy.

After that fix, the next issue was that make treats './foo' and 'foo'
differently in determining whether an implicit %foo rule is applicable,
with the result that locking/qemu-sanlock.conf wasn't properly being
built at the right times.  Also, the output for using the .aug test
files was a bit verbose.

After fixing the src directory, the next error is related to the docs
directory, where the tarball is missing a stamp file and thus tries to
regenerate files that are already present:

  GEN    ../../docs/apibuild.py.stamp
Traceback (most recent call last):
  File "../../docs/apibuild.py", line 2511, in <module>
    rebuild("libvirt")
  File "../../docs/apibuild.py", line 2495, in rebuild
    builder.serialize()
  File "../../docs/apibuild.py", line 2424, in serialize
    output = open(filename, "w")
IOError: [Errno 13] Permission denied: '../../docs/libvirt-api.xml'
make[5]: *** [../../docs/apibuild.py.stamp] Error 1

and fixing that exposed another case of a distributed file (generated
html) depending on a built file (libvirt.h), but only when doing an
in-tree build, because of a file glob.

* src/Makefile.am ($(srcdir)/remote/remote_driver.c): Change...
(libvirt_driver_remote_la-remote_driver.lo): ...to the real
dependency.
($(builddir)/locking/%-sanlock.conf): Drop $(builddir), so that
rule gets run in time for test_libvirt_sanlock.aug.
(test_libvir*.aug): Cater to silent build.
(conf_DATA): Don't ship qemu-sanlock.conf in the tarball, since it
is trivial to regenerate.
* docs/Makefile.am (EXTRA_DIST): Ship our stamp file.
($(APIBUILD_STAMP)): Don't depend on generated file.
(cherry picked from commit 7bff56a0d1514cb955eb14adc14281626e80e96c)

Conflicts:

src/Makefile.am

13 years agobuild: fix 'make dist' on virgin checkout
Eric Blake [Wed, 13 Jun 2012 03:49:22 +0000 (21:49 -0600)] 
build: fix 'make dist' on virgin checkout

'make dist' was depending on *protocol-structs files, which are
stored in git but in turn depended on generated files.  We still
want to ship the protocol-structs files, but by renaming the
tests to something not matching a file name, we separate 'make
check' (which depends on the generated file) from 'make dist'
(which only depends on the git files).  After all, the tarball
should never depend on a generated file not stored in git.

I found one more case of a git file depending on a generated
file, in a bogus virkeycode.c listing; but at least this one
had no associated rules so it never broke 'make dist'.

Reported by Wen Congyang.  Latent bug has been present since
commit 62dee6f, but only recently exposed by commit 7bff56a.

* src/Makefile.am ($(srcdir)/util/virkeycode.c): Drop useless
dependency.
(BUILT_SOURCES): ...and build virkeymaps.h sooner.
(PROTOCOL_STRUCTS): Rather than depend on the struct file...
(check-local): ...convert things into a phony target of...
(check-protocol): ...a new check.
($(srcdir)/remote_protocol-struct): Rename to isolate the distributed
file from the conditional test.
(PDWTAGS): Deal with rename.  Swap to compare 'expected actual'.
(cherry picked from commit 9b5970c6c4ef267f2ba7d43d8b4d4996659c9fe1)

13 years agoImprove error message diagnosing incorrect XML CPU mode
Daniel P. Berrange [Wed, 13 Jun 2012 17:21:29 +0000 (18:21 +0100)] 
Improve error message diagnosing incorrect XML CPU mode

Tell the user what CPU mode value is wrong
(cherry picked from commit 92cbe7ae39d343b474c6aa42ffd5d76cd458fef6)

13 years agoqemu: Enable disconnecting SPICE clients without changing password
Peter Krempa [Thu, 14 Jun 2012 12:48:42 +0000 (14:48 +0200)] 
qemu: Enable disconnecting SPICE clients without changing password

Libvirt updates the configuration of SPICE server only when something
changes. This is unfortunate when the user wants to disconnect a
existing spice session when the connected attribute is already
"disconnect".

This patch modifies the conditions for calling the password updater to
be called when nothing changes, but the connected attribute is already
"disconnect".
(cherry picked from commit e0f0131d33e283f1b76c05eb7bef4bbbb3f2fd72)

13 years agoqemu: Fix off-by-one error while unescaping monitor strings
Peter Krempa [Thu, 14 Jun 2012 08:29:36 +0000 (10:29 +0200)] 
qemu: Fix off-by-one error while unescaping monitor strings

While unescaping the commands the commands passed through to the monitor
function qemuMonitorUnescapeArg() initialized lenght of the input string
to strlen()+1 which is fine for alloc but not for iteration of the
string.

This patch fixes the off-by-one error and drops the pointless check for
a single trailing slash that is automaticaly handled by the default
branch of switch.
(cherry picked from commit 0f4660c8787cc41fe67f869984c0ae11d680037e)

13 years agovirsh: Don't generate invalid XML in attach-disk command
Peter Krempa [Wed, 13 Jun 2012 14:55:51 +0000 (16:55 +0200)] 
virsh: Don't generate invalid XML in attach-disk command

The attach-disk command used with parameter --cache created an invalid
XML snippet as the beginning of the <driver> element was not printed
when used solely with --cache and no other attribute to driver.
(cherry picked from commit 5b4740265cf1e9cd00165e54e1f5e81f9008bc63)

13 years agoFix typo in RPM specfile
Daniel P. Berrange [Tue, 12 Jun 2012 14:54:56 +0000 (15:54 +0100)] 
Fix typo in RPM specfile

libvirt.spec.in: s/{?rhel}/%{?rhel}/
(cherry picked from commit 48939a4aba9489b26866fec5ad18c40f00d5402a)

13 years agopython: fix snapshot listing bugs
Eric Blake [Mon, 11 Jun 2012 20:49:03 +0000 (14:49 -0600)] 
python: fix snapshot listing bugs

Python exceptions are different than libvirt errors, and we had
some corner case bugs on OOM situations.

* python/libvirt-override.c (libvirt_virDomainSnapshotListNames)
(libvirt_virDomainSnapshotListChildrenNames): Use correct error
returns, avoid segv on OOM, and avoid memory leaks on error.
(cherry picked from commit a0de5d78ef593958bcb83e563fe54137fe43c4ff)

13 years agopython: use simpler methods
Eric Blake [Mon, 11 Jun 2012 20:32:47 +0000 (14:32 -0600)] 
python: use simpler methods

* python/libvirt-override.c (libvirt_virDomainGetVcpus)
(libvirt_virDomainGetVcpuPinInfo): Use Py_XDECREF instead of
open-coding it.
(cherry picked from commit 8566618f65d983b31efb8efec13c25c6410b1718)

13 years agoqemu: Don't overwrite security labels
Michal Privoznik [Mon, 11 Jun 2012 13:57:19 +0000 (15:57 +0200)] 
qemu: Don't overwrite security labels

Currently, if qemuProcessStart fail at some point, e.g. because
domain being started wants a PCI/USB device already assigned to
a different domain, we jump to cleanup label where qemuProcessStop
is performed. This unconditionally calls virSecurityManagerRestoreAllLabel
which is wrong because the other domain is still using those devices.

However, once we successfully label all devices/paths in
qemuProcessStart() from that point on, we have to perform a rollback
on failure - that is - we have to virSecurityManagerRestoreAllLabel.
(cherry picked from commit 86032b2276ace5a7977aad2bbae73b4c33e31914)

Conflicts:

src/qemu/qemu_process.c

13 years agoqemuProcessStop: Switch to flags
Michal Privoznik [Mon, 11 Jun 2012 13:20:44 +0000 (15:20 +0200)] 
qemuProcessStop: Switch to flags

Currently, we are passing only one boolean (migrated) so there is
no real profit in this. But it creates starting position for
next patch.
(cherry picked from commit 69dd77149cacc6b12740bd70b729b6cb7506f4e0)

Conflicts:

src/qemu/qemu_process.c

13 years agodocs: minor fixes to domain interface documentation
Laine Stump [Mon, 11 Jun 2012 21:16:17 +0000 (17:16 -0400)] 
docs: minor fixes to domain interface documentation

A few examples for <interface> had a type='direct' interface with no
sub-elements. This is not allowed - a type='direct' interface must
have at least a source element. (Most likely the example was copied
from the type='user' or type='ethernet' examples - they *do* allow an
instance with no sub-elements).

There was also one place that mistakenly used %lt; ... %gt; instead of
&lt; ... &gt; (for some reason, I make that typo all the time).
(cherry picked from commit 549741ee44c9d3dcaf0231d2f09838f46ac1d74d)

13 years agodocs: link to FLOSS Weekly podcast, virt blogs
Eric Blake [Thu, 7 Jun 2012 19:23:49 +0000 (13:23 -0600)] 
docs: link to FLOSS Weekly podcast, virt blogs

Eric Blake and Guido Günther were guests during this week's
FLOSS Weekly podcast, giving insights into libvirt as a Free
Software project.  Also, there are several useful blogs on
virt-related topics.

* docs/relatedlinks.html.in (Blogs and Podcasts): New section.
(cherry picked from commit a0ac7450d910d75582643123ad66f651afd5aa58)

13 years agoTwo RPM conditional fixes for RHEL-7
Daniel P. Berrange [Mon, 11 Jun 2012 16:57:38 +0000 (17:57 +0100)] 
Two RPM conditional fixes for RHEL-7

Ensure systemd is used in RHEL-7 and cgconfig is not used in
RHEL-7
(cherry picked from commit 1cdbe4d22a5aa56126d197cc87d581eda89a42cf)

13 years agosnapshot: avoid virsh crash with older servers
Eric Blake [Fri, 8 Jun 2012 03:46:47 +0000 (21:46 -0600)] 
snapshot: avoid virsh crash with older servers

Commits 5108230116d7b39, and 521cc447 introduced support for
'virsh snapshot-list --from' when talking to a server older than
0.9.5, but broke support for plain 'virsh snapshot-list' for the
same old server in the process.  Because the code is not properly
gated, we end up with a SIGSEGV during a strcmp with a NULL argument.

* tools/virsh.c (cmdSnapshotList): Don't waste time on fallbacks
when --from is not present.
(cherry picked from commit d9f606659829e666803d95d05aee9ca1ecced955)

13 years agoUpdate AUTHORS
Osier Yang [Mon, 11 Jun 2012 14:08:09 +0000 (22:08 +0800)] 
Update AUTHORS

Commit a80bb970 forgot to update authors.
(cherry picked from commit d41d252694c0a3f896a3442e19869fc8ec00eeb2)

13 years agoLXC: fix memory leak in lxcContainerMountFSBlockAuto
Gao feng [Mon, 11 Jun 2012 05:52:37 +0000 (13:52 +0800)] 
LXC: fix memory leak in lxcContainerMountFSBlockAuto

we forgot to free fslist,just add VIR_FREE(fslist).

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
(cherry picked from commit e49d792f29caaea6a7bf4767825f341eefd2e145)

13 years agoLXC: fix incorrect parameter of mount in lxcContainerMountFSBind
Gao feng [Mon, 11 Jun 2012 03:37:36 +0000 (11:37 +0800)] 
LXC: fix incorrect parameter of mount in lxcContainerMountFSBind

when do remount,the source and target should be the same
values specified in the initial mount() call.

So change fs->dst to src.

Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
(cherry picked from commit 0cb787bd3c337460706f8ea8c81f6bbfa0268b56)

13 years agoOnly check for cluster fs if we're using a filesystem
Guido Günther [Wed, 6 Jun 2012 18:36:31 +0000 (20:36 +0200)] 
Only check for cluster fs if we're using a filesystem

otherwise migration fails for e.g. network filesystems like sheepdog
with:

   error: Invalid relative path 'virt-name': Invalid argument

while we should fail with:

    Migration may lead to data corruption if disks use cache != none

References:

    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=676328
    https://www.redhat.com/archives/libvirt-users/2012-May/msg00088.html
(cherry picked from commit 3ac8fb54f4e6365e6252eae9995fb8333972ae94)

13 years agoFix missing ) in 2 strings
Cole Robinson [Thu, 7 Jun 2012 21:37:13 +0000 (17:37 -0400)] 
Fix missing ) in 2 strings

https://bugzilla.redhat.com/show_bug.cgi?id=801656
(cherry picked from commit 9ec6f818deae2205ebb9790d852ebd673ba667fc)

13 years agoAssign correct address type to spapr-vlan and spapr-vty.
Li Zhang [Tue, 29 May 2012 08:35:17 +0000 (16:35 +0800)] 
Assign correct address type to spapr-vlan and spapr-vty.

For pseries guest, spapr-vlan and spapr-vty is based
on spapr-vio address. According to model of network
device, the address type should be assigned automatically.
For serial device, serial pty device is recognized as
spapr-vty device, which is also on spapr-vio.

So this patch is to correct the address type of
spapr-vlan and spapr-vty, and build correct
command line of spapr-vty.

Signed-off-by: Li Zhang <zhlcindy@linux.vnet.ibm.com>
Reviewed-by: Michael Ellerman<michaele@au1.ibm.com>
(cherry picked from commit 04a319ba4e5f82e56af47e18dc055e5735ddd74d)

13 years agomaint: make it easier to copy FORTIFY_SOURCE snippet
Eric Blake [Thu, 7 Jun 2012 16:48:05 +0000 (10:48 -0600)] 
maint: make it easier to copy FORTIFY_SOURCE snippet

While libvirt intentionally avoids -Wundef (after all, C99
guarantees sane semantics of treating undefined macros as 0),
the glibc insanity of #warning on _FORTIFY_SOURCE coupled with
what some people feel is the black magic of autoconf means
that other projects are likely to copy our snippet verbatim.
We can be nicer to other projects by making it easier to
integrate into projects that use -Wundef.

Suggested by Christophe Fergeau.

* m4/virt-compile-warnings.m4 (LIBVIRT_COMPILE_WARNINGS): Be nice
to other projects using -Wundef.
(cherry picked from commit 1c2edf0fbd4d20b3955cd5a3d8986413e94fba51)

13 years agocommand: avoid potential deadlock on handshake
Eric Blake [Sat, 26 May 2012 02:17:01 +0000 (20:17 -0600)] 
command: avoid potential deadlock on handshake

There is a theoretical problem of an extreme bug where we can get
into deadlock due to command handshaking.  Thanks to a pair of pipes,
we have a situation where the parent thinks the child reported an
error and is waiting for a message from the child to explain the
error; but at the same time the child thinks it reported success
and is waiting for the parent to acknowledge the success; so both
processes are now blocked.

Thankfully, I don't think this deadlock is possible without at
least one other bug in the code, but I did see exactly that sort
of situation prior to commit da831af - I saw a backtrace where a
double close bug in the parent caused the parent to read from the
wrong fd and assume the child failed, even though the child really
sent success.

This potential deadlock is not quite like commit 858c247 (a deadlock
due to multiple readers on one pipe preventing a write from completing),
although the solution is similar - always close unused pipe fds before
blocking, rather than after.

* src/util/command.c (virCommandHandshakeWait): Close unused fds
sooner.
(cherry picked from commit 5e8ab3915b5f979f049547565805174ec7cd79b8)

13 years agospec: Build against systemd for udev
Cole Robinson [Wed, 6 Jun 2012 18:03:47 +0000 (14:03 -0400)] 
spec: Build against systemd for udev

They have now merged. Fedora details here:

https://lists.fedoraproject.org/pipermail/devel/2012-June/168227.html
(cherry picked from commit dd7bc51bc45051b708c1b47b80d1e8402fcbcc5a)

Conflicts:

libvirt.spec.in

13 years agovirsh: Back out if the argument for vol-create-as is malformed
Osier Yang [Mon, 4 Jun 2012 09:08:34 +0000 (17:08 +0800)] 
virsh: Back out if the argument for vol-create-as is malformed
(cherry picked from commit ee58b581c4b275f06904253285b7ad562dc09745)

Conflicts:

tools/virsh.c

13 years agovirsh: Accept UUID as an argument for net-info and net-start
Osier Yang [Mon, 4 Jun 2012 08:37:55 +0000 (16:37 +0800)] 
virsh: Accept UUID as an argument for net-info and net-start
(cherry picked from commit 68fcfdb8bd33ef323c6c4c5b9a92b1a44829eb6a)

13 years agovirsh: Accept UUID as an argument for storage commands
Osier Yang [Mon, 4 Jun 2012 08:35:34 +0000 (16:35 +0800)] 
virsh: Accept UUID as an argument for storage commands

Affected commands are: pool-start, vol-create-from.
(cherry picked from commit 05f8917f965101d1d2142ff4529aefcebe22aeb2)

13 years agoFix for parallel port passthrough for QEMU
Beat Jörg [Wed, 23 May 2012 05:50:02 +0000 (07:50 +0200)] 
Fix for parallel port passthrough for QEMU

I came across a bug that the command line generated for passthrough
of the host parallel port /dev/parport0 by libvirt for QEMU is incorrect.

It currently produces:
-chardev tty,id=charparallel0,path=/dev/parport0
-device isa-parallel,chardev=charparallel0,id=parallel0

The first parameter is "tty". It sould be "parport".

If I launch qemu with -chardev parport,... it works as expected.

I have already filled a bug report (
https://bugzilla.redhat.com/show_bug.cgi?id=823879 ), the topic was
already on the list some months ago:

https://www.redhat.com/archives/libvirt-users/2011-September/msg00095.html

Signed-off-by: Eric Blake <eblake@redhat.com>
(cherry picked from commit 7508338ff3b75b39ee9654e3d83bc58c858dc92a)