73 min agoqemu: bulk stats: add block allocation information master
Francesco Romani [Mon, 15 Sep 2014 15:42:52 +0000]
qemu: bulk stats: add block allocation information

Management software wants to be able to allocate disk space on demand.
To support this they need keep track of the space occupation of the
block device.  This information is reported by qemu as part of block

This patch extend the block information in the bulk stats with the
allocation information.

To keep the same behaviour a helper is extracted from
qemuMonitorJSONGetBlockExtent in order to get per-device allocation

Signed-off-by: Francesco Romani <>
Signed-off-by: Peter Krempa <>

73 min agoqemu: monitor: Add helper function to fill physical/virtual image size
Peter Krempa [Thu, 25 Sep 2014 10:03:26 +0000]
qemu: monitor: Add helper function to fill physical/virtual image size

While our code gathers block stats via "query-blockstats" some
information need to be gathered via "query-block". Add a helper function
that will update the blockstats structure if requested.

73 min agoBump version to 1.2.10 for new dev cycle
Peter Krempa [Wed, 1 Oct 2014 08:47:14 +0000]
Bump version to 1.2.10 for new dev cycle

86 min agoRelease of libvirt-1.2.9 v1.2.9
Daniel Veillard [Wed, 1 Oct 2014 08:45:32 +0000]
Release of libvirt-1.2.9

* docs/ update for release
* po/*.po*: updated localizations and regenerated

110 min agodomain_conf: fix domain deadlock
Pavel Hrdina [Mon, 22 Sep 2014 16:19:07 +0000]
domain_conf: fix domain deadlock

If you use public api virConnectListAllDomains() with second parameter
set to NULL to get only the number of domains you will lock out all
other operations with domains.

Introduced by commit 2c680804.

Signed-off-by: Pavel Hrdina <>

22 hours agoAllow setting migration max downtime any time
Chris St. Pierre [Mon, 29 Sep 2014 13:45:28 +0000]
Allow setting migration max downtime any time

This removes the artificial and unnecessary restriction that
virDomainSetMaxDowntime() only be called while a migration is in

Signed-off-by: Jiri Denemark <>

24 hours agoqemu: monitor: Avoid shadowing variable "devname" on FreeBSD
Peter Krempa [Tue, 30 Sep 2014 09:41:43 +0000]
qemu: monitor: Avoid shadowing variable "devname" on FreeBSD

FreeBSD's compiler complains that we shadow the symbol. Sigh.


25 hours agoqemu: monitor: return block stats data as a hash to avoid disk mixup
Peter Krempa [Thu, 25 Sep 2014 08:12:15 +0000]
qemu: monitor: return block stats data as a hash to avoid disk mixup

The current block stats code matched up the disk name with the actual
stats by the order in the data returned from qemu. This unfortunately
isn't right as qemu may return the disks in any order. Fix this by
returning a hash of stats and index them by the disk alias.

25 hours agoAlso filter out non-migratable features out of host-passthrough
Ján Tomko [Mon, 29 Sep 2014 10:44:43 +0000]
Also filter out non-migratable features out of host-passthrough

Commit de0aeaf filtered them out from the host-model features,
to allow host-model to be migratable by default.

Even though they are not passed to QEMU for host-passthrough,
(and not enabled by default) filter them out too
so the user does not think the domain has them.

25 hours agoDon't verify CPU features with host-passthrough
Ján Tomko [Mon, 29 Sep 2014 13:58:38 +0000]
Don't verify CPU features with host-passthrough

Commit fba6bc4 introduced the non-migratable invtsc feature,
breaking save/migration with host-model and host-passthrough.

On hosts with this feature present it was automatically included
in the CPU definition, regardless of QEMU support.

Commit de0aeaf stopped including it by default for host-model,
but failed to fix host-passthrough.

This commit ignores checking of CPU features with host-passthrough,
since we don't pass them to QEMU (only -cpu host is passed),
allowing domains using host-passthrough that were saved with
the broken version of libvirtd to be restored.

46 hours agoFix crash cpu_shares change event crash on domain startup v1.2.9-rc2
Ján Tomko [Mon, 29 Sep 2014 11:47:44 +0000]
Fix crash cpu_shares change event crash on domain startup

Introduced by commit 0dce260.

qemuDomainEventQueue was called with qemuDomainObjPrivatePtr instead
of virQEMUDriverPtr.

2 days agostorage: Fix logical pool fmt type
Erik Skultety [Thu, 25 Sep 2014 14:26:18 +0000]
storage: Fix logical pool fmt type

According to our documentation logical pool supports formats 'auto' and
'lvm2'. However, in storage_conf.c we previously defined storage pool
formats: unknown, lvm2. Due to backward compatibility reasons
we must continue refer to pool format type 'unknown' instead of 'auto'.


2 days agovirsh: Fix help message of allocpages
Tomoki Sekiyama [Fri, 26 Sep 2014 22:57:22 +0000]
virsh: Fix help message of allocpages

Fix info in the command definition of allocpages, which is currently
pointing info for 'capabilities'.

Signed-off-by: Tomoki Sekiyama <>

4 days agoqemu: remove capabilities.monitor.sock when done
Guido Günther [Thu, 25 Sep 2014 08:30:58 +0000]
qemu: remove capabilities.monitor.sock when done

Prompted by

4 days agoconf: report error in virCPUDefParseXML
Jincheng Miao [Thu, 25 Sep 2014 11:28:33 +0000]
conf: report error in virCPUDefParseXML

When detected invalid 'memAccess', virCPUDefParseXML should report error.


Signed-off-by: Jincheng Miao <>

4 days agoCheck for NULL in qemu monitor event filter
Ján Tomko [Mon, 22 Sep 2014 11:54:52 +0000]
Check for NULL in qemu monitor event filter

When virConnectDomainQemuMonitorEventRegister is called with the
ignore the flag instead of crashing.

4 days agoFix typo s/EMULATORIN/EMULATORPIN/
Daniel P. Berrange [Fri, 26 Sep 2014 10:20:56 +0000]


Signed-off-by: Daniel P. Berrange <>

5 days agoRename tunable event constants
Daniel P. Berrange [Thu, 25 Sep 2014 16:48:01 +0000]
Rename tunable event constants

For the new VIR_DOMAIN_EVENT_ID_TUNABLE event we have a bunch of
constants added


This naming convention is bad for two reasons

  - There is no common prefix unique for the events to both
    relate them, and distinguish them from other event

  - The values associated with the constants were chosen
    to match the names used with virConnectGetAllDomainStats
    so having EVENT in the constant name is not applicable in
    that respect

This patch proposes renaming the constants to


ie, given them a common VIR_DOMAIN_TUNABLE prefix.

Signed-off-by: Daniel P. Berrange <>

5 days agolxc_monitor_protocol: Redefine xdr_uint64_t if needed
Michal Privoznik [Tue, 23 Sep 2014 08:44:42 +0000]
lxc_monitor_protocol: Redefine xdr_uint64_t if needed

On some systems (using libtirpc instead of glibc's
implementation), xdr_uint64_t exists rather under different name:
xdr_u_int64_t. This makes compilation fail then:

libvirt_lxc-lxc_monitor_protocol.o: In function `xdr_virLXCMonitorInitEventMsg':
/usr/local/src/libvirt/libvirt-1.1.1/src/./lxc/lxc_monitor_protocol.c:31: undefined reference to `xdr_uint64_t'

Therefore we rather mirror the d707c866 commit and redefine
xdr_uint64_t if needed.

Signed-off-by: Michal Privoznik <>

5 days agoqemuPrepareNVRAM: Save domain after NVRAM path generation
Michal Privoznik [Thu, 25 Sep 2014 12:39:19 +0000]
qemuPrepareNVRAM: Save domain after NVRAM path generation

On a domain startup, the variable store path is generated if needed.
The path is intended to be generated only once. However, the updated
domain definition is not saved into config dir rather than state XML
only. So later, whenever the domain is destroyed and the daemon is
restarted, the generated path is forgotten and the file may be left
behind on virDomainUndefine() call.

Signed-off-by: Michal Privoznik <>

5 days agoremoteNodeGetFreePages: Don't alloc args.pages.pages_val
Michal Privoznik [Thu, 25 Sep 2014 09:18:50 +0000]
remoteNodeGetFreePages: Don't alloc args.pages.pages_val

There's no one to free() it anyway. Instead, we can just pass the
provided array pointer directly.

==20039== 48 bytes in 4 blocks are definitely lost in loss record 658 of 787
==20039==    at 0x4C2A700: calloc (in /usr/lib64/valgrind/
==20039==    by 0x4EA661F: virAllocN (viralloc.c:191)
==20039==    by 0x50386EF: remoteNodeGetFreePages (remote_driver.c:7625)
==20039==    by 0x5003504: virNodeGetFreePages (libvirt.c:21379)
==20039==    by 0x154625: cmdFreepages (virsh-host.c:374)
==20039==    by 0x12F718: vshCommandRun (virsh.c:1935)
==20039==    by 0x1339FB: main (virsh.c:3747)

Signed-off-by: Michal Privoznik <>

5 days agonodeinfo: fix version of nodeAllocPages
Tomoki Sekiyama [Thu, 25 Sep 2014 20:02:21 +0000]
nodeinfo: fix version of nodeAllocPages

Fix comments about the version in which '.nodeAllocPages' are added.

Signed-off-by: Tomoki Sekiyama <>

5 days agoqemu: Always re-detect backing chain
Peter Krempa [Thu, 25 Sep 2014 15:30:28 +0000]
qemu: Always re-detect backing chain

Since 363e9a68 we track backing chain metadata when creating snapshots
the right way even for the inactive configuration. As we did not yet
update other code paths that modify the backing chain (blockpull) the
newDef backing chain gets out of sync.

After stopping of a VM the new definition gets copied to the next start
one. The new VM then has incorrect backing chain info. This patch
switches the backing chain detector to always purge the existing backing
chain and forces re-detection to avoid this issue until we'll have full
backing chain tracking support.


5 days agoevent_example: cleanup example code for tunable event
Pavel Hrdina [Thu, 25 Sep 2014 13:03:46 +0000]
event_example: cleanup example code for tunable event

Signed-off-by: Pavel Hrdina <>

5 days agovirNodeAllocPages: Disallow RO connection
Michal Privoznik [Thu, 25 Sep 2014 15:12:46 +0000]
virNodeAllocPages: Disallow RO connection

Due to a missing check the API can be successfully called even if
the connection is ReadOnly. Fortunately, the API hasn't been
released yet, so there's no need for a CVE.

Signed-off-by: Michal Privoznik <>

5 days agoparallels: login to parallels SDK
Dmitry Guryanov [Thu, 11 Sep 2014 16:24:03 +0000]
parallels: login to parallels SDK

Add files parallels_sdk.c and parallels_sdk.h for code
which works with SDK, so libvirt's code will not mix with
dealing with parallels SDK.

To use Parallels SDK you must first call PrlApi_InitEx function,
and then you will be able to connect to a server with
PrlSrv_LoginLocalEx function. When you've done you must call
PrlApi_Deinit. So let's call PrlApi_InitEx on first .connectOpen,
count number of connections and deinitialize, when this counter
becomes zero.

Signed-off-by: Dmitry Guryanov <>

5 days agoparallels: build with parallels SDK
Dmitry Guryanov [Thu, 11 Sep 2014 16:24:02 +0000]
parallels: build with parallels SDK

Executing prlctl command is not an optimal way to interact with
Parallels Cloud Server (PCS), it's better to use parallels SDK,
which is a remote API to paralles dispatcher service.

We prepared opensource version of this SDK and published it on
github, it's distributed under LGPL license. Here is a git repo:

To build with parallels SDK user should get compiler and linker
options from pkg-config 'parallels-sdk' file. So fix checks in
configure script and build with parallels SDK, if that pkg-config
file exists and add gcc options to makefile.

Signed-off-by: Dmitry Guryanov <>

5 days agovirnetserver: Raise log level of max_clients related messages
Michal Privoznik [Thu, 25 Sep 2014 09:50:04 +0000]
virnetserver: Raise log level of max_clients related messages

We have these configuration knobs, like max_clients and
max_anonymous_clients. They limit the number of clients
connected.  Whenever the limit is reached, the daemon stops
accepting new ones and resumes if one of the connected clients
disconnects. If that's the case, a debug message is printed into
the logs. And when the daemon starts over to accept new clients
too. However, the problem is the messages have debug priority.
This may be unfortunate, because if the daemon stops accepting
new clients all of a sudden, and users don't have debug logs
enabled they have no idea what's going on. Raise the messages
level to INFO at least.

Signed-off-by: Michal Privoznik <>

5 days agopolkit_driver: fix possible segfault
Pavel Hrdina [Thu, 25 Sep 2014 09:13:29 +0000]
polkit_driver: fix possible segfault

The changes in commit c7542573 introduced possible segfault. Looking
deeper into the code and the original code before the patch series were
applied I think that we should report error for each function failure
and also we shouldn't call some of the function twice.

Found by coverity.

Signed-off-by: Pavel Hrdina <>

6 days agoblkdeviotune: trigger tunable event for blkdeviotune updates
Pavel Hrdina [Thu, 25 Sep 2014 09:30:57 +0000]
blkdeviotune: trigger tunable event for blkdeviotune updates

Use the universal tunable event to report changes to user. All
blkdeviotune values are prefixed with "blkdeviotune".

Signed-off-by: Pavel Hrdina <>

6 days agoblkdeviotune: fix bug with saving values into live XML
Pavel Hrdina [Thu, 25 Sep 2014 09:28:25 +0000]
blkdeviotune: fix bug with saving values into live XML

When you updated some blkdeviotune values for running domain the values
were stored only internally, but not saved into the live XML so they
won't survive restarting the libvirtd.

Signed-off-by: Pavel Hrdina <>

6 days agoFix build without polkit v1.2.9-rc1
Pavel Hrdina [Thu, 25 Sep 2014 08:57:24 +0000]
Fix build without polkit

The commit 1b854c76 introduced a new function 'virPolkitCheckAuth' and
in the #else section when you don't have polkit all attributes should be

Signed-off-by: Pavel Hrdina <>

6 days agotunable_event: extend debug message and tweak limit for remote message
Pavel Hrdina [Wed, 24 Sep 2014 07:43:31 +0000]
tunable_event: extend debug message and tweak limit for remote message

It would be nice to also print a params pointer and number of params in
the debug message and the previous limit for number of params in the rpc
message was too large. The 2048 params will be enough for future events.

Signed-off-by: Pavel Hrdina <>

6 days agovirsh: Expose virNodeAllocPages
Michal Privoznik [Wed, 17 Sep 2014 13:53:42 +0000]
virsh: Expose virNodeAllocPages

The new virsh command is named 'allocpages'.

Signed-off-by: Michal Privoznik <>

6 days agonodeinfo: Implement nodeAllocPages
Michal Privoznik [Thu, 18 Sep 2014 07:47:07 +0000]
nodeinfo: Implement nodeAllocPages

And add stubs to other drivers like: lxc, qemu, uml and vbox.

Signed-off-by: Michal Privoznik <>

6 days agovirnuma: Introduce virNumaSetPagePoolSize
Michal Privoznik [Thu, 18 Sep 2014 07:24:16 +0000]
virnuma: Introduce virNumaSetPagePoolSize

This internal API can be used to allocate or free some pages in
the huge pages pool.

Signed-off-by: Michal Privoznik <>

6 days agoIntroduce virNodeAllocPages
Michal Privoznik [Tue, 16 Sep 2014 16:17:22 +0000]
Introduce virNodeAllocPages

A long time ago in a galaxy far, far away it has been decided
that libvirt will manage not only domains but host as well. And
with my latest work on qemu driver supporting huge pages, we miss
the cherry on top: an API to allocate huge pages on the run.
Currently users are forced to log into the host and adjust the
huge pages pool themselves.  However, with this API the problem
is gone - they can both size up and size down the pool.

Signed-off-by: Michal Privoznik <>

6 days agonodeGetFreePages: Push forgotten change
Michal Privoznik [Wed, 24 Sep 2014 13:10:18 +0000]
nodeGetFreePages: Push forgotten change

In the previous patch I've changed the for loop bounds but forgot
to 'git add' changes that adapt the rest of the code.

Signed-off-by: Michal Privoznik <>

6 days agosecurity: Fix labelling host devices (bz 1145968)
Cole Robinson [Wed, 24 Sep 2014 15:47:46 +0000]
security: Fix labelling host devices (bz 1145968)

The check for ISCSI devices was missing a check of subsys type, which
meant we could skip labelling of other host devices as well. This fixes
USB hotplug on F21

6 days agoFix MinGW build
Pavel Hrdina [Wed, 24 Sep 2014 09:07:08 +0000]
Fix MinGW build

When building on mingw the format string for long long/unsigned long
long have to be I64d/I64u instead of lld/llu.

Signed-off-by: Pavel Hrdina <>

6 days agoConvert polkit code to use DBus API instead of CLI helper
Daniel P. Berrange [Wed, 10 Sep 2014 13:52:48 +0000]
Convert polkit code to use DBus API instead of CLI helper

Spawning the pkcheck program every time a permission check is
required is hugely expensive on CPU. The pkcheck program is just
a dumb wrapper for the DBus API, so rewrite the code to use the
DBus API directly. This also simplifies error handling a bit.

Signed-off-by: Daniel P. Berrange <>

6 days agoSupport passing dict by reference for dbus messages
Daniel P. Berrange [Tue, 9 Sep 2014 14:19:58 +0000]
Support passing dict by reference for dbus messages

Currently DBus dict values must be passed inline

                        "key1", "val1",
                        "key2", "val2",
                        "key3", "val3");
                        &key1, &val1,
                        &key2, &val2,
                        &key3, &val3);

This allows them to be passed by reference

   const char **dictin = {
      "key1", "val1",
      "key2", "val2",
      "key3", "val3"
   char **dictout;
   size_t ndictout;

                        ARRAY_CARDINALITY(dict) / 2,

Signed-off-by: Daniel P. Berrange <>

6 days agoConvert remote daemon & acl code to use polkit API
Daniel P. Berrange [Thu, 22 Aug 2013 16:09:03 +0000]
Convert remote daemon & acl code to use polkit API

Convert the remote daemon auth check and the access control
code to use the common polkit API for checking auth.

Signed-off-by: Daniel P. Berrange <>

6 days agoConvert callers to use typesafe APIs for getting identity attrs
Daniel P. Berrange [Thu, 22 Aug 2013 16:02:40 +0000]
Convert callers to use typesafe APIs for getting identity attrs

Convert virAccessDriverPolkitFormatProcess to use typesafe API
for getting process ID attribute.

Signed-off-by: Daniel P. Berrange <>

6 days agoConvert callers to use typesafe APIs for setting identity attrs
Daniel P. Berrange [Thu, 22 Aug 2013 15:58:58 +0000]
Convert callers to use typesafe APIs for setting identity attrs

Update virNetServerClientCreateIdentity and virIdentityGetSystem
to use the new typesafe APIs for setting identity attributes

Signed-off-by: Daniel P. Berrange <>

6 days agoAdd typesafe APIs for virIdentity attributes
Daniel P. Berrange [Thu, 22 Aug 2013 15:43:35 +0000]
Add typesafe APIs for virIdentity attributes

Instead of requiring the caller to format to/from strings,
add typesafe APIs todo this work.

Signed-off-by: Daniel P. Berrange <>

6 days agoAdd common API for doing polkit authentication
Daniel P. Berrange [Thu, 22 Aug 2013 13:27:19 +0000]
Add common API for doing polkit authentication

There are now two places in libvirt which use polkit. Currently
they use pkexec, which is set to be replaced by direct DBus API
calls. Add a common API which they will both be able to use for
this purpose.

No tests are added at this time, since the impl will be gutted
in favour of a DBus API call shortly.

Signed-off-by: Daniel P. Berrange <>

6 days agoqemu: wire up virtio-net segment offloading options
Ján Tomko [Thu, 11 Sep 2014 10:58:04 +0000]
qemu: wire up virtio-net segment offloading options

Format the segment offloading options specified by
  <host .../>
  <guest .../>
on virtio-net command line.

6 days agoconf: add options for disabling segment offloading
Ján Tomko [Thu, 11 Sep 2014 10:56:31 +0000]
conf: add options for disabling segment offloading

Add options for tuning segment offloading:
  <host csum='off' gso='off' tso4='off' tso6='off'
        ecn='off' ufo='off'/>
  <guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
which control the respective host_ and guest_ properties
of the virtio-net device.

6 days agonodeinfo: fix nodeGetFreePages when max node is zero
Jincheng Miao [Wed, 24 Sep 2014 05:45:30 +0000]
nodeinfo: fix nodeGetFreePages when max node is zero

In nodeGetFreePages, if startCell is given by '0',
and the max node number is '0' too. The for-loop
wouldn't be executed.
So convert it to while-loop.

> virsh freepages --cellno 0 --pagesize 4
error: internal error: no suitable info found

> virsh freepages --cellno 0 --pagesize 4
4KiB: 472637

Signed-off-by: Jincheng Miao <>
Signed-off-by: Michal Privoznik <>

7 days agoLXC: emphasis uid start of idmap only accept '0' in docs
Chen Hanxiao [Tue, 23 Sep 2014 03:40:03 +0000]
LXC: emphasis uid start of idmap only accept '0' in docs

We don't accept any other values except '0'.

Signed-off-by: Chen Hanxiao <>

7 days agoFix bug with loading bridge name for active domain during libvirtd start
Pavel Hrdina [Thu, 18 Sep 2014 13:06:44 +0000]
Fix bug with loading bridge name for active domain during libvirtd start

If you have a bridge network in running domain and libvirtd is restarted
the information about host bridge interface is lost from live xml.


Signed-off-by: Pavel Hrdina <>

7 days agostorage: Improve error message when traversing backing chains
Peter Krempa [Thu, 11 Sep 2014 17:09:48 +0000]
storage: Improve error message when traversing backing chains

Report also the name of the parent file and uid/gid used to access it to
help debugging broken storage configurations.

7 days agoqemu: Report better errors from broken backing chains
Peter Krempa [Thu, 11 Sep 2014 16:59:32 +0000]
qemu: Report better errors from broken backing chains

Request erroring out from the backing chain traveller and drop qemu's
internal backing chain integrity tester.

The backing chain traveller reports errors by itself with possibly more
detail than qemuDiskChainCheckBroken ever could.

We also need to make sure that we reconnect to existing qemu instances
even at the cost of losing the backing chain info (this really should be
stored in the XML rather than reloaded from disk, but that needs some

7 days agoqemu: Sanitize argument names and empty disk check in qemuDomainDetermineDiskChain
Peter Krempa [Thu, 18 Sep 2014 09:21:10 +0000]
qemu: Sanitize argument names and empty disk check in qemuDomainDetermineDiskChain

Reuse virStorageSourceIsEmpty and rename "force" argument to

7 days agoutil: storage: Allow metadata crawler to report useful errors
Peter Krempa [Thu, 11 Sep 2014 16:28:47 +0000]
util: storage: Allow metadata crawler to report useful errors

Add a new parameter to virStorageFileGetMetadata that will break the
backing chain detection process and report useful error message rather
than having to use virStorageFileChainGetBroken.

This patch just introduces the option, usage will be provided

7 days agolibvirt-guests: run after
Jim Fehlig [Mon, 8 Sep 2014 16:22:14 +0000]
libvirt-guests: run after

When libvirt-guests is configured to start guests on host
boot, it is possible for guests start and read the host
clock before it is synchronized.  Services such as
libvirt-guests that require correct time should use the
Special Passive System Unit

7 days agocputune_event: queue the event for cputune updates
Pavel Hrdina [Tue, 9 Sep 2014 14:34:12 +0000]
cputune_event: queue the event for cputune updates

Now we have universal tunable event so we can use it for reporting
changes to user. The cputune values will be prefixed with "cputune" to
distinguish it from other tunable events.

Signed-off-by: Pavel Hrdina <>

7 days agoadd an example how to use tunable event
Pavel Hrdina [Tue, 26 Aug 2014 21:47:44 +0000]
add an example how to use tunable event

Signed-off-by: Pavel Hrdina <>

7 days agoevent: introduce new event for tunable values
Pavel Hrdina [Wed, 10 Sep 2014 11:28:24 +0000]
event: introduce new event for tunable values

This new event will use typedParameters to expose what has been actually
updated and the reason is that we can in the future extend any tunable
values or add new tunable values. With typedParameters we don't have to
worry about creating some other events, we will just use this universal
event to inform user about updates.

Signed-off-by: Pavel Hrdina <>

7 days agoqemu: Fix memory leak in RDMA migration code
Jiri Denemark [Tue, 23 Sep 2014 13:22:24 +0000]
qemu: Fix memory leak in RDMA migration code

Signed-off-by: Jiri Denemark <>

7 days agoconf: sanitize tap and vhost paths
Martin Kletzander [Mon, 22 Sep 2014 14:26:53 +0000]
conf: sanitize tap and vhost paths

Signed-off-by: Martin Kletzander <>

7 days agoqemuBuildNumaArgStr: Discard def->cpu check
Michal Privoznik [Tue, 23 Sep 2014 11:08:39 +0000]
qemuBuildNumaArgStr: Discard def->cpu check

In the function at one place we check if def->cpu is NULL prior
to accessing def->cpu->ncells. Then, later in the code,
def->cpu->ncells is accessed directly, without the check. This
makes coverity unhappy, because the first check makes it think
def->cpu can be NULL. However, the function is not called if
def->cpu is NULL. Therefore, remove the first check and hopefully
make coverity cheer again.

Signed-off-by: Michal Privoznik <>

8 days agonodeinfo: Prefer MIN in nodeGetFreePages
Michal Privoznik [Tue, 23 Sep 2014 09:34:06 +0000]
nodeinfo: Prefer MIN in nodeGetFreePages

It's better to use a macro instead of if-else construct.

Signed-off-by: Michal Privoznik <>

8 days agodomain_conf: separate structures from virDomainDef
Pavel Hrdina [Tue, 16 Sep 2014 16:41:12 +0000]
domain_conf: separate structures from virDomainDef

Cleanup virDomanDef structure from other nested structure and create
separate type definition for them.

Fix a typo in virDomainHugePage.

Signed-off-by: Pavel Hrdina <>

8 days agoFix typo of virNodeGetFreePages comment
Jincheng Miao [Mon, 22 Sep 2014 10:14:28 +0000]
Fix typo of virNodeGetFreePages comment

Signed-off-by: Jincheng Miao <>

8 days agonodeinfo: report error when given node is out of range
Jincheng Miao [Mon, 22 Sep 2014 10:14:27 +0000]
nodeinfo: report error when given node is out of range

Signed-off-by: Jincheng Miao <>
Signed-off-by: Michal Privoznik <>

8 days agovirsh-host: fix pagesize unit of freepages
Jincheng Miao [Mon, 22 Sep 2014 10:14:26 +0000]
virsh-host: fix pagesize unit of freepages

The unit of '--pagesize' of freepages is kibibytes.

Signed-off-by: Jincheng Miao <>
Signed-off-by: Michal Privoznik <>

8 days agoqemu: Memory pre-pinning support for RDMA migration
Michael R. Hines [Mon, 13 Jan 2014 06:28:12 +0000]
qemu: Memory pre-pinning support for RDMA migration

RDMA Live migration requires registering memory with the hardware, and
thus QEMU offers a new 'capability' to pre-register / mlock() the guest
memory in advance for higher RDMA performance before the migration
begins. This capability is disabled by default, which means QEMU will
register the memory with the hardware in an on-demand basis.

This patch exposes this capability with the following example usage:

virsh migrate --live --rdma-pin-all --migrateuri rdma://hostname domain qemu+ssh://hostname/system

Signed-off-by: Michael R. Hines <>
Signed-off-by: Jiri Denemark <>

8 days agoqemu: RDMA migration support
Michael R. Hines [Mon, 13 Jan 2014 06:28:11 +0000]
qemu: RDMA migration support

This patch adds support for RDMA protocol in migration URIs.

USAGE: $ virsh migrate --live --migrateuri rdma://hostname domain qemu+ssh://hostname/system

Since libvirt runs QEMU in a pretty restricted environment, several
files needs to be added to cgroup_device_acl (in qemu.conf) for QEMU to
be able to access the host's infiniband hardware. Full documenation of
the feature can be found on QEMU wiki:

Signed-off-by: Michael R. Hines <>
Signed-off-by: Jiri Denemark <>

8 days agoqemu: Add RDMA migration capabilities
Jiri Denemark [Thu, 11 Sep 2014 12:11:54 +0000]
qemu: Add RDMA migration capabilities

8 days agoqemu: Prepare support for arbitrary migration protocol
Jiri Denemark [Mon, 15 Sep 2014 16:15:42 +0000]
qemu: Prepare support for arbitrary migration protocol

Currently we only support TCP protocol for native QEMU migration but
this is going to be changed. Let's make the code more general and remove
hardcoded TCP protocol from several places.

Signed-off-by: Jiri Denemark <>

8 days agoqemu: Fix old tcp:host URIs more cleanly
Jiri Denemark [Mon, 15 Sep 2014 16:13:38 +0000]
qemu: Fix old tcp:host URIs more cleanly

For compatibility with old libvirt we need to support both tcp:host and
tcp://host migration URIs. Let's make the code that parses them a bit

Signed-off-by: Jiri Denemark <>

8 days agoqemu: Expose additional migration statistics
Michael R. Hines [Mon, 13 Jan 2014 06:28:10 +0000]
qemu: Expose additional migration statistics

RDMA migration uses the 'setup' state in QEMU to optionally lock
all memory before the migration starts. The total time spent in
this state is exposed as VIR_DOMAIN_JOB_SETUP_TIME.

Additionally, QEMU also exports migration throughput (mbps) for both
memory and disk, so let's add them too: VIR_DOMAIN_JOB_MEMORY_BPS,

Signed-off-by: Michael R. Hines <>
Signed-off-by: Jiri Denemark <>

8 days agocpu: fix wrong single quote mark
Chen Fan [Tue, 23 Sep 2014 01:45:21 +0000]
cpu: fix wrong single quote mark

Signed-off-by: Chen Fan <>

8 days agocpu: remove repeated word in error message
Daniel P. Berrange [Mon, 22 Sep 2014 15:41:42 +0000]
cpu: remove repeated word in error message

Signed-off-by: Daniel P. Berrange <>

8 days agoqemu: raise an error when trying to use readonly sata disks
Giuseppe Scrivano [Mon, 22 Sep 2014 13:58:21 +0000]
qemu: raise an error when trying to use readonly sata disks

commit 72f919f558902968bd0cf9f99f25ac62cbfe3ac6 introduced an user
friendly error message when trying to use IDE disks as readonly.

Do the same thing for the SATA bus.


Signed-off-by: Giuseppe Scrivano <>

8 days agoqemu: hook: Provide hook when restoring a domain save image
Peter Krempa [Wed, 17 Sep 2014 09:38:39 +0000]
qemu: hook: Provide hook when restoring a domain save image

8 days agodocs: specify vhost-net instead of net-vhost
Jianwei Hu [Mon, 22 Sep 2014 13:12:18 +0000]
docs: specify vhost-net instead of net-vhost

For the tap backend the default is specified and the same should be
done for the vhost attribute.

Signed-off-by: Martin Kletzander <>

8 days agoschema: properly set tap and vhost backend attributes optional
Jianwei Hu [Mon, 22 Sep 2014 13:46:29 +0000]
schema: properly set tap and vhost backend attributes optional

Each attribute is optional, commit af8b4a2 forgot to mention that.

Signed-off-by: Martin Kletzander <>

8 days agoqemu: save image: Split out checks done only when editing the save img
Peter Krempa [Wed, 17 Sep 2014 13:27:33 +0000]
qemu: save image: Split out checks done only when editing the save img

Move them to the single corresponding function rather than having them
in the common chunk of code.

9 days agoqemu: save image: Split out new definition check/update
Peter Krempa [Wed, 17 Sep 2014 13:06:18 +0000]
qemu: save image: Split out new definition check/update

Split out the call to the update method only to places where it is
actually used rather than having a mega-method that does all the stuff.

9 days agoqemu: save image: Add possibility to return XML stored in the image
Peter Krempa [Wed, 17 Sep 2014 12:50:04 +0000]
qemu: save image: Add possibility to return XML stored in the image

Add a new parameter that will allow to return the XML stored in the save
image for further manipulation and adjust the callers. This option will
be used in later patches.

9 days agoqemu: save image: Split out user provided XML checker
Peter Krempa [Wed, 17 Sep 2014 12:23:05 +0000]
qemu: save image: Split out user provided XML checker

Extract code used to check save image XMLs provided by users to separate

11 days agolibxl: Drop driver lock in libxlDomainDefineXML
Jim Fehlig [Thu, 18 Sep 2014 21:05:34 +0000]
libxl: Drop driver lock in libxlDomainDefineXML

There is no need to acquire the driver-wide lock in
libxlDomainDefineXML.  When switching to jobs in the libxl
driver, most driver-wide locks were removed.  The locking here
was preserved since I mistakenly thought virDomainObjListAdd
needed protection.  This is not the case, so remove the
unnecessary locking.

11 days agoqemu: Process the hostdev "rawio" setting
John Ferlan [Tue, 9 Sep 2014 22:51:02 +0000]
qemu: Process the hostdev "rawio" setting

Mimic the "Disk" processing for 'rawio', but for a scsi_host hostdev
lun device.

11 days agohostdev: Add "rawio" attribute to _virDomainHostdevSubsysSCSI
John Ferlan [Tue, 9 Sep 2014 22:48:57 +0000]
hostdev: Add "rawio" attribute to _virDomainHostdevSubsysSCSI

Add the 'rawio' attribute to match _virDomainDiskDef and process the
hostdev XML similarly to the disk XML for a lun which supports/requires rawio

12 days agodomain_conf: Change virDomainDiskDef 'rawio' to use virTristateBool
John Ferlan [Thu, 18 Sep 2014 17:54:18 +0000]
domain_conf: Change virDomainDiskDef 'rawio' to use virTristateBool

Adjust disk definition for 'rawio' to use the TristateBool logic

12 days agoqemu: Add missing goto on rawio
John Ferlan [Fri, 19 Sep 2014 09:53:04 +0000]
qemu: Add missing goto on rawio

Commit id '9a2f36ec' added a build conditional of CAP_SYS_RAWIO
in order to determine whether or not a disk definition using rawio
should be allowed on platforms without CAP_SYS_RAWIO. If one was
found, virReportError was used but the code didn't goto cleanup.

This patch adds the goto.

12 days agoLXC: add HOME environment variable docs
Chen Hanxiao [Fri, 19 Sep 2014 02:01:04 +0000]
LXC: add HOME environment variable docs

add HOME environment variable.
Add a doc for this.

Signed-off-by: Chen Hanxiao <>

12 days agoMove the FIPS detection from capabilities
Pavel Hrdina [Thu, 18 Sep 2014 15:38:32 +0000]
Move the FIPS detection from capabilities

We are not detecting the presence of FIPS from QEMU, but from procfs and
that means it's not QEMU capability. It was decided that we will pass
this flag to QEMU even if it's not supported by old QEMU binaries.

This patch also reverts changes done by commit a21cfb0f to
qemucapabilitestest and implements a new test case in qemuxml2argvtest.


Signed-off-by: Pavel Hrdina <>

12 days agovirSecuritySELinuxSetTapFDLabel: Temporarily revert to old behavior
Michal Privoznik [Thu, 18 Sep 2014 13:17:29 +0000]
virSecuritySELinuxSetTapFDLabel: Temporarily revert to old behavior

A long time ago I've implemented support for so called multiqueue
net.  The idea was to let guest network traffic be processed by
multiple host CPUs and thus increasing performance. However, this
behavior is enabled by QEMU via special ioctl() iterated over the
all tap FDs passed in by libvirt. Unfortunately, SELinux comes in
and disallows the ioctl() call because the /dev/net/tun has label
system_u:object_r:tun_tap_device_t:s0 and 'attach_queue' ioctl()
is not allowed on tun_tap_device_t type. So after discussion with
a SELinux developer we've decided that the FDs passed to the QEMU
should be labelled with svirt_t type and SELinux policy will
allow the ioctl(). Therefore I've made a patch
(cf976d9dcf4e592261b14f03572) that does exactly this. The patch
was fixed then by a4431931393aeb1ac5893f121151fa3df4fde612 and
b635b7a1af0e64754016d758376f382470bc11e7. However, things are not
that easy - even though the API to label FD is called
(fsetfilecon_raw) the underlying file is labelled too! So
effectively we are mangling /dev/net/tun label. Yes, that broke
dozen of other application from openvpn, or boxes, to qemu
running other domains.

The best solution would be if SELinux provides a way to label an
FD only, which could be then labeled when passed to the qemu.
However that's a long path to go and we should fix this
regression AQAP. So I went to talk to the SELinux developer again
and we agreed on temporary solution that:

1) All the three patches are reverted
2) SELinux temporarily allows 'attach_queue' on the

Signed-off-by: Michal Privoznik <>

12 days agodocs: update zfs documentation
Roman Bogorodskiy [Sun, 14 Sep 2014 05:17:54 +0000]
docs: update zfs documentation

 - docs/ document 'zfs' pool type, add it
   to a list of pool types that could use source physical devices
 - docs/ update a ZFS pool example XML with
   source physical devices, mention that starting from 1.2.9 a
   pool could be created from this devices by libvirt and in earlier
   versions user still has to create a pool manually
 - docs/ add an example with ZFS pools

12 days agostorage: zfs: implement pool build and delete
Roman Bogorodskiy [Sun, 7 Sep 2014 14:01:34 +0000]
storage: zfs: implement pool build and delete

 - Provide an implementation for buildPool and deletePool operations
   for the ZFS storage backend.
 - Add VIR_STORAGE_POOL_SOURCE_DEVICE flag to ZFS pool poolOptions
   as now we can specify devices to build pool from
 - storagepool.rng: add an optional 'sourceinfodev' to 'sourcezfs' and
   add an optional 'target' to 'poolzfs' entity
 - Add a couple of tests to storagepoolxml2xmltest

12 days agoaudit: fix memory leak without WITH_AUDIT
Ján Tomko [Thu, 18 Sep 2014 10:08:37 +0000]
audit: fix memory leak without WITH_AUDIT

Free str unconditionally since we allocate it without WITH_AUDIT

12 days agoaudit: remove redundant NULL assignment
Ján Tomko [Thu, 18 Sep 2014 09:59:38 +0000]
audit: remove redundant NULL assignment

virVasprintf sets the output to NULL on failure.

12 days agoFixes for domains with no iothreads
Ján Tomko [Thu, 18 Sep 2014 09:57:00 +0000]
Fixes for domains with no iothreads

Plug a memory leak and silence a warning.

12 days agoFix leak in x86UpdateHostModel
Ján Tomko [Thu, 18 Sep 2014 09:55:52 +0000]
Fix leak in x86UpdateHostModel

Commit de0aeaf introduced a memory leak.

12 days agoFix libvirtd crash when removing metadata
Erik Skultety [Thu, 18 Sep 2014 12:25:05 +0000]
Fix libvirtd crash when removing metadata

When trying to remove nonexistent metadata from XML, libvirt daemon
crashes due to dereferencing NULL pointer.


12 days agoqemu: Don't fail startup/attach for IOThreads if no JSON
John Ferlan [Wed, 17 Sep 2014 18:43:12 +0000]
qemu: Don't fail startup/attach for IOThreads if no JSON

If the qemu being used doesn't support JSON, then querying for IOThread
data would fail. In that case, ensure the *iothreads is NULL and return 0
as the count of iothreads available.