]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
8 years agoqemuDomainBuildNamespace: Handle file mount points
Michal Privoznik [Fri, 10 Mar 2017 14:53:58 +0000 (15:53 +0100)]
qemuDomainBuildNamespace: Handle file mount points

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

Yeah, that's right. A mount point doesn't have to be a directory.
It can be a file too. However, the code that tries to preserve
mount points under /dev for new namespace for qemu does not count
with that option.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoEnable forgotten VIR_CONNECT_LIST_STORAGE_POOLS_* flags
Jiri Denemark [Mon, 13 Mar 2017 08:20:35 +0000 (09:20 +0100)]
Enable forgotten VIR_CONNECT_LIST_STORAGE_POOLS_* flags

VIR_CONNECT_LIST_STORAGE_POOLS_VSTORAGE and
VIR_CONNECT_LIST_STORAGE_POOLS_ZFS were added to libvirt but the listing
API was not properly updated to use them.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agobhyve: test cases for VNC
Roman Bogorodskiy [Sun, 12 Feb 2017 14:06:23 +0000 (18:06 +0400)]
bhyve: test cases for VNC

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
8 years agobhyve: add video support
Fabian Freyer [Sat, 16 Jul 2016 21:03:33 +0000 (21:03 +0000)]
bhyve: add video support

bhyve supports 'gop' video device that allows clients to connect
to VMs using VNC clients. This commit adds support for that to
the bhyve driver:

 - Introducr 'gop' video device type
 - Add capabilities probing for the 'fbuf' device that's
   responsible for graphics
 - Update command builder routines to let users configure
   domain's VNC via gop graphics.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
8 years agobhyve: enumerate UEFI firmwares
Fabian Freyer [Fri, 8 Jul 2016 17:51:12 +0000 (17:51 +0000)]
bhyve: enumerate UEFI firmwares

Extend domain capabilities XML with the information about
available UEFI firmware files. It searches in the location
that the sysutils/bhyve-firmware FreeBSD port installs
files to.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
8 years agobhyve: test cases for UEFI bhyvexml2argvtest
Fabian Freyer [Thu, 30 Jun 2016 03:00:04 +0000 (03:00 +0000)]
bhyve: test cases for UEFI bhyvexml2argvtest

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
8 years agobhyve: add support for booting from UEFI
Fabian Freyer [Thu, 30 Jun 2016 02:29:15 +0000 (02:29 +0000)]
bhyve: add support for booting from UEFI

Allow to boot using UEFI rather than using an external boot loader
such as bhyveload or grub-bhyve.

Also, make LPC PCI-ISA bridge handling more flexible as now it's
needed not only for serial ports, but for bootrom as well.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
8 years agobhyve: virBhyveProbeCaps: BHYVE_CAP_LPC_BOOTROM
Fabian Freyer [Tue, 24 May 2016 13:30:56 +0000 (15:30 +0200)]
bhyve: virBhyveProbeCaps: BHYVE_CAP_LPC_BOOTROM

Implement the BHACE_CAP_LPC_BOOTROM capability by checking the stderr
output of 'bhyve -l bootrom'. If the bootrom option is unsupported, this
will contain the following output:

    bhyve: invalid lpc device configuration 'bootrom'

On newer bhyve versions that do support specifying a bootrom image, the
standard help will be printed.

8 years agovirt-host-validate: add bhyve support
Roman Bogorodskiy [Fri, 24 Feb 2017 16:27:56 +0000 (20:27 +0400)]
virt-host-validate: add bhyve support

Add bhyve support to virt-host-validate(1). It checks for the
essential kernel modules to be available so that user can actually
start VMs, have networking and console access.

It uses the kldnext(2)/kldstat(2) routines to retrieve modules list.
As bhyve is only available on FreeBSD and these routines were available
long before bhyve appeared, not adding any specific configure checks
for that.

Also, update tools/Makefile.am to add
virt-host-validate-$driver.[hc] to the build only if the
appropriate driver is enabled.

8 years agotests: Add createVHBAByStoragePool-by-parent to fchosttest
John Ferlan [Sun, 29 Jan 2017 16:12:48 +0000 (11:12 -0500)]
tests: Add createVHBAByStoragePool-by-parent to fchosttest

Add a new test to fchosttest in order to test creation of our vHBA
via the Storage Pool logic.  Unlike the real code, we cannot yet use
the virVHBA* API's because they (currently) traverse the file system
in order to get the parent vport capable scsi_host. Besides there's
no "real" NPIV device here - so we have to take some liberties, at
least for now.

Instead, we'll follow the node device tests partially in order to
create and destroy the vHBA with the test node devices.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemuProcessHandleMonitorEOF: Disable namespace for domain
Michal Privoznik [Fri, 10 Mar 2017 12:34:15 +0000 (13:34 +0100)]
qemuProcessHandleMonitorEOF: Disable namespace for domain

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

If a qemu process has died, we get EOF on its monitor. At this
point, since qemu process was the only one running in the
namespace kernel has already cleaned the namespace up. Any
attempt of ours to enter it has to fail.

This really happened in the bug linked above. We've tried to
attach a disk to qemu and while we were in the monitor talking to
qemu it just died. Therefore our code tried to do some roll back
(e.g. deny the device in cgroups again, restore labels, etc.).
However, during the roll back (esp. when restoring labels) we
still thought that domain has a namespace. So we used secdriver's
transactions. This failed as there is no namespace to enter.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoDocument preferred naming conventions
Daniel P. Berrange [Fri, 3 Mar 2017 09:46:16 +0000 (09:46 +0000)]
Document preferred naming conventions

This documents the preferred conventions for naming files,
structs, enums, typedefs and functions.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agoqemuxml2argvtest: Don't overwrite driver stateDir
Michal Privoznik [Fri, 10 Mar 2017 08:55:43 +0000 (09:55 +0100)]
qemuxml2argvtest: Don't overwrite driver stateDir

This is a very historic artefact. Back in the old days of
830ba76c3e when we had macros to add arguments onto qemu command
line (!) we thought it was a good idea to let qemu write out the
PID file. So we passed -pidfile $stateDir/$domName onto the
command line. Thus, in order for tests to work we needed stable
stateDir in the qemu driver. Unfortunately, after 16efa11aa696
where stateDir is mkdtemp()-d, this approach lead to a leak of
temp dir.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoqemu: hotplug: Reset device removal waiting code after vCPU unplug
Peter Krempa [Fri, 3 Mar 2017 15:04:57 +0000 (16:04 +0100)]
qemu: hotplug: Reset device removal waiting code after vCPU unplug

If the delivery of the DEVICE_DELETED event for the vCPU being deleted
would time out, the code would not call 'qemuDomainResetDeviceRemoval'.

Since the waiting thread did not unregister itself prior to stopping the
waiting the monitor code would try to wake it up instead of dispatching
it to the event worker. As a result the unplug process would not be
completed and the definition would not be updated.

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

8 years agoqemu: hotplug: Add debug log when dispatching device removal to existing thread
Peter Krempa [Fri, 3 Mar 2017 15:02:01 +0000 (16:02 +0100)]
qemu: hotplug: Add debug log when dispatching device removal to existing thread

Note that the waiting thread is signaled in the debug logs to simplify
debugging.

8 years agoRevert "conf: move iothread XML validation from qemu_command"
Pavel Hrdina [Thu, 9 Mar 2017 13:55:44 +0000 (14:55 +0100)]
Revert "conf: move iothread XML validation from qemu_command"

This reverts commit c96bd78e4e71c799dc391566fa9f0652dec55dca.

So our code is one big mess and we modify domain definition while
building qemu_command line and our hotplug code share only part
of the parsing and command line building code.  Let's revert
that change because to fix it properly would require refactor and
move a lot of things.

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

8 years agoconfigure: disable scsi stroage driver on non-Linux
Roman Bogorodskiy [Sun, 5 Mar 2017 14:17:22 +0000 (18:17 +0400)]
configure: disable scsi stroage driver on non-Linux

Even though scsi storage driver builds fine on non-Linux, it
will not work properly because it relies on Linux procfs, so
disable that in configure if we're not building for Linux.

8 years agoconf: properly skip graphics listen element in migratable XML
Pavel Hrdina [Mon, 27 Feb 2017 16:16:17 +0000 (17:16 +0100)]
conf: properly skip graphics listen element in migratable XML

We should skip <listen type='socket'/> only if the 'socket' path
is specified because if there is no 'socket' path we need to
keep that element in migratable XML.

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

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoconf: store "autoGenerated" for graphics listen in status XML
Pavel Hrdina [Mon, 27 Feb 2017 16:00:15 +0000 (17:00 +0100)]
conf: store "autoGenerated" for graphics listen in status XML

When libvirtd is started we call qemuDomainRecheckInternalPaths
to detect whether a domain has VNC socket path generated by libvirt
based on option from qemu.conf.  However if we are parsing status XML
for running domain the existing socket path can be generated also if
the config XML uses the new <listen type='socket'/> element without
specifying any socket.

The current code doesn't make difference how the socket was generated
and always marks it as "fromConfig".  We need to store the
"autoGenerated" value in the status XML in order to preserve that
information.

The difference between "fromConfig" and "autoGenerated" is important
for migration, because if the socket is based on "fromConfig" we don't
print it into the migratable XML and we assume that user has properly
configured qemu.conf on both hosts.  However if the socket is based
on "autoGenerated" it means that a new feature was used and therefore
we need to leave the socket in migratable XML to make sure that if
this feature is not supported on destination the migration will fail.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoqemu: Rename variable
John Ferlan [Wed, 8 Mar 2017 19:37:05 +0000 (14:37 -0500)]
qemu: Rename variable

Rename 'secretUsageType' to 'usageType' since it's superfluous in an
API qemu*Secret*

8 years agoqemu: Introduce qemuDomainGetTLSObjects
John Ferlan [Fri, 17 Feb 2017 15:06:14 +0000 (10:06 -0500)]
qemu: Introduce qemuDomainGetTLSObjects

Split apart and rename qemuDomainGetChardevTLSObjects in order to make a
more generic API that can create the TLS JSON prop objects (secret and
tls-creds-x509) to be used to create the objects

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Move qemuDomainPrepareChardevSourceTLS call
John Ferlan [Fri, 17 Feb 2017 14:46:16 +0000 (09:46 -0500)]
qemu: Move qemuDomainPrepareChardevSourceTLS call

Move the call to inside the qemuDomainAddChardevTLSObjects in order to
further converge the code.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Move qemuDomainSecretChardevPrepare call
John Ferlan [Fri, 17 Feb 2017 14:37:34 +0000 (09:37 -0500)]
qemu: Move qemuDomainSecretChardevPrepare call

Move the call to inside the qemuDomainAddChardevTLSObjects in order to
further converge the code.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Refactor qemuDomainGetChardevTLSObjects to converge code
John Ferlan [Wed, 22 Feb 2017 17:54:10 +0000 (12:54 -0500)]
qemu: Refactor qemuDomainGetChardevTLSObjects to converge code

Create a qemuDomainAddChardevTLSObjects which will encapsulate the
qemuDomainGetChardevTLSObjects and qemuDomainAddTLSObjects so that
the callers don't need to worry about the props.

Move the dev->type and haveTLS checks in to the Add function to avoid
an unnecessary call to qemuDomainAddTLSObjects

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Refactor hotplug to introduce qemuDomain{Add|Del}TLSObjects
John Ferlan [Thu, 16 Feb 2017 15:33:35 +0000 (10:33 -0500)]
qemu: Refactor hotplug to introduce qemuDomain{Add|Del}TLSObjects

Refactor the TLS object adding code to make two separate API's that will
handle the add/remove of the "secret" and "tls-creds-x509" objects including
the Enter/Exit monitor commands.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Move exit monitor calls in failure paths
John Ferlan [Wed, 22 Feb 2017 17:39:17 +0000 (12:39 -0500)]
qemu: Move exit monitor calls in failure paths

Since qemuDomainObjExitMonitor can also generate error messages,
let's move it inside any error message saving code on error paths
for various hotplug add activities.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Introduce qemuDomainSecretInfoTLSNew
John Ferlan [Wed, 1 Mar 2017 19:14:40 +0000 (14:14 -0500)]
qemu: Introduce qemuDomainSecretInfoTLSNew

Building upon the qemuDomainSecretInfoNew, create a helper which will
build the secret used for TLS.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: Introduce qemuDomainSecretInfoNew
John Ferlan [Mon, 20 Feb 2017 20:04:58 +0000 (15:04 -0500)]
qemu: Introduce qemuDomainSecretInfoNew

Create a helper which will create the secinfo used for disks, hostdevs,
and chardevs.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agotests: Add storagevol tests for format=iso
Cole Robinson [Tue, 7 Mar 2017 15:50:59 +0000 (10:50 -0500)]
tests: Add storagevol tests for format=iso

Demonstrates the bug fix in commit 0e5db762627

8 years agodoc: fix writing of QEMU
Philipp Hahn [Tue, 7 Mar 2017 17:09:58 +0000 (18:09 +0100)]
doc: fix writing of QEMU

QEMU should be written all upper or all lower case.

8 years agodoc: Correct the default werror policy
Philipp Hahn [Wed, 1 Mar 2017 19:44:54 +0000 (20:44 +0100)]
doc: Correct the default werror policy

It's only implemented by QEMU and its default is
VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE anyway.

Signed-off-by: Philipp Hahn <hahn@univention.de>
8 years agoqemu_process: don't probe iothreads if it's not supported by QEMU
Pavel Hrdina [Wed, 8 Mar 2017 09:45:10 +0000 (10:45 +0100)]
qemu_process: don't probe iothreads if it's not supported by QEMU

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

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoqemuTestDriverInit: Don't access live data
Michal Privoznik [Mon, 6 Mar 2017 07:27:23 +0000 (08:27 +0100)]
qemuTestDriverInit: Don't access live data

Some of our tests (e.g. qemuhotplugtest) call
virDomainSaveConfig(). Now the problem is, qemuTestDriverInit()
creates a fake qemu driver and fills it with some fake
configuration. At least so we hoped. The truth is, it calls
regular virQEMUDriverConfigNew() and then fix couple of paths.
Literally. Therefore our tests see regular stateDir and configDir
for the user that is running the tests. Directories, where live
domain XMLs are stored. Let's just hope our test suite hasn't
mangled any of them.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agoqemuDomainSaveImageUpdateDef: Don't overwrite errors from virDomainDefCheckABIStability
Michal Privoznik [Fri, 3 Mar 2017 09:45:31 +0000 (10:45 +0100)]
qemuDomainSaveImageUpdateDef: Don't overwrite errors from virDomainDefCheckABIStability

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

When we are restoring a domain from a saved image, or just
updating its XML in the saved image - we have to make sure that
the ABI guests sees will not change. We have a function for that
which reports errors. But for some reason if this function fails,
we call it again with slightly different argument. Therefore it
might happen that we overwrite the original error and leave user
with less helpful one.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agonews: Update the news.xml about perf events added
Nitesh Konkar [Thu, 23 Feb 2017 14:55:39 +0000 (20:25 +0530)]
news: Update the news.xml about perf events added

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add emulation_faults software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:38 +0000 (20:25 +0530)]
perf: add emulation_faults software perf event support

This patch adds support and documentation
for the emulation_faults perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add alignment_faults software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:37 +0000 (20:25 +0530)]
perf: add alignment_faults software perf event support

This patch adds support and documentation
for the alignment_faults perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add page_faults_maj software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:36 +0000 (20:25 +0530)]
perf: add page_faults_maj software perf event support

This patch adds support and documentation
for the page_faults_maj perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add page_faults_min software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:35 +0000 (20:25 +0530)]
perf: add page_faults_min software perf event support

This patch adds support and documentation
for the page_faults_min perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add cpu_migrations software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:34 +0000 (20:25 +0530)]
perf: add cpu_migrations software perf event support

This patch adds support and documentation
for the cpu_migrations perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add context_switches software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:33 +0000 (20:25 +0530)]
perf: add context_switches software perf event support

This patch adds support and documentation
for the context_switches perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add page_faults software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:32 +0000 (20:25 +0530)]
perf: add page_faults software perf event support

This patch adds support and documentation
for the page_faults perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add task_clock software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:31 +0000 (20:25 +0530)]
perf: add task_clock software perf event support

This patch adds support and documentation for
the task_clock perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoperf: add cpu_clock software perf event support
Nitesh Konkar [Thu, 23 Feb 2017 14:55:30 +0000 (20:25 +0530)]
perf: add cpu_clock software perf event support

This patch adds support and documentation for
the cpu_clock perf event.

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoconf: Use consistent function name prefixes for virnwfilterobj
John Ferlan [Thu, 2 Mar 2017 18:18:32 +0000 (13:18 -0500)]
conf: Use consistent function name prefixes for virnwfilterobj

Use "virNWFilterObj" as a prefix for any external API in virnwfilterobj

8 years agoconf: Alter coding style of nwfilter function prototypes
John Ferlan [Thu, 2 Mar 2017 17:58:41 +0000 (12:58 -0500)]
conf: Alter coding style of nwfilter function prototypes

In an effort to be consistent with the source module, alter the function
prototypes to follow the similar style of source with the "type" on one
line followed by the function name and arguments on subsequent lines with
with argument getting it's own line.

8 years agoconf: Adjust coding style for nwfilter conf sources
John Ferlan [Thu, 2 Mar 2017 17:13:02 +0000 (12:13 -0500)]
conf: Adjust coding style for nwfilter conf sources

Alter the format of the code to follow more recent style guidelines of
two empty lines between functions, function decls with "[static] type"
on one line followed by function name with arguments to functions each
on one line.

8 years agoconf: Introduce virnwfilterobj
John Ferlan [Tue, 28 Feb 2017 22:37:15 +0000 (17:37 -0500)]
conf: Introduce virnwfilterobj

Move all the NWFilterObj API's into their own module virnwfilterobj
from the nwfilter_conf

Purely code motion at this point, plus adjustments to cleanly build.

8 years agoconf: Change virNWFilterObjDeleteDef to virNWFilterDeleteDef
John Ferlan [Tue, 28 Feb 2017 22:25:36 +0000 (17:25 -0500)]
conf: Change virNWFilterObjDeleteDef to virNWFilterDeleteDef

Rather than pass the nwfilter object, just pass the def to the function

8 years agoconf: Change virNWFilterObjSaveDef to virNWFilterSaveDef
John Ferlan [Tue, 28 Feb 2017 22:12:09 +0000 (17:12 -0500)]
conf: Change virNWFilterObjSaveDef to virNWFilterSaveDef

There's no need to pass the driver pointer to nwfilter_conf, just
pass the configDir.

8 years agoutil: Avoid possible NULL dereference in virSysinfoParsePPCProcessor
John Ferlan [Tue, 7 Mar 2017 12:01:21 +0000 (07:01 -0500)]
util: Avoid possible NULL dereference in virSysinfoParsePPCProcessor

Found by Coverity. Because there's an "if ((cur = strstr(base, "revision"))
 != NULL) {" followed by a "base = cur" coverity notes that 'base' could
then be NULL causing the return to the top of the "while ((tmp_base =
strstr(base, "processor")) != NULL) {" to have strstr deref a NULL 'base'
pointer because the setting of base at the bottom of the loop is unconditional.

Alter the code to set "base = cur" after processing each key. That will
"ensure" that base doesn't get set to NULL if both "cpu" and "revision"
do no follow a "processor".

While a /proc/cpuinfo file that has a "processor" key but with neither
a "cpu" nor a "revision" doesn't seem feasible, the code is written as if
it could happen, so we have to account for it.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoutil: Resource some resource leaks in virsysinfo code
John Ferlan [Tue, 7 Mar 2017 11:33:38 +0000 (06:33 -0500)]
util: Resource some resource leaks in virsysinfo code

Calls to virFileReadAll after a VIR_ALLOC that return NULL all show
a memory leak since 'ret' isn't virSysinfoDefFree'd and normal path
"return ret" doesn't free outbuf.

Reported by Coverity

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agolibvirt: document UNDEFINE_KEEP_NVRAM in UndefineFlags docs
Cole Robinson [Mon, 6 Mar 2017 22:54:40 +0000 (17:54 -0500)]
libvirt: document UNDEFINE_KEEP_NVRAM in UndefineFlags docs

8 years agostorage: Don't pass 'iso' format to qemu-img
Cole Robinson [Mon, 6 Mar 2017 21:50:53 +0000 (16:50 -0500)]
storage: Don't pass 'iso' format to qemu-img

$ virsh vol-clone /tmp/test.iso new.iso
error: Failed to clone vol from test.iso
error: internal error: Child process (/bin/qemu-img convert -f iso -O iso /tmp/test.iso /tmp/new.iso) unexpected exit status 1: qemu-img: Could not open '/tmp/test.iso': Unknown driver 'iso'

Map iso->raw before sending the format value to qemu-img

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

8 years agoqemu_domain: cleanup the controller post parse code
Pavel Hrdina [Wed, 1 Mar 2017 18:41:56 +0000 (19:41 +0100)]
qemu_domain: cleanup the controller post parse code

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoqemu_domain: move controller post parse code into its own function
Pavel Hrdina [Wed, 1 Mar 2017 18:31:19 +0000 (19:31 +0100)]
qemu_domain: move controller post parse code into its own function

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agotests: sysinfo: Add test data for HP moonshot aarch64 box
Peter Krempa [Mon, 6 Mar 2017 15:20:25 +0000 (16:20 +0100)]
tests: sysinfo: Add test data for HP moonshot aarch64 box

Since the kernel does not report much data for that box the sysinfo
output is comparatively sparse.

8 years agotests: sysinfo: Run all sysinfo tests all the time
Peter Krempa [Mon, 6 Mar 2017 14:56:46 +0000 (15:56 +0100)]
tests: sysinfo: Run all sysinfo tests all the time

There's no reason why we should avoid running all sysinfo tests on all
platforms. Refactor the test to get rid of the conditionally compiled
cruft.

8 years agotests: sysinfo: Export virSysinfoSetup via the private header
Peter Krempa [Mon, 6 Mar 2017 14:25:07 +0000 (15:25 +0100)]
tests: sysinfo: Export virSysinfoSetup via the private header

virSysinfoSetup should be used only in tests so it can be moved to the
new header file rather than using an extern declaration.

8 years agoutil: sysinfo: Reduce amount of conditionally compiled code
Peter Krempa [Mon, 6 Mar 2017 14:14:45 +0000 (15:14 +0100)]
util: sysinfo: Reduce amount of conditionally compiled code

Whole implementations along with helper totalling screens of code were
conditionally compiled. That made the code totally unreadable and
untestable. Rename functions to have the architecture in the name so
that all can be compiled at the same time and introduce header to allow
testing them all.

8 years agoqemu_capabilities: report SATA bus in domain capabilities
Pavel Hrdina [Mon, 6 Mar 2017 16:16:07 +0000 (17:16 +0100)]
qemu_capabilities: report SATA bus in domain capabilities

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agomake all struct typedefs comply with proposed coding conventions
Laine Stump [Mon, 6 Mar 2017 17:39:48 +0000 (12:39 -0500)]
make all struct typedefs comply with proposed coding conventions

Proposed formal coding conventions encourage defining typedefs for
vir[Blah] and vir[Blah]Ptr separately from the associated struct named
_vir[Blah]:

    typedef struct _virBlah virBlah;
    typedef virBlah *virBlahPtr;
    struct _virBlah {
    ...
    };

At some point in the past, I had submitted several patches using a
more compact style that I prefer, and they were accepted:

    typedef struct _virBlah {
        ...
    } virBlah, *virBlahPtr;

Since these are by far a minority among all struct definitions, this
patch changes all those definitions to reflect the style prefered by
the proposal so that there is 100% consistency.

8 years agoAdd virsystemdpriv.h to UTIL_SOURCES
Daniel P. Berrange [Mon, 6 Mar 2017 17:30:37 +0000 (17:30 +0000)]
Add virsystemdpriv.h to UTIL_SOURCES

Ensure virsystemdpriv.h gets included in dist tarballs.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agoDon't print extra newline in virsh domstats output
Nitesh Konkar [Fri, 10 Feb 2017 15:04:42 +0000 (20:34 +0530)]
Don't print extra newline in virsh domstats output

Signed-off-by: Nitesh Konkar <nitkon12@linux.vnet.ibm.com>
8 years agoTest virSystemd APIs twice to check the cache effects
Ján Tomko [Thu, 23 Feb 2017 11:32:54 +0000 (12:32 +0100)]
Test virSystemd APIs twice to check the cache effects

Test virSystemd APIs twice to check the cache effects.

8 years agoCache the presence of machine1 service
Ján Tomko [Fri, 24 Jun 2016 15:41:09 +0000 (17:41 +0200)]
Cache the presence of machine1 service

After the system has been booted, it should not change.

Cache the return value of virSystemdHasMachined.
Allow starting and terminating machines with just one
DBus call, instead of three, reducing the chance of
the call timing out.

Also introduce a small function for resetting the cache
to be used in tests.

8 years agoUse macros for testing virSystemd APIs
Ján Tomko [Thu, 23 Feb 2017 11:25:33 +0000 (12:25 +0100)]
Use macros for testing virSystemd APIs

This hides the unused third parameter from every line
and prepares for resetting the environment after each test
case in the future.

8 years agoUnify checking for machine1 systemd service
Ján Tomko [Fri, 24 Jun 2016 15:38:33 +0000 (17:38 +0200)]
Unify checking for machine1 systemd service

Both virSystemdTerminateMachine and virSystemdCreateMachine
propagate the error to tell between a non-systemd system
and a hard error.

In virSystemdGetMachineNameByPID both are treated the same,
but an error is ignored by the callers.

Split out the checks into a separate function.

8 years agotest: Make common test*ObjFindByUUID helpers
John Ferlan [Sat, 4 Mar 2017 14:48:11 +0000 (09:48 -0500)]
test: Make common test*ObjFindByUUID helpers

Make common helpers testNetworkObjFindByUUID and testStoragePoolObjFindByUUID
which will replace the repeated patter for each to find objects by UUID.

As a bonus, the error message processing will also provide the failed uuidstr
rather than a generic error message.

8 years agotest: Make a common testNetworkObjFindByName
John Ferlan [Sat, 4 Mar 2017 14:34:53 +0000 (09:34 -0500)]
test: Make a common testNetworkObjFindByName

Rather than have multiple places using the same pattern to find
a network by name using virNetworkObjFindByName, create a common
helper which will provide a consistent error message as well.

8 years agotest: Make common test*ObjFindByName helpers
John Ferlan [Sat, 4 Mar 2017 14:16:33 +0000 (09:16 -0500)]
test: Make common test*ObjFindByName helpers

Rather than have continued repeated sequences of :

    testDriverLock()
    xxx = vir*ObjFindByName()
    testDriverUnlock()

    if (xxx == NULL) {
        virReportError
        goto cleanup;
    }

Make some common helpers which will use the pattern and make a single
reference using a single common error message.

Altered for Interfaces, Storage Pools, Storage Volumes, and Node Devices.

For each the common error message can now also indicate which 'name' was
not found. For Storage Volumes, the "new" error will be more specific
rather than just invalid argument.

8 years agoconf: Alter coding style of interface function prototypes
John Ferlan [Thu, 2 Mar 2017 17:01:29 +0000 (12:01 -0500)]
conf: Alter coding style of interface function prototypes

In an effort to be consistent with the source module, alter the function
prototypes to follow the similar style of source with the "type" on one
line followed by the function name and arguments on subsequent lines with
with argument getting it's own line.

8 years agoconf: Use consistent function name prefixes for virinterfaceobj
John Ferlan [Thu, 2 Mar 2017 16:56:43 +0000 (11:56 -0500)]
conf: Use consistent function name prefixes for virinterfaceobj

Use "virInterfaceObj" as a prefix for any external API in virinterfaceobj

8 years agoconf: Adjust coding style for interface conf sources
John Ferlan [Thu, 2 Mar 2017 16:44:11 +0000 (11:44 -0500)]
conf: Adjust coding style for interface conf sources

Alter the format of the code to follow more recent style guidelines of
two empty lines between functions, function decls with "[static] type"
on one line followed by function name with arguments to functions each
on one line.

8 years agoconf: Introduce virinterfaceobj
John Ferlan [Tue, 28 Feb 2017 21:20:44 +0000 (16:20 -0500)]
conf: Introduce virinterfaceobj

Move all the InterfaceObj API's into their own module virinterfaceobj
from the interface_conf

Purely code motion at this point.

8 years agoqemu: Enforce qemuSecurity wrappers
Michal Privoznik [Mon, 13 Feb 2017 13:36:53 +0000 (14:36 +0100)]
qemu: Enforce qemuSecurity wrappers

Now that we have some qemuSecurity wrappers over
virSecurityManager APIs, lets make sure everybody sticks with
them. We have them for a reason and calling virSecurityManager
API directly instead of wrapper may lead into accidentally
labelling a file on the host instead of namespace.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agonews: Fix typo
Jiri Denemark [Mon, 6 Mar 2017 07:17:08 +0000 (08:17 +0100)]
news: Fix typo

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agoqemu: Drop virQEMUCapsFreeStringList
Jiri Denemark [Fri, 3 Mar 2017 20:31:26 +0000 (21:31 +0100)]
qemu: Drop virQEMUCapsFreeStringList

The implementation matches virStringListFreeCount. The only difference
between the two functions is the ordering of their parameters.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agonode: Replace variable named 'system' with 'syscap'
John Ferlan [Sat, 4 Mar 2017 15:42:33 +0000 (10:42 -0500)]
node: Replace variable named 'system' with 'syscap'

Changes in commit id 'dec6d9df' caused a compilation failure on a RHEL6
CI build environment. So just replace 'system' with 'syscap' as a name.

cc1: warnings being treated as errors
../../src/conf/node_device_conf.c: In function 'virNodeDevCapSystemParseXML':
../../src/conf/node_device_conf.c:1415: error: declaration of 'system' shadows a global declaration [-Wshadow]

8 years agonodedev: Reduce virNodeDevCapDataPtr usage
John Ferlan [Thu, 2 Mar 2017 15:59:25 +0000 (10:59 -0500)]
nodedev: Reduce virNodeDevCapDataPtr usage

Replace with more data specific pointer types.

8 years agoconf: Clean up the _virNodeDevCapData
John Ferlan [Thu, 2 Mar 2017 15:08:53 +0000 (10:08 -0500)]
conf: Clean up the _virNodeDevCapData

Rather than a bunch of embedded union structs, let's create structs
for each of the structs within the union and make the struct easier
to read.

8 years agoconf: Alter coding style of nodedev function prototypes
John Ferlan [Thu, 2 Mar 2017 13:50:27 +0000 (08:50 -0500)]
conf: Alter coding style of nodedev function prototypes

In an effort to be consistent with the source module, alter the function
prototypes to follow the similar style of source with the "type" on one
line followed by the function name and arguments on subsequent lines with
with argument getting it's own line.

8 years agoconf: Use consistent function name prefixes for virnodedeviceobj
John Ferlan [Thu, 2 Mar 2017 00:17:34 +0000 (19:17 -0500)]
conf: Use consistent function name prefixes for virnodedeviceobj

Use "virNodeDeviceObj" as a prefix for any external API in virnodedeviceobj

8 years agoconf: Adjust coding style for nodedev conf sources
John Ferlan [Thu, 2 Mar 2017 13:39:11 +0000 (08:39 -0500)]
conf: Adjust coding style for nodedev conf sources

Alter the format of the code to follow more recent style guidelines of
two empty lines between functions, function decls with "[static] type"
on one line followed by function name with arguments to functions each
on one line.

8 years agoconf: Introduce virnodedeviceobj
John Ferlan [Tue, 28 Feb 2017 18:24:26 +0000 (13:24 -0500)]
conf: Introduce virnodedeviceobj

Move all the NodeDeviceObj API's into their own module virnodedeviceobj
from the node_device_conf

Purely code motion at this point, plus adjustments to cleanly build.

8 years agolxc: associate armv7l as 32-bit variant of aarch64
Matwey V. Kornilov [Fri, 24 Feb 2017 14:11:52 +0000 (17:11 +0300)]
lxc: associate armv7l as 32-bit variant of aarch64

AArch64 kernels are technically capable of running armv7l binaries.
Though some vendors disable this feature during kernel build, we
need to allow it in LXC.

Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>
8 years agonews: Move host CPU model improvement to 3.2.0
Jiri Denemark [Fri, 3 Mar 2017 19:14:00 +0000 (20:14 +0100)]
news: Move host CPU model improvement to 3.2.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocputest: Add CPUID data for Haswell with TSX
Jiri Denemark [Thu, 16 Feb 2017 13:41:29 +0000 (14:41 +0100)]
cputest: Add CPUID data for Haswell with TSX

All existing Haswell CPUID data were gathered from CPUs with broken TSX.
Let's add new data for Haswell with correct TSX implementation.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocpu_x86: Disable TSX on broken models
Jiri Denemark [Wed, 15 Feb 2017 14:01:40 +0000 (15:01 +0100)]
cpu_x86: Disable TSX on broken models

All Intel Haswell processors (except Xeon E7 v3 with stepping >= 4) have
TSX disabled by microcode update. As not all CPUs are guaranteed to be
patched with microcode updates we need to explicitly disable TSX on
affected CPUs to avoid its accidental usage.

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agonews: Detect host CPU model by asking QEMU on x86_64
Jiri Denemark [Wed, 15 Feb 2017 09:29:44 +0000 (10:29 +0100)]
news: Detect host CPU model by asking QEMU on x86_64

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocputest: Drop .new suffix from CPU test data files
Jiri Denemark [Mon, 13 Feb 2017 14:06:35 +0000 (15:06 +0100)]
cputest: Drop .new suffix from CPU test data files

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocputest: Drop obsolete CPU test data files
Jiri Denemark [Mon, 13 Feb 2017 14:04:38 +0000 (15:04 +0100)]
cputest: Drop obsolete CPU test data files

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocputest: Test virQEMUCapsInitCPUModel
Jiri Denemark [Mon, 13 Feb 2017 09:33:52 +0000 (10:33 +0100)]
cputest: Test virQEMUCapsInitCPUModel

The original test didn't use family/model numbers to make better
decisions about the CPU model and thus mis-detected the model in the two
cases which are modified in this commit. The detected CPU models now
match those obtained from raw CPUID data.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocputest: Convert all json data files to query-cpu-model-expansion
Jiri Denemark [Mon, 13 Feb 2017 13:59:42 +0000 (14:59 +0100)]
cputest: Convert all json data files to query-cpu-model-expansion

Converted by running the following command, renaming the files as
*.new, and committing only the *.new files.

    (cd tests/cputestdata; ./cpu-convert.py *.json)

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agocputest: Switch host CPU data scripts to model expansion
Jiri Denemark [Wed, 1 Feb 2017 16:48:41 +0000 (17:48 +0100)]
cputest: Switch host CPU data scripts to model expansion

Instantiating "host" CPU and querying it using qom-get has been the only
way of probing host CPU via QEMU until 2.9.0 implemented
query-cpu-model-expansion for x86_64. Even though libvirt never really
used the old way its result can be easily converted into the one
produced by query-cpu-model-expansion. Thus we can reuse the original
test data and possible get new data from hosts where QEMU does not
support the new QMP command.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agoqemu: Make virQEMUCapsInitCPUModel testable
Jiri Denemark [Thu, 23 Feb 2017 13:31:23 +0000 (14:31 +0100)]
qemu: Make virQEMUCapsInitCPUModel testable

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agoqemu: Use full CPU model expansion on x86
Jiri Denemark [Thu, 23 Feb 2017 12:53:51 +0000 (13:53 +0100)]
qemu: Use full CPU model expansion on x86

The static CPU model expansion is designed to return only canonical
names of all CPU properties. To maintain backwards compatibility libvirt
is stuck with different spelling of some of the features, but we need to
use the full expansion to get the additional spellings. In addition to
returning all spelling variants for all properties the full expansion
will contain properties which are not guaranteed to be migration
compatible. Thus, we need to combine both expansions. First we need to
call the static expansion to limit the result to migratable properties.
Then we can use the result of the static expansion as an input to the
full expansion to get both canonical names and their aliases.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agoqemu: Use enum for CPU model expansion type
Jiri Denemark [Tue, 31 Jan 2017 12:44:00 +0000 (13:44 +0100)]
qemu: Use enum for CPU model expansion type

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agoqemu: Get host CPU model from QEMU on x86_64
Jiri Denemark [Wed, 11 Jan 2017 13:36:34 +0000 (14:36 +0100)]
qemu: Get host CPU model from QEMU on x86_64

Until now host-model CPU mode tried to enable all CPU features supported
by the host CPU even if QEMU/KVM did not support them. This caused a
number of issues and made host-model quite unreliable. Asking QEMU for
the CPU it can provide and the current host makes host-model much more
robust.

This commit fixes the following bugs:

    https://bugzilla.redhat.com/show_bug.cgi?id=1018251
    https://bugzilla.redhat.com/show_bug.cgi?id=1371617
    https://bugzilla.redhat.com/show_bug.cgi?id=1372581
    https://bugzilla.redhat.com/show_bug.cgi?id=1404627
    https://bugzilla.redhat.com/show_bug.cgi?id=870071

In addition to that, the following bug should be mostly limited to cases
when an unsupported feature is explicitly requested:

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

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
8 years agoqemu: Probe "max" CPU model in TCG
Jiri Denemark [Wed, 22 Feb 2017 15:51:50 +0000 (16:51 +0100)]
qemu: Probe "max" CPU model in TCG

Querying "host" CPU model expansion only makes sense for KVM. QEMU 2.9.0
introduces a new "max" CPU model which can be used to ask QEMU what the
best CPU it can provide to a TCG domain is.

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