libvirt.git
42 hours agoqemu_driver: live/config checks cleanup master
Pavel Hrdina [Wed, 1 Jul 2015 09:58:04 +0000]
qemu_driver: live/config checks cleanup

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>

42 hours agobetter patch for the XSS search issue
Daniel Veillard [Fri, 3 Jul 2015 13:04:24 +0000]
better patch for the XSS search issue

Since the query string could be output when displaying the results too

42 hours agoAvoid XSS vulnerability on the search engine
Daniel Veillard [Fri, 3 Jul 2015 12:47:08 +0000]
Avoid XSS vulnerability on the search engine

Raised by https://www.xssposed.org/incidents/69566/
Need to escape the user provided query before displaying it back

2 days agovz: fix SDK event dispatching
Nikolay Shirokovskiy [Thu, 25 Jun 2015 08:56:00 +0000]
vz: fix SDK event dispatching

Current version of SDK event dispatcing is incorrect. For most VM events (add,
delete etc) issuer type is PIE_DISPATCHER. Actually analyzing issuer type
doesn't have any benifints so this patch get rid of it. All dispatching is done
only on event type.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

2 days agoutil: Avoid Coverity FORWARD_NULL
John Ferlan [Wed, 1 Jul 2015 13:35:43 +0000]
util: Avoid Coverity FORWARD_NULL

Avoid a false positive since Coverity find a path in virResizeN which
could return 0 prior to the allocation of memory and thus flags a
possible NULL dereference. Instead allocate the output buffer based
on 'nparams' and only fill it partially if need be - shouldn't be too
much a waste of space. Quicker than multiple VIR_RESIZE_N calls or
two loops of STREQ's sandwiched around a single VIR_ALLOC_N using
'n' matches from a first loop to generate the 'n' addresses to return

Signed-off-by: John Ferlan <jferlan@redhat.com>

2 days agovirsh: report error if vcpu number exceed the guest maxvcpu number
Luyao Huang [Mon, 29 Jun 2015 02:10:15 +0000]
virsh: report error if vcpu number exceed the guest maxvcpu number

Commit id '81dd81e' caused a regression when attempting to print a
specific vcpuid that is out of the range of the maximum vcpus for
the guest, such as:

 $ virsh vcpupin $dom 1000
 VCPU: CPU Affinity
 ----------------------------------

 $

Rather than just recover the old message, let's adjust the message based
on what would be displayed for a similar failure in the set path, such as:

 $ virsh vcpupin $dom 1000
 error: vcpu 1000 is out of range of persistent cpu count 2

 $ virsh vcpupin $dom 1000 --live
 error: vcpu 1000 is out of range of live cpu count 2

 $

Signed-off-by: Luyao Huang <lhuang@redhat.com>

2 days agovirt-aa-helper: Fix permissions for vhost-user socket files
Michal Dubiel [Wed, 1 Jul 2015 08:15:29 +0000]
virt-aa-helper: Fix permissions for vhost-user socket files

QEMU working in vhost-user mode communicates with the other end (i.e.
some virtual router application) via unix domain sockets. This requires
that permissions for the socket files are correctly written into
/etc/apparmor.d/libvirt/libvirt-UUID.files.

Signed-off-by: Michal Dubiel <md@semihalf.com>

2 days agoPost-release version bump to 1.2.18
Michal Privoznik [Thu, 2 Jul 2015 08:41:27 +0000]
Post-release version bump to 1.2.18

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

2 days agocpu_map.xml: Expand Opteron_G4 CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:14:22 +0000]
cpu_map.xml: Expand Opteron_G4 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Opteron_G2 CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:12:27 +0000]
cpu_map.xml: Expand Opteron_G2 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Opteron_G1 CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:11:53 +0000]
cpu_map.xml: Expand Opteron_G1 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Broadwell-noTSX CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:10:28 +0000]
cpu_map.xml: Expand Broadwell-noTSX CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Haswell-noTSX CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:10:28 +0000]
cpu_map.xml: Expand Haswell-noTSX CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand SandyBridge CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:08:40 +0000]
cpu_map.xml: Expand SandyBridge CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Westmere CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:06:32 +0000]
cpu_map.xml: Expand Westmere CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Nehalem CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:05:47 +0000]
cpu_map.xml: Expand Nehalem CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Penryn CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:04:24 +0000]
cpu_map.xml: Expand Penryn CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand Conroe CPU model
Jiri Denemark [Tue, 23 Jun 2015 13:03:07 +0000]
cpu_map.xml: Expand Conroe CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand kvm64 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:47:08 +0000]
cpu_map.xml: Expand kvm64 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand cpu64-rhel5 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:45:51 +0000]
cpu_map.xml: Expand cpu64-rhel5 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand kvm32 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:43:52 +0000]
cpu_map.xml: Expand kvm32 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand qemu32 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:42:43 +0000]
cpu_map.xml: Expand qemu32 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand n270 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:40:28 +0000]
cpu_map.xml: Expand n270 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand coreduo CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:39:27 +0000]
cpu_map.xml: Expand coreduo CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand pentiumpro CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:38:06 +0000]
cpu_map.xml: Expand pentiumpro CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand pentium2 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:36:15 +0000]
cpu_map.xml: Expand pentium2 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand pentium CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:34:41 +0000]
cpu_map.xml: Expand pentium CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Expand 486 CPU model
Jiri Denemark [Tue, 23 Jun 2015 12:33:39 +0000]
cpu_map.xml: Expand 486 CPU model

Inheritance among CPU model is cool but it makes reviewing CPU model
definitions and comparing them to CPU models from QEMU rather hard and
unpleasant. Let's define all CPU models from scratch.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

2 days agocpu_map.xml: Sort features in x86 CPU models
Jiri Denemark [Tue, 23 Jun 2015 06:55:08 +0000]
cpu_map.xml: Sort features in x86 CPU models

Sorted feature list is easier to review or compare.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

3 days agoRelease of libvirt-1.2.17 v1.2.17
Daniel Veillard [Thu, 2 Jul 2015 05:22:30 +0000]
Release of libvirt-1.2.17

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

3 days agophyp: Resolve Coverity FORWARD_NULL
John Ferlan [Wed, 1 Jul 2015 10:32:34 +0000]
phyp: Resolve Coverity FORWARD_NULL

Commit id 'cd490086' added a VIR_FORCE_CLOSE of the 'sock', but it
was after the VIR_FREE() of phyp_driver, resulting in a possible/likely
NULL dereference.

Signed-off-by: John Ferlan <jferlan@redhat.com>

3 days agoutil: Resolve Coverity FORWARD_NULL
John Ferlan [Tue, 30 Jun 2015 19:53:53 +0000]
util: Resolve Coverity FORWARD_NULL

Convert virPCIDriverDir to return the buffer allocated (or not) and make the
appropriate check in the caller.

Signed-off-by: John Ferlan <jferlan@redhat.com>

3 days agoutil: Resolve Coverity FORWARD_NULL
John Ferlan [Tue, 30 Jun 2015 19:49:05 +0000]
util: Resolve Coverity FORWARD_NULL

Convert virPCIDriverFile to return the buffer allocated (or not) and make the
appropriate check in the caller.

Signed-off-by: John Ferlan <jferlan@redhat.com>

3 days agoutil: Resolve Coverity FORWARD_NULL
John Ferlan [Tue, 30 Jun 2015 19:23:31 +0000]
util: Resolve Coverity FORWARD_NULL

Convert virPCIFile to return the buffer allocated (or not) and make the
appropriate check in the caller.

Signed-off-by: John Ferlan <jferlan@redhat.com>

3 days agolxc: Don't pass a local variable address randomly
Michal Privoznik [Wed, 1 Jul 2015 15:21:28 +0000]
lxc: Don't pass a local variable address randomly

So, recently I was testing the LXC driver. You know, startup some
domains. But to my surprise, I was not able to start a single one:

  virsh # start --console test
  error: Reconnected to the hypervisor
  error: Failed to start domain test
  error: internal error: guest failed to start: unexpected exit status 125

So I've start digging. It turns out, that in virExec(), when I printed
out the @cmd, I got strange values: *(cmd->outfdptr) was certainly not
valid FD number: it has random value of several millions. This
obviously made prepareStdFd(childout, STDOUT_FILENO) fail (line 611).
But outfdptr is set in virCommandSetOutputFD(). The only place within
LXC driver where the function is called is in
virLXCProcessBuildControllerCmd(). If you take a closer look at the
function it looks like this:

static virCommandPtr
virLXCProcessBuildControllerCmd(virLXCDriverPtr driver,
                                ..
                                int logfd,
                                const char *pidfile)
{
    ...
    virCommandSetOutputFD(cmd, &logfd);
    virCommandSetErrorFD(cmd, &logfd);
    ...
}

Yes, you guessed it. @logfd is passed into the function by value.
However, in the function we try to get its address (an address of a
local variable) which is no longer valid once function is finished and
stack is cleaned. Therefore when cmd->outfdptr is evaluated at any
point after this function, we may get a random number, depending on
what's currently on the stack. Of course, this may work sometimes too
- it depends on the compiler how it arranges the code, when the stack
is wiped out.

In order to fix this, lets pass a pointer to @logfd instead of
figuring out (wrong) its value in a function.

The bug was introduced in e1de5521.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

3 days agoqemu: Resolve Coverity DEADCODE
John Ferlan [Wed, 1 Jul 2015 10:28:12 +0000]
qemu: Resolve Coverity DEADCODE

Commit id 'f967e7a6' didn't place the closing parentheses quite right
causing DEADCODE errors since the rc setting/comparison was wrong.

3 days agoconf: qemu: Taint VMs using custom device tree blob
Peter Krempa [Fri, 26 Jun 2015 08:59:33 +0000]
conf: qemu: Taint VMs using custom device tree blob

Using a custom device tree image may cause unexpected behavior in
architectures that use this approach to detect platform devices. Since
usually the device tree is generated by qemu and thus it's not normally
used let's taint VMs using it to make it obvious as a possible source of
problems.

3 days agoqemu: Audit memory size with memory hotplug operations
Peter Krempa [Fri, 26 Jun 2015 15:14:33 +0000]
qemu: Audit memory size with memory hotplug operations

The memory device hot(un)plug was missing calls to the auditing code.

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

3 days agoconf: audit: Audit physical memory size rather than balloon request
Peter Krempa [Fri, 26 Jun 2015 15:12:39 +0000]
conf: audit: Audit physical memory size rather than balloon request

Since the balloon driver does not guarantee that it returns memory to
the host, using the value in the audit message is not a good idea.

This patch removes auditing from updating the balloon size and reports
the total physical size at startup.

3 days agoqemu: Avoid using ".(null)" in UNIX socket path
Jiri Denemark [Tue, 30 Jun 2015 11:34:20 +0000]
qemu: Avoid using ".(null)" in UNIX socket path

The code which generates paths for UNIX socket blindly used target name
without checking if it was set. Thus for the following device XML

    <channel type='unix'>
      <source mode='bind'/>
      <target type='virtio'/>
    </channel>

we would generate "/var/lib/libvirt/qemu/channel/target/NAME.(null)"
path which works but is not really correct. Let's not use the
".target_name" suffix at all if target name is not set.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

4 days agoqemu: agent: Don't automatically disable CPU0 via guest agent
Peter Krempa [Fri, 26 Jun 2015 11:58:20 +0000]
qemu: agent: Don't automatically disable CPU0 via guest agent

While CPU0 was made unpluggable in Linux a while ago it's not desirable
to unplug it since some parts of the kernel (suspend-to-ram) still
depend on it.

This patch fixes the vCPU selection code in libvirt so that it will not
be disabled.

4 days agoqemu: End job even if exiting monitor after OpenGraphics(FD) fails
Luyao Huang [Tue, 30 Jun 2015 03:35:13 +0000]
qemu: End job even if exiting monitor after OpenGraphics(FD) fails

Signed-off-by: Luyao Huang <lhuang@redhat.com>

4 days agoqemu: properly free addresses on non-serial chardev unplug
Ján Tomko [Tue, 30 Jun 2015 13:48:20 +0000]
qemu: properly free addresses on non-serial chardev unplug

The target type comparison in qemuDomainDetachChrDevice
used the VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE enum, so virtio-serial
addresses were not freed properly for channel devices.

Call qemuDomainReleaseDeviceAddress uncoditionally and decide
based on the address type instead of the target/device types.

4 days agoqemu: fix address allocation on chardev attach
Luyao Huang [Wed, 10 Jun 2015 14:49:37 +0000]
qemu: fix address allocation on chardev attach

Also check the device type when deciding what type the address should
be. Commit 9807c47 (aiming to fix another error in address allocation)
only checked the target type, but its value is different for different
device types. This resulted in an error when trying to attach
a channel with target type 'virtio':

error: Failed to attach device from channel-file.xml
error: internal error: virtio serial device has invalid address type

Make the logic for releasing the address dependent only on
* the address type
* whether it was allocated earlier
to avoid copying the device and target type checks.

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

Signed-off-by: Luyao Huang <lhuang@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>

4 days agolibxl: Set def->vcpus after successfully modifying live vcpu count v1.2.17-rc2
Jim Fehlig [Mon, 29 Jun 2015 16:46:36 +0000]
libxl: Set def->vcpus after successfully modifying live vcpu count

def->vcpus was never updated after successfully changing the live
vcpu count of a domain. Subsequent queries for vcpu info would
return incorrect results.  E.g.:

virsh vcpucount test
maximum      config         4
maximum      live           4
current      config         4
current      live           4

virsh setvcpus test 2

virsh vcpucount test
maximum      config         4
maximum      live           4
current      config         4
current      live           4

After patch, live current config is reported correctly:

virsh vcpucount test
maximum      config         4
maximum      live           4
current      config         4
current      live           2

While fixing this, noticed that the live config was not saved
to cfg->stateDir via virDomainSaveStatus. Save the live config
and change error handling of virDomainSave{Config,Status} to
log a message via VIR_WARN, instead of failing the entire
DomainSetVcpusFlags operation.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>

4 days agolibxl: honor domainGetXMLDesc() --inactive flag
Jim Fehlig [Wed, 24 Jun 2015 22:15:22 +0000]
libxl: honor domainGetXMLDesc() --inactive flag

The libxl driver always uses virDomainObj->def when formatting
the domain XML description.  Use virDomainObj->newDef when
--inactive flag is set.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>

4 days agolibxl: don't remove persistent domain on start failure
Jim Fehlig [Wed, 24 Jun 2015 21:14:41 +0000]
libxl: don't remove persistent domain on start failure

libxlDomainCreateXML() would remove a persistent domain if
libxlDomainStart() failed.  Check if domain is persistent
before removing.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>

4 days agolibxl: don't overwrite domain state from statedir config
Jim Fehlig [Wed, 24 Jun 2015 21:02:15 +0000]
libxl: don't overwrite domain state from statedir config

When restarting libvirtd and reconnecting to running domains,
libxlReconnectDomain() would unconditionally set the domain state
to VIR_DOMAIN_RUNNING, overwriting the state maintained in
$statedir/<domname>.xml.  A domain in a paused state would have
the state changed to running, even though it was actually in a
paused state.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>

4 days agoqemu: Add missing on_crash lifecycle type
John Ferlan [Mon, 29 Jun 2015 19:22:49 +0000]
qemu: Add missing on_crash lifecycle type

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

When the domain "<on_crash>coredump-destroy</on_crash>" is set, the
domain wasn't being destroyed, rather it was being rebooted.

Add VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_DESTROY to the list of
on_crash types that cause "-no-reboot" to be added to the qemu
command line.

4 days agoUse the correct symbol for 'onCrash'
John Ferlan [Mon, 29 Jun 2015 19:22:28 +0000]
Use the correct symbol for 'onCrash'

Although defined the same way, fortunately there hadn't been any deviation.
Ensure any assignments to onCrash use VIR_DOMAIN_LIFECYCLE_CRASH_* defs and
not VIR_DOMAIN_LIFECYCLE_* defs

4 days agompath: Don't allow more than one mpath pool at a time
John Ferlan [Wed, 24 Jun 2015 12:45:24 +0000]
mpath: Don't allow more than one mpath pool at a time

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

Since an mpath pool contains all the Multipath devices on a host, allowing
more than one defined on a host at a time should be disallowed under the
policy of disallowing duplicate source pools for the host.

Adjust to docs to clarify the Multipath target path value usage for both
the storage driver (only 1 pool per host) and formatstorage references
(ignore the target element in favor of the default target mapping of
/dev/mapper).

4 days agompath: Update path in CheckPool function
John Ferlan [Wed, 24 Jun 2015 11:46:47 +0000]
mpath: Update path in CheckPool function

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

Per the devmapper docs, use "/dev/mapper" or "/dev/dm-n" in order to
determine if a device is under control of DM Multipath.

So add "/dev/mapper" to the virFileExists, leaving the "/dev/mpath"
as a "legacy" option since it appears for a while it was the preferred
mechanism, but is no longer maintained

4 days agoconf: Validate disk lun using correct types
John Ferlan [Fri, 26 Jun 2015 17:48:06 +0000]
conf: Validate disk lun using correct types

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

The formatdomain.html description for <disk> device 'lun' indicates that
it must be either a type 'block' or type 'network' with protocol 'iscsi';
however, we did not make that check until domain startup.

This caused issues for virt-manager which had an unexpected failure at
run time rather config time.

This patch adds a check in post part disk device checking for the specific
and supported lun types as well as adjusting the test failure to be for
parse config rather than run time.

4 days agoStorage: Introduce shadow vol for refresh while the main vol builds.
Prerna Saxena [Fri, 26 Jun 2015 11:35:11 +0000]
Storage: Introduce shadow vol for refresh while the main vol builds.

Libvirt periodically refreshes all volumes in a storage pool, including
the volumes being cloned.
While cloning a storage volume from parent, we drop pool locks. Subsequent
volume refresh sometimes changes allocation for an ongoing copy, and leads
to corrupt images.
Fix: Introduce a shadow volume that isolates the volume object under refresh
from the base which has a copy ongoing.

Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>

4 days agoconf: storage: Fix duplicate check for gluster pools
Peter Krempa [Tue, 30 Jun 2015 08:14:17 +0000]
conf: storage: Fix duplicate check for gluster pools

The pool name has to be the same too to warrant rejecting a pool
definition as duplicate. This regression was introduced in commit
2184ade3a0546b915252cb3b6a5dc88e9a8d2ccf.

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

4 days agoqemu: event: Clean up VNC monitor handling
Peter Krempa [Mon, 29 Jun 2015 15:03:14 +0000]
qemu: event: Clean up VNC monitor handling

Get rid of spice specific stuff from the handler func and save a few
lines by reflowing the conditions.

4 days agoqemu: event: Properly handle spice events
Peter Krempa [Mon, 29 Jun 2015 14:10:51 +0000]
qemu: event: Properly handle spice events

Spice events have mostly similar information present in the event JSON
but they differ in the name of the element containing the port.

The JSON event also provides connection ID which might be useful in the
future.

This patch splits up the event parser code into two functions and the
SPICE reimplements the event parsing with correct names and drops the
VNC only stuff.

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

4 days agoRevert "Introduce QEMU_CAPS_ARM_VIRT_PCI"
Peter Krempa [Mon, 29 Jun 2015 07:44:35 +0000]
Revert "Introduce QEMU_CAPS_ARM_VIRT_PCI"

The capability was not used up to the feature freeze.

This reverts commit 7f3515b4bb677d0ead1887547efc844e4761268a.

4 days agoqemu: Close the agent connection only on agent channel events
Peter Krempa [Tue, 30 Jun 2015 08:46:50 +0000]
qemu: Close the agent connection only on agent channel events

processSerialChangedEvent processes events for all channels. Commit
2af51483 broke all agent interaction if a channel other than the agent
closes since it did not check that the event actually originated from
the guest agent channel.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1236924
Fixes up: https://bugzilla.redhat.com/show_bug.cgi?id=890648

4 days agostorage: Set correct vol->type at VolCreate
John Ferlan [Mon, 29 Jun 2015 18:18:49 +0000]
storage: Set correct vol->type at VolCreate

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

If the requested format type for the new entry in the file system pool
is a 'dir', then be sure to set the vol->type correctly as would be done
when the pool is refreshed.

4 days agoFix typo incomaptible -> incompatible
Andrea Bolognani [Tue, 30 Jun 2015 08:53:55 +0000]
Fix typo incomaptible -> incompatible

4 days agoqemu: Fix assignment of the default spicevmc channel name
Jiri Denemark [Tue, 30 Jun 2015 08:21:21 +0000]
qemu: Fix assignment of the default spicevmc channel name

Make sure we only assign the default spicevmc channel name to spicevmc
virtio channels. Caused by commits 3269ee65 and 1133ee2b, which moved
the assignment from XML parsing code to QEMU but failed to keep the
logic.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

5 days agoqemuxml2argv: Remove Haswell CPU from unrelated tests
Jiri Denemark [Mon, 29 Jun 2015 11:19:21 +0000]
qemuxml2argv: Remove Haswell CPU from unrelated tests

Proper Haswell CPU model handling is tested in several
qemuxml2argv-cpu-* which are run in a special environment. Let's remove
the CPU model from other tests to make them less fragile.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>

7 days agoRevert "Change livbirt version to 1.3.0 for the next release" v1.2.17-rc1
Martin Kletzander [Fri, 26 Jun 2015 15:26:30 +0000]
Revert "Change livbirt version to 1.3.0 for the next release"

This reverts commit 9a8d916e89173890d7f7ce538b1ab781192b8440.

Also some changes that were introduced after that commit are fixed to
use 1.2.17 instead of 1.3.0

7 days agoTemporarily disable admin API
Martin Kletzander [Fri, 26 Jun 2015 15:26:29 +0000]
Temporarily disable admin API

Don't listen on the admin socket in the daemon and comment out the
admin devel files out of specfile.

Library is still being compiled and installed in order to link easily
without any disturbing modifications to the daemon code.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>

7 days agospec: Remove admin package specification
Martin Kletzander [Fri, 26 Jun 2015 15:26:28 +0000]
spec: Remove admin package specification

Its only file must be included in the daemon package anyway, since the
daemon is linked with the admin library and so then it's just an empty
package until we have virt-admin binary which we can decide later on
whether to just move it to clients or create a new package for it.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>

7 days agoqemu: Resolve Coverity RESOURCE_LEAK
John Ferlan [Sat, 27 Jun 2015 10:41:59 +0000]
qemu: Resolve Coverity RESOURCE_LEAK

Commit id '15fa84acb' added the alias fetch, but forgot to free it.

8 days agodocs: Clarification for when allowed to use 'lun' for "volume"
John Ferlan [Fri, 26 Jun 2015 18:09:59 +0000]
docs: Clarification for when allowed to use 'lun' for "volume"

While re-reading what I wrote for commit id '785a8940e', I realized
I needed to clarify that being able to present as a 'lun', the mode
property for the pool source element needed to be "host" (or empty)
and not "direct".

It was described correctly later in the mode host description, but
this just ensures it's not missed here as well.

Signed-off-by: John Ferlan <jferlan@redhat.com>

8 days agodocs: document when pcie-root/dmi-to-pci-bridge support was added
Laine Stump [Fri, 12 Jun 2015 18:54:23 +0000]
docs: document when pcie-root/dmi-to-pci-bridge support was added

Also move the mention of version numbers for the various PCI
controller models up to the end of the sentence where they are first
given, to avoid confusion.

8 days agoqemu: ignore assumptions about hotplug requirement when address is from config
Laine Stump [Wed, 10 Jun 2015 18:15:25 +0000]
qemu: ignore assumptions about hotplug requirement when address is from config

Certain PCI buses don't support hotplug, and when automatically
assigning PCI addresses for devices, libvirt is very conservative in
its assumptions about whether or not a device will need to be
hotplugged/unplugged in the future. But if the user manually assigns
an address, they likely are aware of any hotplug requirements of the
device (or at least they should be).

In short, after this patch, automatically PCI address assignment will
assume that the device must be plugged in to a hot-pluggable slot, but
manually assignment can place the device in any bus that is
compatible, regardless of whether or not it supports hotplug. If the
user makes a mistake and plugs the device into a bus that doesn't
support hotplug, then later tries to do a hot-unplug, qemu will give
an appropriate error.

(in the future we may want to add a "hotpluggable" attribute to all
devices, with default being "yes" for autoassign, and "no" for manual
assign).

8 days agoqemu: always permit PCI devices to be manually assigned to a PCIe bus
Laine Stump [Tue, 9 Jun 2015 17:33:36 +0000]
qemu: always permit PCI devices to be manually assigned to a PCIe bus

When support for the pcie-root and dmi-to-pci-bridge buses on a Q35
machinetype was added, I was concerned that even though qemu at the
time allowed plugging a PCI device into a PCIe port, that it might not
be supported in the future. To prevent painful backtracking in the
possible future where this happened, I disallowed such connections
except in a few specific cases requested by qemu developers (indicated
in the code with the flag VIR_PCI_CONNECT_TYPE_EITHER_IF_CONFIG).

Now that a couple years have passed, there is a clear message from
qemu that there is no danger in allowing PCI devices to be plugged
into PCIe ports. This patch eliminates
VIR_PCI_CONNECT_TYPE_EITHER_IF_CONFIG and changes the code to always
allow PCI->PCIe or PCIe->PCI connection *when the PCI address is
specified in the config. (For newly added devices that haven't yet
been given a PCI address, the auto-placement still prefers using the
correct type of bus).

8 days agoqemu: refactor qemuBuildControllerDevStr to eliminate future duplicate code
Laine Stump [Tue, 16 Jun 2015 19:22:57 +0000]
qemu: refactor qemuBuildControllerDevStr to eliminate future duplicate code

The PCI case of the switch statement in this function contains another
switch statement with a case for each model. Currently every model
except pci-root and pcie-root has a check for index > 0 (since only
those two can have index==0), and the function should never be called
for those two anyway. If we move the check for !pci[e]-root to the top
of the pci case, then we can move the check for index > 0 out of the
individual model cases. This will save repeating that check for the
three new controller models about to be added.

8 days agotest: qemu: Make sure that wr_highest_offset_valid gets set properly
Peter Krempa [Fri, 26 Jun 2015 14:40:29 +0000]
test: qemu: Make sure that wr_highest_offset_valid gets set properly

Remove one instance of the field being present so that the code that
sets that flag can be tested.

8 days agoqemu: monitor: Remove qemuMonitorGetBlockExtent
Peter Krempa [Tue, 23 Jun 2015 12:43:00 +0000]
qemu: monitor: Remove qemuMonitorGetBlockExtent

Now that qemuMonitorGetAllBlockStatsInfo collects also wr_highest_offset
the whole function can be killed.

8 days agoqemu: Refactor qemuDomainGetBlockInfo
Peter Krempa [Tue, 23 Jun 2015 16:22:54 +0000]
qemu: Refactor qemuDomainGetBlockInfo

Change the code so that it queries the monitor when the VM is alive.

8 days agoqemu: monitor: Open-code retrieval of wr_highest_offset
Peter Krempa [Tue, 23 Jun 2015 14:58:07 +0000]
qemu: monitor: Open-code retrieval of wr_highest_offset

Instead of using qemuMonitorJSONDevGetBlockExtent (which I plan to
remove later) extract the data in place.

Additionally add a flag that will be set when the wr_highest_offset was
extracted correctly so that callers can act according to that.

The test case addition should help make sure that everything works.

8 days agoqemu: monitor: Fix indentation in qemuMonitorJSONGetOneBlockStatsInfo
Peter Krempa [Tue, 23 Jun 2015 13:11:17 +0000]
qemu: monitor: Fix indentation in qemuMonitorJSONGetOneBlockStatsInfo

8 days agointernal: Introduce virCheckNonEmptyStringArgGoto and reuse it
Peter Krempa [Tue, 23 Jun 2015 15:35:16 +0000]
internal: Introduce virCheckNonEmptyStringArgGoto and reuse it

The helper makes sure that strings passed to APIs are non-NULL and
non-empty. This allows to drop some inlined checks where it does not
make sense.

8 days agovz: Fix build after recent commit
Peter Krempa [Fri, 26 Jun 2015 14:00:15 +0000]
vz: Fix build after recent commit

Function prlsdkGetStatsParam was missing a prototype or the static
keyword. I went with static since it built successfully.

Pushed as a build breaker fix.

8 days agovz: add memory statistics
Nikolay Shirokovskiy [Fri, 26 Jun 2015 11:24:00 +0000]
vz: add memory statistics

Implemented counters:
 VIR_DOMAIN_MEMORY_STAT_SWAP_IN
 VIR_DOMAIN_MEMORY_STAT_SWAP_OUT
 VIR_DOMAIN_MEMORY_STAT_MINOR_FAULT
 VIR_DOMAIN_MEMORY_STAT_MAJOR_FAULT
 VIR_DOMAIN_MEMORY_STAT_AVAILABLE
 VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON
 VIR_DOMAIN_MEMORY_STAT_UNUSED

Comments.

1. Use vzDomObjFromDomainRef/virDomainObjEndAPI pair to get domain
object as we use prlsdkGetStatsParam. See previous statistics
comments.

2. Balloon statistics is not applicable to containers. Fault
statistics for containers not provided in PCS6 yet.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

8 days agovz: add vcpu statistics
Nikolay Shirokovskiy [Fri, 26 Jun 2015 11:24:00 +0000]
vz: add vcpu statistics

Comments.

Replace vzDomObjFromDomain/virObjectUnlock pair
to vzDomObjFromDomainRef/virDomainObjEndAPI as we
use prlsdkGetStatsParam. See previous statistics
comments.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

8 days agovz: cleanup, make in par net device lookup functions
Nikolay Shirokovskiy [Fri, 26 Jun 2015 11:24:00 +0000]
vz: cleanup, make in par net device lookup functions

Make net device lookup by mac return sdk handle
instead of quite ephemeral enumeration index. After
this change there is no need anymore in special
function of removing device by enumeration index.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

8 days agovz: add net dev statistiscs
Nikolay Shirokovskiy [Fri, 26 Jun 2015 11:24:00 +0000]
vz: add net dev statistiscs

Populate counters SDK currenly supports:
 rx_bytes
 rx_packets
 tx_bytes
 tx_packets

Comments.

Use vzDomObjFromDomainRef/virDomainObjEndAPI pair to get domain
object as we use prlsdkGetStatsParam that can release domain
object lock and thus we need a reference in case domain
is deleated meanwhile.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>

8 days agodocs: Don't keep temporary files around
Michal Privoznik [Fri, 26 Jun 2015 08:49:19 +0000]
docs: Don't keep temporary files around

In my previous fix (1310b1358) I've tried to solve an ordering
issue.  Well, while it worked it has a side effect of keeping a
temporary file around. My patch was buggy in that sense. Solve
this by properly marking the dependency without any side effect.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agovz_utils: Reformat
Michal Privoznik [Thu, 25 Jun 2015 07:56:56 +0000]
vz_utils: Reformat

Honour our formatting style. Adjust indentation so it matches the
rest of our code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agovz_storage: Reformat
Michal Privoznik [Thu, 25 Jun 2015 07:56:56 +0000]
vz_storage: Reformat

Honour our formatting style. Adjust indentation so it matches the
rest of our code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agovz_sdk: Reformat
Michal Privoznik [Thu, 25 Jun 2015 07:56:56 +0000]
vz_sdk: Reformat

Honour our formatting style. Adjust indentation so it matches the
rest of our code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agovz_network: Reformat
Michal Privoznik [Thu, 25 Jun 2015 07:56:56 +0000]
vz_network: Reformat

Honour our formatting style. Adjust indentation so it matches the
rest of our code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agovz_driver: Reformat
Michal Privoznik [Thu, 25 Jun 2015 07:56:56 +0000]
vz_driver: Reformat

Honour our formatting style. Adjust indentation so it matches the
rest of our code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agoqemuBuildMemoryBackendStr: Honour passed @pagesize
Michal Privoznik [Thu, 25 Jun 2015 15:27:29 +0000]
qemuBuildMemoryBackendStr: Honour passed @pagesize

So far the argument has not much meaning and was practically ignored.
This is not good since when doing memory hotplug, the size of desired
hugepage backing is passed in that argument. Taking closer look at the
tests I'm fixing reveals the bug. For instance, while the following is
in the test:

    <memory model='dimm'>
      <source>
        <nodemask>1-3</nodemask>
        <pagesize unit='KiB'>4096</pagesize>
      </source>
      <target>
        <size unit='KiB'>524287</size>
        <node>0</node>
      </target>
      <address type='dimm' slot='0' base='0x100000000'/>
    </memory>

the generated commandline corresponding to this XML was:

    -object memory-backend-ram,id=memdimm0,size=536870912,\
    host-nodes=1-3,policy=bind

Have you noticed? Yes, memory-backend-ram! Nothing can be further away
from the right answer. The hugepage backing is requested in the XML
and we happily ignore it. This is just not right. It's
memory-backend-file which should have been used:

    -object memory-backend-file,id=memdimm0,prealloc=yes,\
    mem-path=/dev/hugepages4M/libvirt/qemu,size=536870912,\
    host-nodes=1-3,policy=bind

The problem is, that @pagesize passed to qemuBuildMemoryBackendStr
(where this part of commandline is built) was ignored. The hugepage to
back memory was searched only and only by NUMA nodes pinning. This
works only for regular guest NUMA nodes.

Then, I'm changing the hugepages size in the test XMLs too. This is
simply because in the test suite we create dummy mount points just for
2M and 1G hugepages. And in the test 4M was requested. I'm sticking to
2M, but 1G should just work too.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agoqemuBuildMemoryBackendStr: Fix hugepages lookup process
Michal Privoznik [Wed, 24 Jun 2015 16:09:57 +0000]
qemuBuildMemoryBackendStr: Fix hugepages lookup process

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

This function constructs the backend (host facing) part of the
memory device.  At the beginning, the configured hugepages are
searched to find the best match for given guest NUMA node.
Configured hugepages can have a @nodeset attribute to specify on
which guest NUMA nodes should be the hugepages backing used.
There is, however, one 'corner case'. Users may just tell 'use
hugepages to back all the nodes'. In other words:

  <memoryBacking>
    <hugepages/>
  </memoryBacking>

  <cpu>
    <numa>
      <cell id='0' cpus='0-1' memory='1024000' unit='KiB'/>
    </numa>
  </cpu>

Our code fails in this case. Well, since there's no @nodeset (nor
any <page/> child element to <hugepages/>) we fail to lookup the
default hugepage size to use.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>

9 days agoconf: Format scheduler priority when it is zero
Luyao Huang [Wed, 24 Jun 2015 04:00:36 +0000]
conf: Format scheduler priority when it is zero

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

According to our XML definition, zero is as valid as any other value.
Mainly because it should be kernel-agnostic.

Signed-off-by: Luyao Huang <lhuang@redhat.com>

9 days agotest: Refactor testNodeGetCPUMap
Peter Krempa [Mon, 22 Jun 2015 14:10:49 +0000]
test: Refactor testNodeGetCPUMap

Drop locking of the driver since it is not accessed and simplify the
code flow.

9 days agotest: Refactor vcpu pinning and vcpu info retrieval
Peter Krempa [Wed, 17 Jun 2015 09:05:21 +0000]
test: Refactor vcpu pinning and vcpu info retrieval

Drop internal data structures and use the proper fields in virDomainDef.

This allows to greatly simplify the code and allows to remove the
private data structure that was holding just redundant data.

This patch also fixes the bogous output where we'd report that a fresh
VM without vCPU pinning would not run on all vcpus.

9 days agotest: Refactor testDomainSetVcpusFlags
Peter Krempa [Tue, 16 Jun 2015 17:15:27 +0000]
test: Refactor testDomainSetVcpusFlags

Remove the bogus flag check and refactor the code by using
virDomainObjGetDefs instead of virDomainObjGetPersistentDef.

9 days agotest: Refactor test driver domain object retrieval
Peter Krempa [Tue, 16 Jun 2015 16:18:03 +0000]
test: Refactor test driver domain object retrieval

Reuse testDomObjFromDomain to retrieve domain objects in the rest of
the test driver instead of open-coding it in every API.

9 days agotest: Drop locked access to testDriver->domains
Peter Krempa [Mon, 22 Jun 2015 12:33:23 +0000]
test: Drop locked access to testDriver->domains

Only self-locking APIs are used and the pointer is immutable so there's
no need to lock the driver to access the domain list.

This patch removes locking partially for everything that will not be
converted to testDomObjFromDomain in the next patch.

9 days agotest: Finalize removal of locking from driver->eventState
Peter Krempa [Wed, 24 Jun 2015 10:56:21 +0000]
test: Finalize removal of locking from driver->eventState

Don't lock the driver when registering event callbacks.

9 days agotest: Refactor test driver event sending
Peter Krempa [Tue, 16 Jun 2015 16:35:57 +0000]
test: Refactor test driver event sending

Make testObjectEventQueue tolerant to NULL @event and move it so that it
does not require a prototype. Additionally we are now able to remove
locking when accessing driver->eventState, since it's using self-locking
APIs and the pointer is immutable.

9 days agotest: Use atomic access to @nextDomID in struct virTestDriver
Peter Krempa [Wed, 24 Jun 2015 13:08:47 +0000]
test: Use atomic access to @nextDomID in struct virTestDriver