]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
10 years agoconf: Properly report error of unsupported input bus type
Luyao Huang [Wed, 4 Feb 2015 02:33:29 +0000 (10:33 +0800)]
conf: Properly report error of unsupported input bus type

https://bugzilla.redhat.com/show_bug.cgi?id=1188914

Add a missing jump to the error label in case the input device bus is
invalid.

Signed-off-by: Luyao Huang <lhuang@redhat.com>
10 years agoconf: Properly report error when an unsupported chr device name is passed
Luyao Huang [Wed, 4 Feb 2015 01:53:24 +0000 (09:53 +0800)]
conf: Properly report error when an unsupported chr device name is passed

Add the missing jump to thje error label. The error message shouldn't
ever be triggered though as it's called only on pre-selected nodes.

Signed-off-by: Luyao Huang <lhuang@redhat.com>
10 years agovirsh-volume: add support for --reflink
Chen Hanxiao [Tue, 3 Feb 2015 03:05:27 +0000 (11:05 +0800)]
virsh-volume: add support for --reflink

Add support for --reflink to the virsh 'vol-create-from' and 'vol-clone'
commands to signify usage of the VIR_STORAGE_VOL_CREATE_REFLINK flag in the
ensuing virStorageVolCreateXMLFrom API call.

Updated the man page to describe the new flag.

Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
10 years agovirutil: fix MinGW build
Pavel Hrdina [Tue, 3 Feb 2015 13:20:25 +0000 (14:20 +0100)]
virutil: fix MinGW build

Commit b38da584 introduced two new functions to get a page size but it
won't work on Windows. We should take care of this.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
10 years agovirnetdev: fix some issues found by coverity and mingw builds
Pavel Hrdina [Tue, 3 Feb 2015 10:20:40 +0000 (11:20 +0100)]
virnetdev: fix some issues found by coverity and mingw builds

Commit e562a61a introduced new function to get/set interface state but
there was misuse of ATTRIBUTE_NONNULL on non-pointer attributes and also
we need to wrap that functions by #ifdef to not break mingw build.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
10 years agoMake tests independant of system page size
Daniel P. Berrange [Mon, 2 Feb 2015 10:26:49 +0000 (05:26 -0500)]
Make tests independant of system page size

Some code paths have special logic depending on the page size
reported by sysconf, which in turn affects the test results.
We must mock this so tests always have a consistent page size.

10 years agoutil: make virNetDev(Get|Set)IFFlags() static
Laine Stump [Fri, 30 Jan 2015 16:56:15 +0000 (11:56 -0500)]
util: make virNetDev(Get|Set)IFFlags() static

e562a61a0739 added these two new helper functions and only used them
within virnetdev.c, but declared them in the .h file. If some
currently unsupported interface flags need to be accessed in the
future, it will make more sense to write the appropriate higher level
function rather than require us to artificially define IFF_* on some
mythical platform that doesn't have SIOC[SG]IFFLAGS (and therefore
doesn't have IFF_*) just so we can call virNetDevSetIFFFlags() to
return an error.

To help someone in not going down the wrong road, this patch makes the
two helper functions static, hopefully making it less likely that
someone will want to use them outside of virnetdev.c.

10 years agostorage: Need to clear pool prior to refreshPool during Autostart
John Ferlan [Fri, 30 Jan 2015 18:21:49 +0000 (13:21 -0500)]
storage: Need to clear pool prior to refreshPool during Autostart

https://bugzilla.redhat.com/show_bug.cgi?id=1176510

When storageDriverAutostart is called path virStateReload via a 'service
libvirtd reload', then because the volume list in the pool wasn't cleared
prior to the call, each volume would be listed multiple times (as many
times as we reload). I believe the issue would be introduced by commit
id '9e093f0b' at least for the libvirtd reload path, although I suppose
the introduction of virStateReload (commit id '70da0494') could be a
different cause.

Thus like other places prior to calling refreshPool, we need to call
virStoragePoolObjClearVols

10 years agoqemu: command: Don't combine old and modern NUMA node creation
Peter Krempa [Mon, 26 Jan 2015 12:48:02 +0000 (13:48 +0100)]
qemu: command: Don't combine old and modern NUMA node creation

Change done by commit f309db1f4d51009bad0d32e12efc75530b66836b wrongly
assumes that qemu can start with a combination of NUMA nodes specified
with the "memdev" option and the appropriate backends, and the legacy
way by specifying only "mem" as a size argument. QEMU rejects such
commandline though:

$ /usr/bin/qemu-system-x86_64 -S -M pc -m 1024 -smp 2 \
-numa node,nodeid=0,cpus=0,mem=256 \
-object memory-backend-ram,id=ram-node1,size=12345 \
-numa node,nodeid=1,cpus=1,memdev=ram-node1
qemu-system-x86_64: -numa node,nodeid=1,cpus=1,memdev=ram-node1: qemu: memdev option must be specified for either all or no nodes

To fix this issue we need to check if any of the nodes requires the new
definition with the backend and if so, then all other nodes have to use
it too.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1182467

10 years agoqemu: command: Refactor NUMA backend object formatting to use JSON objs
Peter Krempa [Thu, 15 Jan 2015 21:42:51 +0000 (22:42 +0100)]
qemu: command: Refactor NUMA backend object formatting to use JSON objs

With the new JSON to argv formatter we are now able to represent the
memory backend definitions in the JSON object format that is reusable
for monitor use (hotplug) and then convert it into the shell string.
This will avoid having two separate instances of the same code that
would create the different formats.

Previous refactors now allow to make this step without changes to the
test suite.

10 years agoqemu: command: Switch to bytes when formatting size for memory backends
Peter Krempa [Thu, 15 Jan 2015 16:31:31 +0000 (17:31 +0100)]
qemu: command: Switch to bytes when formatting size for memory backends

QEMU's command line visitor as well as the JSON interface take bytes by
default for memory object sizes. Convert mebibytes to bytes so that we
can later refactor the existing code for hotplug purposes.

10 years agoqemu: command: Unify values for boolean values when formating memory backends
Peter Krempa [Thu, 15 Jan 2015 15:59:50 +0000 (16:59 +0100)]
qemu: command: Unify values for boolean values when formating memory backends

QEMU's qapi visitor code allows yes/on/y for true and no/off/n for false
value of boolean properities. Unify the used style so that we can
generate it later and fix test cases.

10 years agoqemu: command: Shuffle around formating of alias for memory backend objs
Peter Krempa [Thu, 15 Jan 2015 14:55:48 +0000 (15:55 +0100)]
qemu: command: Shuffle around formating of alias for memory backend objs

Move the alias as the second formated argument and tweak the tests so
that a future refactor that will change the order doesn't break tests.

10 years agoqemu: Extract code to setup memory backing objects
Peter Krempa [Fri, 9 Jan 2015 09:34:12 +0000 (10:34 +0100)]
qemu: Extract code to setup memory backing objects

Extract the memory backend device code into a separate function so that
it can be later easily refactored and reused.

Few small changes for future reusability, namely:
- new (currently unused) parameter for user specified page size
- size of the memory is specified in kibibytes, divided up in the
function
- new (currently unused) parameter for user specifed source nodeset
- option to enforce capability check

10 years agoqemu: command: Add helper to format -object strings from JSON representation
Peter Krempa [Tue, 13 Jan 2015 17:19:34 +0000 (18:19 +0100)]
qemu: command: Add helper to format -object strings from JSON representation

Unlike -device, qemu uses a JSON object to add backend "objects" via the
monitor rather than the string that would be passed on the commandline.

To be able to reuse code parts that configure backends for various
devices, this patch adds a helper that will allow generating the command
line representations from the JSON property object.

10 years agoutil: json: add helper to iterate JSON object key=value pairs
Peter Krempa [Tue, 13 Jan 2015 15:43:30 +0000 (16:43 +0100)]
util: json: add helper to iterate JSON object key=value pairs

This helper eases iterating all key=value pairs stored in a JSON
object. Usually we pick only certain known keys from a JSON object, but
this will allow to walk complete objects and have the callback act on
those.

10 years agoutil: json: Add functions to convert JSON arrays from/to virBitmaps
Peter Krempa [Tue, 13 Jan 2015 14:06:16 +0000 (15:06 +0100)]
util: json: Add functions to convert JSON arrays from/to virBitmaps

To be able to easily represent nodesets and other data stored in
virBitmaps in libvirt, this patch introduces a set of helpers that allow
to convert the bitmap to and from JSON value objects.

10 years agoutil: bitmap: Add option to allocate bitmap without reporting error
Peter Krempa [Fri, 30 Jan 2015 10:19:59 +0000 (11:19 +0100)]
util: bitmap: Add option to allocate bitmap without reporting error

The virBitmapNew() function reports only OOM errors. Split out the
internals into a "quiet" function and add a wrapper that reports the
error.

10 years agoutil: json: make value object creator universal by supporting adding
Peter Krempa [Mon, 12 Jan 2015 15:35:17 +0000 (16:35 +0100)]
util: json: make value object creator universal by supporting adding

To allow constructing of value objects stepwise explode the helper into
separate steps and allow appending into existing value objects.

10 years agotest: utils: Add helpers for automatic numbering of test cases
Peter Krempa [Thu, 15 Jan 2015 10:44:58 +0000 (11:44 +0100)]
test: utils: Add helpers for automatic numbering of test cases

Adding or reordering test cases is usually a pain due to static test
case names that are then passed to virtTestRun(). To ease the numbering
of test cases, this patch adds two simple helpers that generate the test
names according to the order they are run. The test name can be
configured via the reset function.

This will allow us to freely add test cases in middle of test groups
without the need to re-number the rest of test cases.

10 years agoconf: numatune: Extract code for requesting memory nodeset from formatting
Peter Krempa [Thu, 15 Jan 2015 21:40:15 +0000 (22:40 +0100)]
conf: numatune: Extract code for requesting memory nodeset from formatting

Extract the logic to determine which nodeset has to be used for a domain
from the formatting step so that it can be reused separately when the
nodeset is used in a different way.

10 years agoxend: Don't crash in virDomainXMLDevID
Michal Privoznik [Fri, 30 Jan 2015 09:37:10 +0000 (10:37 +0100)]
xend: Don't crash in virDomainXMLDevID

The function is called from all {Attach,Update,Detach}Device APIs to
create config strings that are later passed to the xend to perform the
desired action. The function is intended to handle all supported
devices. However, as of 5b05358abacb1029fa0d61f72decacf0d4fd8ffb we
are trying to get disk driver of the device without checking if the
device really is a disk. This leads to an segmentation fault:

  #0 0x00007ffff7571815 in virDomainDiskGetDriver () from /usr/lib/libvirt.so.0
  #1 0x00007fffeb9ad471 in ?? () from /usr/lib/libvirt/connection-driver/libvirt_driver_xen.so
  #2 0x00007fffeb9b1062 in xenDaemonAttachDeviceFlags () from /usr/lib/libvirt/connection-driver/libvirt_driver_xen.so
  #3 0x00007fffeb9a8a86 in ?? () from /usr/lib/libvirt/connection-driver/libvirt_driver_xen.so
  #4 0x00007ffff7609266 in virDomainAttachDevice () from /usr/lib/libvirt.so.0
  #5 0x0000555555593c9d in ?? ()
  #6 0x00007ffff76743c9 in virNetServerProgramDispatch () from /usr/lib/libvirt.so.0
  #7 0x00005555555a678d in ?? ()
  #8 0x00007ffff755460e in ?? () from /usr/lib/libvirt.so.0
  #9 0x00007ffff7553b06 in ?? () from /usr/lib/libvirt.so.0
  #10 0x00007ffff4998b50 in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
  #11 0x00007ffff46e30ed in clone () from /lib/x86_64-linux-gnu/libc.so.6
  #12 0x0000000000000000 in ?? ()

Reported-by: Xiaolin Su <linxxnil@126.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoconf: Don't mangle vcpu placement randomly
Michal Privoznik [Thu, 22 Jan 2015 12:57:22 +0000 (13:57 +0100)]
conf: Don't mangle vcpu placement randomly

https://bugzilla.redhat.com/show_bug.cgi?id=1170492

In one of our previous commits (dc8b7ce7) we've done a functional
change even though it was intended as pure refactor. The problem is,
that the following XML:

 <vcpu placement='static' current='2'>6</vcpu>
 <cputune>
   <emulatorpin cpuset='1-3'/>
 </cputune>
 <numatune>
   <memory mode='strict' placement='auto'/>
 </numatune>

gets translated into this one:

 <vcpu placement='auto' current='2'>6</vcpu>
 <cputune>
   <emulatorpin cpuset='1-3'/>
 </cputune>
 <numatune>
   <memory mode='strict' placement='auto'/>
 </numatune>

We should not change the vcpu placement mode. Moreover, we're doing
something similar in case of emulatorpin and iothreadpin. If they were
set, but vcpu placement was auto, we've mistakenly removed them from
the domain XML even though we are able to set them independently on
vcpus.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoqemu: change macvtap device options in response to NIC_RX_FILTER_CHANGED
Tony Krowiak [Thu, 22 Jan 2015 19:47:03 +0000 (14:47 -0500)]
qemu: change macvtap device options in response to NIC_RX_FILTER_CHANGED

This patch enables synchronization of the host macvtap
device options with the guest device's in response to the
NIC_RX_FILTER_CHANGED event.

The following device options will be synchronized:
* PROMISC
* MULTICAST
* ALLMULTI

Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoutil: Functions for getting/setting device options
Tony Krowiak [Thu, 22 Jan 2015 19:47:02 +0000 (14:47 -0500)]
util: Functions for getting/setting device options

This patch provides the utility functions needed to synchronize
the rxfilter changes made to a guest domain with the corresponding
macvtap devices on the host:

* Get/set PROMISC flag
* Get/set ALLMULTI, MULTICAST

Signed-off-by: Tony Krowiak <akrowiak@linux.vnet.ibm.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoqemu: Don't unconditionally delete file in qemuOpenFileAs
John Ferlan [Wed, 28 Jan 2015 18:14:38 +0000 (13:14 -0500)]
qemu: Don't unconditionally delete file in qemuOpenFileAs

https://bugzilla.redhat.com/show_bug.cgi?id=1158034

If we're expecting to create a file somewhere and that fails for some
reason during qemuOpenFileAs, then we unlink the path we're attempting
to create leaving no way to determine what the "existing" privileges,
protections, or labels are that caused the failure (open, change owner
and group, change mode, etc.).

Furthermore, if we fall into the path where we'll be opening / creating
the file using VIR_FILE_OPEN_FORK, we need to first unlink/delete the file
we created in the first path; otherwise, the attempt by the child process
to open as some specific user:group may fail because the file was already
created using nfsnobody:nfsnobody. Again, if we didn't create the file we
don't want to blindly delete what already exists. Thus, a second reason for
the original check to set need_unlink to false when we find the file with
CREAT set, but already existing.

Signed-off-by: John Ferlan <jferlan@redhat.com>
10 years agovirfile: Need to check for ENOTCONN from recvfd failure
John Ferlan [Wed, 28 Jan 2015 00:03:12 +0000 (19:03 -0500)]
virfile: Need to check for ENOTCONN from recvfd failure

A gnulib change (commit id 'beae0bdc') causes ENOTCONN to be returned
from recvfd which causes us to fall into the throwaway waitpid() call
and return ENOTCONN to the caller, this then gets displayed during
a 'virsh save' when using a root squashed NFS environment that's trying
to save the file as something other than root:root.

This patch will add the additional check for ENOTCONN to force the code
into the waitpid loop looking for the actual status from the _exit()'d
child fork.

Signed-off-by: John Ferlan <jferlan@redhat.com>
10 years agoqemu: Adjust EndAsyncJob for qemuDomainSaveInternal error path
John Ferlan [Mon, 26 Jan 2015 19:13:22 +0000 (14:13 -0500)]
qemu: Adjust EndAsyncJob for qemuDomainSaveInternal error path

Commit id '540c339a' to fix issues with reference counting and transient
domains moved the qemuDomainObjEndAsyncJob call prior to the attempt to
restart the guest CPU's resulting in an error:

    error: Failed to save domain rhel70 to /tmp/pl/rhel70.save
    error: internal error: unexpected async job 3

when (ret != 0) - eg, the error path from qemuDomainSaveMemory.

This patch will adjust the logic to call the EndAsyncJob only after
we've tried to restart the guest CPUs. It also needs to adjust the
test for qemuDomainRemoveInactive to add the ret == 0 condition.

Additionally, if we get to endjob: because of some error earlier, then
we need to save that error in the event the CPU restart logic fails.
We don't want to return the error from CPU restart failure, rather we
want to return the error from the failed save that caused us to fall
into the retry to start the CPU logic.

Signed-off-by: John Ferlan <jferlan@redhat.com>
10 years agoschemas: Allow all generic elements and attributes for all interfaces
Michal Privoznik [Wed, 28 Jan 2015 17:14:22 +0000 (18:14 +0100)]
schemas: Allow all generic elements and attributes for all interfaces

There are some interface types (notably 'server' and 'client')
which instead of allowing the default set of elements and
attributes (like the rest do), try to enumerate only the elements
they know of. This way it's, however, easy to miss something. For
instance, the <address/> element was not mentioned at all. This
resulted in a strange behavior: when such interface was added
into XML, the address was automatically generated by parsing
code. Later, the formatted XML hasn't passed the RNG schema. This
became more visible once we've turned on the XML validation on
domain XML changes: appending an empty line at the end of
formatted XML (to trick virsh think the XML had changed) made
libvirt to refuse the very same XML it formatted.

Instead of trying to find each element and attribute we are
missing in the schema, lets just allow all the elements and
attributes like we're doing that for the rest of types. It's no
harm if the schema is wider than our parser allows.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoqemu: Add AAVMF to the list of known UEFIs
Michal Privoznik [Wed, 21 Jan 2015 18:44:43 +0000 (19:44 +0100)]
qemu: Add AAVMF to the list of known UEFIs

Well, even though users can pass the list of UEFI:NVRAM pairs at the
configure time, we may maintain the list of widely available UEFI
ourselves too. And as arm64 begin to rises, OVMF was ported there too.
With a slight name change - it's called AAVMF, with AAVMF_CODE.fd
being the UEFI firmware and AAVMF_VARS.fd being the NVRAM store file.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoqemu: Allow UEFI paths to be specified at compile time
Michal Privoznik [Wed, 21 Jan 2015 18:38:57 +0000 (19:38 +0100)]
qemu: Allow UEFI paths to be specified at compile time

Up until now there are just two ways how to specify UEFI paths to
libvirt. The first one is editing qemu.conf, the other is editing
qemu_conf.c and recompile which is not that fancy. So, new
configure option is introduced: --with-loader-nvram which takes a
list of pairs of UEFI firmware and NVRAM store. This way, the
compiled in defaults can be passed during compile time without
need to change the code itself.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoFix syntax-check
Ján Tomko [Thu, 29 Jan 2015 13:39:12 +0000 (14:39 +0100)]
Fix syntax-check

My commit 08d1ae1 broke syntax-check by adding ATTRIBUTE_UNUSED
to the flags parameter.

Rename the parameter to unused_flags to bypass the check.

10 years agoRemove flag checking in MacVLanCreate helper stub
Ján Tomko [Thu, 29 Jan 2015 09:03:29 +0000 (10:03 +0100)]
Remove flag checking in MacVLanCreate helper stub

When compiling without WITH_MACVTAP, we can get:
'unsupported flags (0x1) in function
virNetDevMacVLanCreateWithVPortProfile'
on an attempt to start a domain.

Remove the flag check to reach the more helpful error:
Cannot create macvlan devices on this platform

https://bugzilla.redhat.com/show_bug.cgi?id=1186928

10 years agovirsh: man: Document behavior of some blkdeviotune's flags when querying
Peter Krempa [Thu, 29 Jan 2015 07:33:51 +0000 (08:33 +0100)]
virsh: man: Document behavior of some blkdeviotune's flags when querying

--live and --config can't be specified together when querying the
configuration, but are valid when setting. The man page was hinting that
they are valid always.

10 years agoutil: bitmap: Tolerate NULL bitmaps in virBitmapEqual
Peter Krempa [Tue, 20 Jan 2015 18:41:08 +0000 (19:41 +0100)]
util: bitmap: Tolerate NULL bitmaps in virBitmapEqual

After virBitmapEqual is able to compare NULL bitmaps few bits of code
can be cleaned up.

10 years agostorage: Check the partition name against provided name
John Ferlan [Fri, 16 Jan 2015 00:12:42 +0000 (19:12 -0500)]
storage: Check the partition name against provided name

https://bugzilla.redhat.com/show_bug.cgi?id=1138516

If the provided volume name doesn't match what parted generated as the
partition name, then return a failure.

Update virsh.pod and formatstorage.html.in to describe the 'name' restriction
for disk pools as well as the usage of the <target>'s <format type='value'>.

10 years agostorage: When delete extended partition, need to refresh pool
John Ferlan [Thu, 22 Jan 2015 16:23:10 +0000 (11:23 -0500)]
storage: When delete extended partition, need to refresh pool

When removing a volume that is the extended partition, all the logical
volume partitions that exist within the extended partition will also be
removed, so we need to refresh the pool to have the updated list

10 years agostorage: Adjust how to refresh extended partition disk data
John Ferlan [Thu, 22 Jan 2015 14:12:04 +0000 (09:12 -0500)]
storage: Adjust how to refresh extended partition disk data

During virStorageBackendDiskMakeDataVol processing, if we find an extended
partition, then handle it specially when updating the capacity/allocation
rather than calling virStorageBackendUpdateVolInfo.

As it turns out, once a logical partition exists, any attempt to refresh
the pool or after libvirtd restart/reload will result in a failure to open
the extended partition device resulting in the inability to start the pool.
The downside to this is we will lose the <permissions> and <timestamps> for
the extended partition upon subsequent restart, refresh, reload since the
stat() in virStorageBackendUpdateVolTargetInfoFD will not be called. However,
since it's really only a container and shouldn't directly be used for
storage that seems reasonable.

Therefore, only use the existing code that already had a comment about
getting the allocation wrong for extended partitions for just the setting
of the extended partition data.

10 years agostorage: Fix check for partition type for disk backing volumes
John Ferlan [Thu, 22 Jan 2015 13:30:36 +0000 (08:30 -0500)]
storage: Fix check for partition type for disk backing volumes

While checking the existing partitions in virStorageBackendDiskPartFormat,
the code would erroneously compare the volume target format type (eg, the
virStoragePartedFsType) rather than the source partition type (eg, the
virStorageVolTypeDisk) which is set during virStorageBackendDiskReadPartitions.

10 years agostorage: Attempt error recovery in virStorageBackendDiskCreateVol
John Ferlan [Wed, 21 Jan 2015 20:38:05 +0000 (15:38 -0500)]
storage: Attempt error recovery in virStorageBackendDiskCreateVol

During virStorageBackendDiskCreateVol if virStorageBackendDiskReadPartitions
fails, then we were leaving with an error and a partition on the disk for
which there was no corresponding volume and used space on the disk which
could be reclaimable through direct parted activity. On a subsequent restart,
reload, or refresh the volume may magically appear too.

10 years agostorage: Move virStorageBackendDiskDeleteVol
John Ferlan [Wed, 21 Jan 2015 19:41:02 +0000 (14:41 -0500)]
storage: Move virStorageBackendDiskDeleteVol

Move the API to before virStorageBackendDiskCreateVol in order to be
able to call the DeleteVol API when virStorageBackendDiskReadPartitions
fails so that we don't by chance leave a partition on the disk.

10 years agolibvirt.spec: remove vbox storage and network .so files
Pavel Hrdina [Wed, 28 Jan 2015 17:40:14 +0000 (18:40 +0100)]
libvirt.spec: remove vbox storage and network .so files

Commit 55ea7be7 removed separated modules for vbox_network and
vbox_storage drivers but forget to update libvirt.spec.in file. This
patch will fix rpm build.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
10 years agoqemu: fix cannot set graphic passwd via qemuDomainSaveImageDefineXML
Luyao Huang [Tue, 20 Jan 2015 09:04:41 +0000 (17:04 +0800)]
qemu: fix cannot set graphic passwd via qemuDomainSaveImageDefineXML

https://bugzilla.redhat.com/show_bug.cgi?id=1183890

When we try to update a xml to a image file, we will clear the
graphics passwd settings, because we do not pass VIR_DOMAIN_XML_SECURE
to qemuDomainDefCopy, qemuDomainDefFormatBuf won't format the passwd.

Add VIR_DOMAIN_XML_SECURE flag when we call qemuDomainDefCopy
in qemuDomainSaveImageUpdateDef.

Signed-off-by: Luyao Huang <lhuang@redhat.com>
10 years agohotplug: only add a chardev to vmdef after monitor call
Ján Tomko [Tue, 27 Jan 2015 17:44:30 +0000 (18:44 +0100)]
hotplug: only add a chardev to vmdef after monitor call

https://bugzilla.redhat.com/show_bug.cgi?id=1161024

This way the device is in vmdef only if ret = 0 and the caller
(qemuDomainAttachDeviceFlags) does not free it.

Otherwise it might get double freed by qemuProcessStop
and qemuDomainAttachDeviceFlags if the domain crashed
in monitor after we've added it to vm->def.

10 years agoSplit qemuDomainChrInsert into two parts
Ján Tomko [Tue, 27 Jan 2015 17:30:15 +0000 (18:30 +0100)]
Split qemuDomainChrInsert into two parts

Do the allocation first, then add the actual device.
The second part should never fail. This is good
for live hotplug where we don't want to remove the device
on OOM after the monitor command succeeded.

The only change in behavior is that on failure, the
vmdef->consoles array is freed, not just the first console.

10 years agolxc: report veth device indexes to systemd
Daniel P. Berrange [Fri, 16 Jan 2015 16:58:39 +0000 (16:58 +0000)]
lxc: report veth device indexes to systemd

Record the index of each host-side veth device created and report
them to systemd, so they show up in machinectl status for the VM.

lxc-shell(95449419f969d649d9962566ec42af7d)
     Since: Fri 2015-01-16 16:53:37 GMT; 3s ago
    Leader: 28085 (sh)
   Service: libvirt-lxc; class container
     Iface: vnet0
   Address: fe80::216:3eff:fe00:c317%124
        OS: Fedora 21 (Twenty One)
      Unit: machine-lxc\x2dshell.scope
            └─28085 /bin/sh

10 years agolxc: more logging during startup paths
Daniel P. Berrange [Fri, 16 Jan 2015 17:20:48 +0000 (17:20 +0000)]
lxc: more logging during startup paths

Add more logging to the lxc controller and container files to
facilitate debugging startup problems. Also make it clear when
the container is going to close stdout and thus no longer do
any logging.

10 years agolxc: delay setup of cgroup until we have the init pid
Daniel P. Berrange [Fri, 16 Jan 2015 16:23:45 +0000 (16:23 +0000)]
lxc: delay setup of cgroup until we have the init pid

Don't create the cgroups ahead of launching the container since
there is no need for the limits to apply during initial bootstrap.
Create the cgroup after the container PID is known and tell
systemd the initpid is the leader, instead of the controller
pid.

10 years agolxc: only write XML once for lxc controller
Daniel P. Berrange [Fri, 16 Jan 2015 16:39:57 +0000 (16:39 +0000)]
lxc: only write XML once for lxc controller

Currently when launching the LXC controller we first write out
the plain, inactive XML configuration, then launch the controller,
then replace the file with the live status XML configuration.
By good fortune this hasn't caused any problems other than some
misleading error messages during failure scenarios.

This simplifies the code so it only writes out the XML once and
always writes the live status XML. To do this we need to handshake
with the child process, to make execution pause just before exec()
so we can write the XML status with the child PID present.

10 years agolxc: re-arrange startup synchronization sequence with controller
Daniel P. Berrange [Fri, 16 Jan 2015 15:03:16 +0000 (15:03 +0000)]
lxc: re-arrange startup synchronization sequence with controller

Currently the lxc controller process itself is responsible for
daemonizing itself into the background and writing out its pid
file. The lxc driver would fork the controller and then attempt
to connect to the lxc monitor. This connection would only
succeed after the controller has backgrounded itself, setup
cgroups and written its pid file, so startup was race free.

The problem is that we need to delay create of the cgroups to
much later, such that we can tell systemd the container init
pid when we create the cgroups. If we delay cgroup creation
though the current synchronization won't work.

A second problem is that the controller needs the XML config
of the guest. Currently we write out the plain virDomainDefPtr
XML before starting the controller, and then later replace it
with the full virDomainObjPtr status XML. This is kind of gross
and also means that the controller doesn't get a record of the
live XML config right away. This means it doesn't have a record
of the veth device names either and so can't give that info
to systemd when creating the cgroups.

To address this we change the startup sequencing. The goal
is that we want to get the PID as soon as possible, before
the LXC controller even starts. So we stop letting the LXC
controller daemonize itself, and instead use virCommand's
built-in capabilities. This daemonizes and writes the PID
before LXC controller is exec'd. So the driver can read
the PID as soon as virCommandRun returns. It is no longer
safe to connect to the monitor or detect the cgroups though.

Fortunately the LXC controller already has a second point
of synchronization. Immediately before its  event loop
starts running, it performs a handshake with the driver.
So we move the opening of the monitor connection and cgroup
detection after this synchronization point.

10 years agolxc: don't build pidfile string multiple times
Daniel P. Berrange [Fri, 16 Jan 2015 11:54:30 +0000 (11:54 +0000)]
lxc: don't build pidfile string multiple times

Build the pidfile string once when starting a guest and then
use the same string thereafter. This will benefit following
patches which need the pidfile string in more situations.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
10 years agosystemd: don't report an error if the guest is already terminated
Daniel P. Berrange [Fri, 16 Jan 2015 11:26:39 +0000 (11:26 +0000)]
systemd: don't report an error if the guest is already terminated

In many cases where we invoke virSystemdTerminateMachine the
process(es) will have already gone away on their own accord.
In these cases we log an error message that the machine does
not exist. We should catch this particular error and simply
ignore it, so we don't pollute the logs.

10 years agoqemu: report TAP device indexes to systemd
Daniel P. Berrange [Fri, 16 Jan 2015 11:25:50 +0000 (11:25 +0000)]
qemu: report TAP device indexes to systemd

Record the index of each TAP device created and report them to
systemd, so they show up in machinectl status for the VM.

10 years agoFix shadowed variable warning
Ján Tomko [Tue, 27 Jan 2015 12:36:10 +0000 (13:36 +0100)]
Fix shadowed variable warning

libvirtd.c: In function 'daemonSetupAccessManager':
libvirtd.c:730:18: error: declaration of 'driver' shadows
  a global declaration [-Werror=shadow]
     const char **driver = (const char **)config->access_drivers;
                  ^
In file included from libvirtd.c:95:0:
../src/node_device/node_device_driver.h:43:36: error: shadowed
  declaration is here [-Werror=shadow]
 extern virNodeDeviceDriverStatePtr driver;
                                    ^

10 years agostorage: add a flag to clone files on btrfs
Chen Hanxiao [Fri, 23 Jan 2015 10:22:35 +0000 (18:22 +0800)]
storage: add a flag to clone files on btrfs

When creating a RAW file, we don't take advantage
of clone of btrfs.

Add a VIR_STORAGE_VOL_CREATE_REFLINK flag to request
a reflink copy.

Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
10 years agostorage: introduce btrfsCloneFile() for COW copy
Chen Hanxiao [Fri, 23 Jan 2015 10:22:34 +0000 (18:22 +0800)]
storage: introduce btrfsCloneFile() for COW copy

Add a wrapper for BTRFS_IOC_CLONE ioctl.

Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
10 years agoRemoving probing of secondary drivers
Daniel P. Berrange [Tue, 20 Jan 2015 16:16:26 +0000 (16:16 +0000)]
Removing probing of secondary drivers

For stateless, client side drivers, it is never correct to
probe for secondary drivers. It is only ever appropriate to
use the secondary driver that is associated with the
hypervisor in question. As a result the ESX & HyperV drivers
have both been forced to do hacks where they register no-op
drivers for the ones they don't implement.

For stateful, server side drivers, we always just want to
use the same built-in shared driver. The exception is
virtualbox which is really a stateless driver and so wants
to use its own server side secondary drivers. To deal with
this virtualbox has to be built as 3 separate loadable
modules to allow registration to work in the right order.

This can all be simplified by introducing a new struct
recording the precise set of secondary drivers each
hypervisor driver wants

struct _virConnectDriver {
    virHypervisorDriverPtr hypervisorDriver;
    virInterfaceDriverPtr interfaceDriver;
    virNetworkDriverPtr networkDriver;
    virNodeDeviceDriverPtr nodeDeviceDriver;
    virNWFilterDriverPtr nwfilterDriver;
    virSecretDriverPtr secretDriver;
    virStorageDriverPtr storageDriver;
};

Instead of registering the hypervisor driver, we now
just register a virConnectDriver instead. This allows
us to remove all probing of secondary drivers. Once we
have chosen the primary driver, we immediately know the
correct secondary drivers to use.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
10 years agodon't disable state driver when libvirtd is not built
Daniel P. Berrange [Mon, 19 Jan 2015 16:56:04 +0000 (16:56 +0000)]
don't disable state driver when libvirtd is not built

A bunch of code is wrapped in #if WITH_LIBVIRTD in order to
enable the virStateDriver to be disabled when libvirtd is not
built. Disabling this code doesn't have any real functional
benefit beyond removing 1 pointer from the virConnectPtr struct,
while having a cost of many more conditionals.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
10 years agoRemove all secondary driver private data fields
Daniel P. Berrange [Fri, 14 Nov 2014 15:27:24 +0000 (15:27 +0000)]
Remove all secondary driver private data fields

Now all drivers are converted to use their global state
directly, there is no need for private data fields for
the secondary drivers in virConnectPtr

10 years agoRemove use of interfacePrivateData from udev driver
Daniel P. Berrange [Mon, 17 Nov 2014 17:09:00 +0000 (17:09 +0000)]
Remove use of interfacePrivateData from udev driver

The udev driver can be implemented using global state instead
of the connect private data.

10 years agoRemove use of nodeDevicePrivateData from nodeDev driver
Daniel P. Berrange [Mon, 17 Nov 2014 16:30:27 +0000 (16:30 +0000)]
Remove use of nodeDevicePrivateData from nodeDev driver

The node device driver can rely on its global state instead
of the connect private data.

10 years agoRemove use of storagePrivateData/networkPrivateData from vbox
Daniel P. Berrange [Fri, 14 Nov 2014 15:24:26 +0000 (15:24 +0000)]
Remove use of storagePrivateData/networkPrivateData from vbox

The vbox driver can use the main hypervisor private data and
so does not need to use the storage/network private data fields.

10 years agoRemove use of nwfilterPrivateData from nwfilter driver
Daniel P. Berrange [Fri, 7 Nov 2014 10:37:37 +0000 (11:37 +0100)]
Remove use of nwfilterPrivateData from nwfilter driver

The nwfilter driver can rely on its global state instead
of the connect private data.

10 years agoRemove use of secretPrivateData from secret driver
Daniel P. Berrange [Fri, 7 Nov 2014 10:28:58 +0000 (11:28 +0100)]
Remove use of secretPrivateData from secret driver

The secret driver can rely on its global state instead
of the connect private data.

10 years agoqemu: Fix job handling in qemuDomainSetMetadata
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job handling in qemuDomainSetMetadata

The code modifies the domain configuration but doesn't take a MODIFY
type job to do so.

10 years agoqemu: Fix job type in qemuDomainGetBlockIoTune
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job type in qemuDomainGetBlockIoTune

The function just queries status so there's no need for a MODIFY type
job.

10 years agoqemu: Fix job handling in qemuDomainSetSchedulerParametersFlags
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job handling in qemuDomainSetSchedulerParametersFlags

The code modifies the domain configuration but doesn't take a MODIFY
type job to do so.

10 years agoqemu: Fix job handling in qemuDomainSetMemoryParameters
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job handling in qemuDomainSetMemoryParameters

The code modifies the domain configuration but doesn't take a MODIFY
type job to do so.

10 years agoqemu: Fix job handling in qemuDomainSetAutostart
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job handling in qemuDomainSetAutostart

The code modifies the domain configuration but doesn't take a MODIFY
type job to do so.

This patch also fixes a few very long lines of code around the touched
parts.

10 years agoqemu: Fix job handling in qemuDomainPinEmulator
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job handling in qemuDomainPinEmulator

The code modifies the domain configuration but doesn't take a MODIFY
type job to do so.

10 years agoqemu: Fix job handling in qemuDomainPinVcpuFlags
Peter Krempa [Thu, 22 Jan 2015 08:56:38 +0000 (09:56 +0100)]
qemu: Fix job handling in qemuDomainPinVcpuFlags

The domain modifies the domain configuration but doesn't take a MODIFY
type job to do it.

10 years agoPost-release version bump for new dev cycle
Peter Krempa [Tue, 27 Jan 2015 08:28:15 +0000 (09:28 +0100)]
Post-release version bump for new dev cycle

10 years agoRelease of libvirt-1.2.12
Daniel Veillard [Tue, 27 Jan 2015 08:01:12 +0000 (16:01 +0800)]
Release of libvirt-1.2.12

* docs/news.html.in libvirt.spec.in: updated for the release
* po/*.po*: regenerated the po

10 years agotests: Check for virQEMUDriverConfigNew return value
Michal Privoznik [Mon, 26 Jan 2015 16:09:36 +0000 (17:09 +0100)]
tests: Check for virQEMUDriverConfigNew return value

The function may return NULL if something went wrong. In some places
in the tests we are not checking the return value rather than
accessing the pointer directly resulting in SIGSEGV.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
10 years agoFix a memory leak in virCgroupGetPercpuStats
Ján Tomko [Mon, 26 Jan 2015 09:20:22 +0000 (10:20 +0100)]
Fix a memory leak in virCgroupGetPercpuStats

Coverity reports that my commit af1c98e introduced
two memory leaks:
the cpumap if ncpus == 0 in virCgroupGetPercpuStats
and the params array in the test of the function.

10 years agoUse correct location for qcow1 encryption header
Ján Tomko [Fri, 23 Jan 2015 12:29:48 +0000 (13:29 +0100)]
Use correct location for qcow1 encryption header

After the 8-byte size header, there are two one-byte headers
and two bytes of padding before the crypt_header field.

Our QCOW1_HDR_CRYPT constant did not skip the padding.
http://git.qemu.org/?p=qemu.git;a=blob;f=block/qcow.c;h=ece22697#l41

https://bugzilla.redhat.com/show_bug.cgi?id=1185165

10 years agosystemd: avoid string comparisons on dbus error messages
Daniel P. Berrange [Thu, 22 Jan 2015 16:50:33 +0000 (16:50 +0000)]
systemd: avoid string comparisons on dbus error messages

Add a virDBusErrorIsUnknownMethod helper so that callers
don't need todo string comparisons themselves to detect
standard error names.

10 years agosystemd: fix build without dbus
Daniel P. Berrange [Mon, 19 Jan 2015 12:30:24 +0000 (12:30 +0000)]
systemd: fix build without dbus

The virDBusMethodCall method has a DBusError as one of its
parameters. If the caller wants to pass a non-NULL value
for this, it immediately makes the calling code require
DBus at build time. This has led to breakage of non-DBus
builds several times. It is desirable that only the virdbus.c
file should need WITH_DBUS conditionals, so we must ideally
remove the DBusError parameter from the method.

We can't simply raise a libvirt error, since the whole point
of this parameter is to give the callers a way to check if
the error is one they want to ignore, without having the logs
polluted with an error message. So, we add a virErrorPtr
parameter which the caller can then either ignore or raise
using the new virReportErrorObject method.

This new method is distinct from virSetError in that it
ensures the logging hooks are run.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
10 years agoaarch64: Support versioned machine types.
Richard W.M. Jones [Fri, 23 Jan 2015 14:48:25 +0000 (09:48 -0500)]
aarch64: Support versioned machine types.

For distros that want to add versioned machine types, they will add
(downstream) machine types like "virt-foo-1.2.3".  Detect these as
MMIO too.

Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
10 years agoqemu: Add check for PCI bridge placement if there are too many PCI devices
Erik Skultety [Fri, 23 Jan 2015 12:17:43 +0000 (13:17 +0100)]
qemu: Add check for PCI bridge placement if there are too many PCI devices

Previous patch of this series fixed the issue with adding a new PCI bridge
when all the slots were reserved by devices with user specified addresses.
In case there are still some PCI devices waiting to get a slot reserved
by qemuAssignDevicePCISlots, this means a new bus needs to be
created along with a corresponding bridge controller. By adding an
additional check, this scenario now results in a reasonable error
instead of generating wrong qemu command line.

10 years agoqemu: Fix auto-adding PCI bridge when all slots are reserved
Erik Skultety [Fri, 23 Jan 2015 12:17:42 +0000 (13:17 +0100)]
qemu: Fix auto-adding PCI bridge when all slots are reserved

Commit 93c8ca tried to fix the issue with auto-adding of a PCI bridge
controller, but didn't work properly in all scenarios.

This patch provides a better fix of the issue when all slots on a PCI bus
are reserved by devices with user specified addresses and no additional
bridges need to be created.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1132900

10 years agoqemu: move PCI slot assignment for PIIX3, Q35 into a separate function
Erik Skultety [Fri, 23 Jan 2015 12:17:41 +0000 (13:17 +0100)]
qemu: move PCI slot assignment for PIIX3, Q35 into a separate function

In order to be able to test for fully reserved PCI buses, assignment of
PCI slots for integrated devices needs to be moved to a separate function.
This also might be a good preparation if we decide to add support for
other chipsets as well.

10 years agoqemu: reorder PCI slot assignment functions
Erik Skultety [Fri, 23 Jan 2015 12:17:40 +0000 (13:17 +0100)]
qemu: reorder PCI slot assignment functions

Move qemuDomainAssignPCIAddresses after the definition
of the static function qemuDomainValidateDevicePCISlotsQ35.

This lets us define a new static function using
qemuDomainValidateDevicePCISlots* and use it in
qemuDomainAssignPCIAddresses without a forward declaration.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
10 years agoschemas: Move definition of 'hexuint' to basictypes
Peter Krempa [Thu, 11 Dec 2014 13:50:11 +0000 (14:50 +0100)]
schemas: Move definition of 'hexuint' to basictypes

Allow reuse of the type.

10 years agoutil: json: Make argument of virJSONValueArraySize const
Peter Krempa [Thu, 15 Jan 2015 13:40:48 +0000 (14:40 +0100)]
util: json: Make argument of virJSONValueArraySize const

The function doesn't allow to modify the array in any way, thus the
argument can be const.

10 years agoqemu: command: Honor const-correctnes in qemuBuildNumaArgStr
Peter Krempa [Fri, 9 Jan 2015 14:47:10 +0000 (15:47 +0100)]
qemu: command: Honor const-correctnes in qemuBuildNumaArgStr

@def is modified in the function indirectly although it's marked as
const.

10 years agoconf: Fix comment mentioning actual type of @multi member of virDevicePCIAddress
Peter Krempa [Tue, 20 Jan 2015 18:38:00 +0000 (19:38 +0100)]
conf: Fix comment mentioning actual type of @multi member of virDevicePCIAddress

After refactor to use the virTristateSwitch enum the comment in the
struct was not adjusted.

10 years agoGrant access to helpers
Mike Latimer [Tue, 20 Jan 2015 01:25:41 +0000 (18:25 -0700)]
Grant access to helpers

Apparmor must not prevent access to required helper programs. The following
helpers should be allowed to run in unconfined execution mode:

 - libvirt_parthelper
 - libvirt_iohelper

10 years agoFix apparmor issues for tck
Mike Latimer [Tue, 20 Jan 2015 01:25:42 +0000 (18:25 -0700)]
Fix apparmor issues for tck

The network and nwfilter tests contained in the libvirt-TCK testkit can fail
unless access to raw network packets is granted. Without this access, the
following apparmor error can be seen while running the tests:

  apparmor="DENIED" operation="create" parent=1 profile="/usr/sbin/libvirtd"
  pid=94731 comm="libvirtd" family="packet" sock_type="raw" protocol=768

10 years agoFix apparmor issues for Xen
Mike Latimer [Tue, 20 Jan 2015 01:25:40 +0000 (18:25 -0700)]
Fix apparmor issues for Xen

In order for apparmor to work properly in Xen environments, the following
access rights need to be allowed:

 - Allow CAP_SYS_PACCT, which is required when resetting some multi-port
   Broadcom cards by writting to the PCI config space

 - Allow CAP_IPC_LOCK, which is required to lock/unlock memory. Without
   this setting, an error 'Resource temporarily unavailable' can be seen
   while attempting to mmap memory. At the same time, the following
   apparmor message is seen:

   apparmor="DENIED" operation="capable" parent=1 profile="/usr/sbin/libvirtd"
   pid=2097 comm="libvirtd" pid=2097 comm="libvirtd" capability=14
   capname="ipc_lock"

 - Allow access to distribution specific directories:
     /usr/{lib,lib64}/xen/bin

10 years agoconf: virDomainDefMaybeAddController tweak return code
Erik Skultety [Wed, 21 Jan 2015 16:49:51 +0000 (17:49 +0100)]
conf: virDomainDefMaybeAddController tweak return code

Previously the function returned either -1 in case of an error or 0 on
success. However, we should also distinguish between a case we
successfully added a controller and a case there wasn't a need to add any
controller

10 years agoqemu: Remove dead code in qemuDomainAssignPCIAddresses revert patch
Erik Skultety [Wed, 21 Jan 2015 16:49:24 +0000 (17:49 +0100)]
qemu: Remove dead code in qemuDomainAssignPCIAddresses revert patch

As it turned out, fix of dead code 419a22 changed the affected condition
from "never true" to "always true", so better fix would be to change the
return code of virDomainMaybeAddController from 0 to 1 if
a new bridge has been added, thus distinguishing case when we didn't need to
add any controller and case we successfully added one.

The return code is changed in the next commit

10 years agoFix build with older gcc
Ján Tomko [Fri, 23 Jan 2015 09:30:01 +0000 (10:30 +0100)]
Fix build with older gcc

My commit af1c98e4 broke the build on RHEL-6:
vircgrouptest.c: In function 'testCgroupGetPercpuStats':
vircgrouptest.c:566: error: nested extern declaration of
'_gl_verify_function2' [-Wnested-externs]

The only thing that needs checking is that the array size
is at least EXPECTED_NCPUS, to prevent access beyond the array.

We can ensure the minimum size also by specifying the array
size upfront.

10 years agoesx_vi: fix possible segfault
Pavel Hrdina [Wed, 21 Jan 2015 10:17:52 +0000 (11:17 +0100)]
esx_vi: fix possible segfault

Clang found possible dereference of NULL pointer which is right.
Function 'esxVI_LookupTaskInfoByTask' should find a task info. The issue
is that we could return 0 and leave 'taksInfo' pointer NULL because if
there is no match we simply end the search loop end set 'result' to 0.
Every caller count on the fact that if the return value is 0 than it's
safe to dereference 'taskInfo'. We should return 0 only in case we found
something and the '*taskInfo' is not NULL.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
10 years agoxenapi_driver: fix copy-paste typo
Pavel Hrdina [Wed, 21 Jan 2015 10:13:31 +0000 (11:13 +0100)]
xenapi_driver: fix copy-paste typo

Clang found that we are passing variable with wrong enum type to
'xenapiCrashExitEnum2virDomainLifecycle' function. This is probably
copy-paste typo as the correct variable exists in the code, but it isn't
used.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
10 years agoFix virCgroupGetPercpuStats with non-continuous present CPUs
Ján Tomko [Thu, 22 Jan 2015 10:54:50 +0000 (11:54 +0100)]
Fix virCgroupGetPercpuStats with non-continuous present CPUs

Per-cpu stats are only shown for present CPUs in the cgroups,
but we were only parsing the largest CPU number from
/sys/devices/system/cpu/present and looking for stats even for
non-present CPUs.
This resulted in:
internal error: cpuacct parse error

10 years agoCVE-2015-0236: qemu: Check ACLs when dumping security info from snapshots
Peter Krempa [Tue, 20 Jan 2015 16:01:01 +0000 (17:01 +0100)]
CVE-2015-0236: qemu: Check ACLs when dumping security info from snapshots

The ACL check didn't check the VIR_DOMAIN_XML_SECURE flag and the
appropriate permission for it. Found via code inspection while fixing
permissions for save images.

10 years agoCVE-2015-0236: qemu: Check ACLs when dumping security info from save image
Peter Krempa [Tue, 20 Jan 2015 16:01:01 +0000 (17:01 +0100)]
CVE-2015-0236: qemu: Check ACLs when dumping security info from save image

The ACL check didn't check the VIR_DOMAIN_XML_SECURE flag and the
appropriate permission for it.

10 years agoqemu: output error when try to hotplug unsupported console type
Luyao Huang [Thu, 22 Jan 2015 02:28:18 +0000 (10:28 +0800)]
qemu: output error when try to hotplug unsupported console type

https://bugzilla.redhat.com/show_bug.cgi?id=1164627

When using 'virsh attach-device' to hotplug an unsupported console type
into a qemu guest the attachment would succeed as the command line
formatter didn't report error in such case.

Signed-off-by: Luyao Huang <lhuang@redhat.com>
10 years agoqemu: format server interface without a listen address
Ján Tomko [Tue, 20 Jan 2015 12:34:10 +0000 (13:34 +0100)]
qemu: format server interface without a listen address

https://bugzilla.redhat.com/show_bug.cgi?id=1130390

The listen address is not mandatory for <interface type='server'>
but when it's not specified, we've been formatting it as:
-netdev socket,listen=(null):5558,id=hostnet0
which failed with:
Device 'socket' could not be initialized

Omit the address completely and only format the port in the listen
attribute.

Also fix the schema to allow specifying a model.