]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
8 years agolibvirt.spec.in: remove most storage conditionals
Daniel P. Berrange [Wed, 4 May 2016 15:40:08 +0000 (16:40 +0100)]
libvirt.spec.in: remove most storage conditionals

Both RHEL and Fedora build with the storage driver and
most of its sub-drivers enabled at all times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove network driver conditiaonl
Daniel P. Berrange [Wed, 4 May 2016 15:36:17 +0000 (16:36 +0100)]
libvirt.spec.in: remove network driver conditiaonl

Both RHEL and Fedora build with the network driver
enabled at all times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove interface driver conditional
Daniel P. Berrange [Wed, 4 May 2016 15:34:37 +0000 (16:34 +0100)]
libvirt.spec.in: remove interface driver conditional

Both RHEL and Fedora build with the interface driver
enabled at all times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove selinux conditional
Daniel P. Berrange [Wed, 4 May 2016 15:33:14 +0000 (16:33 +0100)]
libvirt.spec.in: remove selinux conditional

Both RHEL and Fedora build with selinux enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove yajl conditional
Daniel P. Berrange [Wed, 4 May 2016 15:32:18 +0000 (16:32 +0100)]
libvirt.spec.in: remove yajl conditional

Both RHEL and Fedora build with yajl enabled at all times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove polkit conditional
Daniel P. Berrange [Wed, 4 May 2016 15:31:38 +0000 (16:31 +0100)]
libvirt.spec.in: remove polkit conditional

Both RHEL and Fedora build with polkit enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove sasl conditionals
Daniel P. Berrange [Wed, 4 May 2016 15:29:49 +0000 (16:29 +0100)]
libvirt.spec.in: remove sasl conditionals

Both RHEL and Fedora build with sasl enabled at all times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove dtrace conditional
Daniel P. Berrange [Wed, 4 May 2016 15:27:46 +0000 (16:27 +0100)]
libvirt.spec.in: remove dtrace conditional

Both RHEL and Fedora build with dtrace enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove audit conditional
Daniel P. Berrange [Wed, 4 May 2016 15:26:58 +0000 (16:26 +0100)]
libvirt.spec.in: remove audit conditional

Both RHEL and Fedora build with audit enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove netcf conditional
Daniel P. Berrange [Wed, 4 May 2016 15:26:30 +0000 (16:26 +0100)]
libvirt.spec.in: remove netcf conditional

Both RHEL and Fedora build with netcf enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove udev conditional
Daniel P. Berrange [Wed, 4 May 2016 15:25:37 +0000 (16:25 +0100)]
libvirt.spec.in: remove udev conditional

Both RHEL and Fedora build with udev enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove capng conditional
Daniel P. Berrange [Wed, 4 May 2016 15:24:39 +0000 (16:24 +0100)]
libvirt.spec.in: remove capng conditional

Both RHEL and Fedora build with capng enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove apparmor conditional
Daniel P. Berrange [Wed, 4 May 2016 15:24:02 +0000 (16:24 +0100)]
libvirt.spec.in: remove apparmor conditional

Neither RHEL or Fedora build apparmor

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove hal conditional
Daniel P. Berrange [Wed, 4 May 2016 15:22:18 +0000 (16:22 +0100)]
libvirt.spec.in: remove hal conditional

Neither RHEL or Fedora build HAL anymore.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove avahi conditional
Daniel P. Berrange [Wed, 4 May 2016 15:21:42 +0000 (16:21 +0100)]
libvirt.spec.in: remove avahi conditional

Both RHEL and Fedora build with avahi enabled at all
times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove libvirtd conditional
Daniel P. Berrange [Wed, 4 May 2016 15:20:58 +0000 (16:20 +0100)]
libvirt.spec.in: remove libvirtd conditional

Both RHEL and Fedora build with libvirtd enabled at
all times.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove conditional for driver modules
Daniel P. Berrange [Wed, 4 May 2016 15:14:10 +0000 (16:14 +0100)]
libvirt.spec.in: remove conditional for driver modules

Both RHEL and Fedora build with driver modules enabled by
default, so there is no need for any conditional.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: remove client only build option
Daniel P. Berrange [Wed, 4 May 2016 14:44:57 +0000 (15:44 +0100)]
libvirt.spec.in: remove client only build option

A client only build dates back to RHEL5 where some architectures
did not build the libvirtd daemon, only the clients. Since RHEL5
was dropped this is no longer required.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: drop Fedora < 20 and RHEL < 6
Daniel P. Berrange [Wed, 4 May 2016 14:43:08 +0000 (15:43 +0100)]
libvirt.spec.in: drop Fedora < 20 and RHEL < 6

Simplify conditionals to assume Fedora >= 20 or RHEL >= 6

The %prep section will explicitly check the version and
refuse to run if insufficient.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agolibvirt.spec.in: explicitly disable xenapi & vz drivers
Daniel P. Berrange [Wed, 4 May 2016 14:11:01 +0000 (15:11 +0100)]
libvirt.spec.in: explicitly disable xenapi & vz drivers

The xenapi & vz drivers won't build in Fedora or RHEL
since their deps don't exist there.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
8 years agostorage: Fix virStorageBackendDiskDeleteVol for device mapper
John Ferlan [Tue, 26 Apr 2016 12:53:57 +0000 (08:53 -0400)]
storage: Fix virStorageBackendDiskDeleteVol for device mapper

Commit id 'df1011ca8' modified virStorageBackendDiskDeleteVol to use
"dmsetup remove --force" to remove the volume, but left things in an
inconsistent state since the partition still existed on the disk and
only the device mapper device (/dev/dm-#) was removed.

Prior to commit '1895b421' (or '1ffd82bb' and '471e1c4e'), this could
go unnoticed since virStorageBackendDiskRefreshPool wasn't called.
However, the pool would be unusable since the /dev/dm-# device would
be removed even though the partition was not removed unless a multipathd
restart reset the link. That would of course make the volume appear again
in the pool after a refresh or pool start after libvirt reload.

This patch removes the 'dmsetup' logic and re-implements the partition
deletion logic for device mapper devices. The removal of the partition
via 'parted rm --script #' will cause udev device change logic to allow
multipathd to handle removing the dm-* device associated with the partition.

8 years agostorage: Fix algorithm generating path names for devmapper
John Ferlan [Mon, 9 May 2016 18:57:17 +0000 (14:57 -0400)]
storage: Fix algorithm generating path names for devmapper

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

Commit id '020135dc' didn't quite get the algorithm correct when a
device mapper source ended with a non numeric value (e.g. ends with
an alphabet value).

This patch modifies the 'part_separator' logic to add the "p" separator
to the attempted target path name only when specified as part_separator='yes'.

For a source name that already ends with a number, the logic doesn't change
as the part separator would need to be there.

For a source name that ends with something other than a number, this allows
the possibility that a "p" separator can be added. The default for one of
these source devices is to not add the separator.

The key for device mapper and the need for a partition separator "p" is
the presence of a number in the last character of the device name link
in /dev/mapper.  A name such as "/dev/mapper/mpatha1" would generate
a "/dev/mapper/mpatha1p1" partition, while "/dev/mapper/mpatha" would
generate partition "/dev/mapper/mpatha1". Similarly for a device
mapper entry not using friendly names or an alias, a device such as
"/dev/mapper/3600a0b80005b10ca00005ad656fd8d93" would generate a
paritition "/dev/mapper/3600a0b80005b10ca00005ad656fd8d93p1", while
a device such as "/dev/mapper/3600a0b80005b10ca00005e115729093f" would
generate a partition "/dev/mapper/3600a0b80005b10ca00005e115729093f1".
The long number is the WWID of the device. It's also possible to assign
an alias for a device mapper entry, that alias follows the same rules
with respect to ending with a number or not when adding a "p" to create
the target device path.

8 years agostorage: Need to clear pool prior to calling the refreshPool
John Ferlan [Tue, 26 Apr 2016 12:19:07 +0000 (08:19 -0400)]
storage: Need to clear pool prior to calling the refreshPool

Prior to calling the 'refreshPool' during CreatePool or UploadPool
operations, we need to clear the pool; otherwise, the pool will
have duplicated entries.

8 years agostorage: Fix regression cloning volume into a logical pool
John Ferlan [Fri, 29 Apr 2016 11:43:57 +0000 (07:43 -0400)]
storage: Fix regression cloning volume into a logical pool

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

Commit id 'dd519a294' caused a regression cloning a volume into a
logical pool by removing just the 'allocation' adjustment during
storageVolCreateXMLFrom. Combined with the change to not require the
new volume input XML to have a capacity listed (commit id 'e3f1d2a8')
left the possibility that a zero allocation value (e.g., not provided)
would create a thin/sparse logical volume. When a thin lv becomes fully
populated, then LVM sets the partition 'inactive' and the subsequent
fdatasync() fails.

Add a new 'has_allocation' flag to be set at XML parse time to indicate
that allocation was provided. This is done so that if it's not provided
the create-from code uses the capacity value since we document that if
omitted, the volume will be fully allocated at time of creation.

For a logical backend, that creation time is 'createVol', while for a
file backend, creation doesn't set the size, but the 'createRaw' called
during buildVolFrom will decide whether the file is sparse or not based
on the provided capacity and allocation value.

For volume clones that provide different allocation and capacity values
to allow for sparse files, there is no change.

8 years agoheaders: Remove unnecessary keyword extern from function declaration
Erik Skultety [Tue, 10 May 2016 11:37:32 +0000 (13:37 +0200)]
headers: Remove unnecessary keyword extern from function declaration

Usage of this keyword in front of function declaration that is exported via a
header file is unnecessary, since internally, this has been the default for most
compilers for quite some time.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoconf: log error when incorrect PCI root controller is added to domain
Laine Stump [Tue, 19 Apr 2016 21:05:54 +0000 (17:05 -0400)]
conf: log error when incorrect PCI root controller is added to domain

libvirt may automatically add a pci-root or pcie-root controller to a
domain, depending on the arch/machinetype, and it hopefully always
makes the right decision about which to add (since in all cases these
controllers are an implicit part of the virtual machine).

But it's always possible that someone will create a config that
explicitly supplies the wrong type of PCI controller for the selected
machinetype. In the past that would lead to an error later when
libvirt was trying to assign addresses to other devices, for example:

  XML error: PCI bus is not compatible with the device at
  0000:00:02.0. Device requires a PCI Express slot, which is not
  provided by bus 0000:00

(that's the error message that appears if you replace the pcie-root
controller in a Q35 domain with a pci-root controller).

This patch adds a check at the same place that the implicit
controllers are added (to ensure that the same logic is used to check
which type of pci root is correct). If a pci controller with index='0'
is already present, we verify that it is of the model that we would
have otherwise added automatically; if not, an error is logged:

  The PCI controller with index='0' must be " model='pcie-root' for
  this machine type, " but model='pci-root' was found instead.

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

8 years agoconf: make virDomainDefAddController() public
Laine Stump [Tue, 19 Apr 2016 19:31:36 +0000 (15:31 -0400)]
conf: make virDomainDefAddController() public

This will be needed by the qemu driver in an upcoming patch.

8 years agolibxl: support migration stream V2 in migration
Jim Fehlig [Fri, 29 Apr 2016 21:08:05 +0000 (15:08 -0600)]
libxl: support migration stream V2 in migration

Similar to "support Xen migration stream V2 in save/restore",
add support for indicating the migration stream version in
the migration code. To accomplish this, add a minimal migration
cookie in the libxl driver that is passed between source and
destination hosts. Initially, the cookie is only used in
the Begin and Prepare phases of migration to communicate the
version of the migration stream produced by the source.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
8 years agolibxl: support Xen migration stream V2 in save/restore
Jim Fehlig [Mon, 2 May 2016 18:00:39 +0000 (12:00 -0600)]
libxl: support Xen migration stream V2 in save/restore

Xen 4.6 introduced a new migration stream commonly referred to as
"migration V2". Xen 4.6 and newer always produce this new stream,
whereas Xen 4.5 and older always produce the legacy stream.
Support for migration stream V2 can be detected at build time with
LIBXL_HAVE_SRM_V2 from libxl.h. The legacy and V2 streams are not
compatible, but a V2 host can accept and convert a legacy stream.

Commit e7440656 changed the libxl driver to use the lowest libxl
API version possible (version 0x040200) to ensure the driver
builds against older Xen releases. The old 4.2 restore API does
not support specifying a stream version and assumes a legacy
stream, even if the incoming stream is migration V2. Thinking it
has been given a legacy stream, libxl will fail to convert an
incoming stream that is already V2, which causes the entire
restore operation to fail. Xen's libvirt-related OSSTest has been
failing since commit e7440656 landed in libvirt.git master. One
of the more recent failures can be seen here

http://lists.xenproject.org/archives/html/xen-devel/2016-05/msg00071.html

This patch changes the call to libxl_domain_create_restore() to
include the stream version if LIBXL_HAVE_SRM_V2 is defined. The
version field of the libxlSavefileHeader struct is also updated
to '2' when LIBXL_HAVE_SRM_V2 is defined, ensuring the stream
version in the header matches the actual stream version produced
by Xen. Along with bumping the libxl API requirement to 0x040400,
this patch fixes save/restore on a migration V2 Xen host.

Oddly, migration has never used the libxlSavefileHeader. It
handles passing configuration in the Begin and Prepare phases,
and then calls libxl directly to transfer domain state/memory
in the Perform phase. A subsequent patch will add stream
version handling in the Begin and Prepare phase handshaking,
which will fix the migration related OSSTest failures.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
8 years agolibxl: switch to using libxl_domain_create_restore from v4.4 API
Jim Fehlig [Fri, 29 Apr 2016 03:08:28 +0000 (21:08 -0600)]
libxl: switch to using libxl_domain_create_restore from v4.4 API

In LIBXL_API_VERSION 0x040400, the libxl_domain_create_restore API
gained a parameter for specifying restore parameters. Switch to
using version 0x040400, which will be useful in a subsequent commit
to specify the Xen migration stream version when restoring.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
8 years agodocs: Fix disk "volume" description
John Ferlan [Fri, 29 Apr 2016 17:09:07 +0000 (13:09 -0400)]
docs: Fix disk "volume" description

Missing a close single quote and a 'be' before used.

8 years agoqemu: Add extra checks for secret destroy API's
John Ferlan [Tue, 10 May 2016 18:26:44 +0000 (14:26 -0400)]
qemu: Add extra checks for secret destroy API's

Remove the possibility that a NULL hostdev->privateData or a
disk->privateData could crash libvirtd by checking for NULL
before dereferencing for the secinfo structure in the
qemuDomainSecret{Disk|Hostdev}Destroy functions. The hostdevPriv
could be NULL if qemuProcessNetworkPrepareDevices adds a new
hostdev during virDomainNetGetActualHostdev that then gets
inserted via virDomainHostdevInsert. The hostdevPriv was added
by commit id '27726d8' and is currently only used by scsi hostdev.

8 years agodocs: fix version number in vlan tagging documentation
Laine Stump [Tue, 10 May 2016 19:23:55 +0000 (15:23 -0400)]
docs: fix version number in vlan tagging documentation

My brain suffered a time warp and I got the version number wrong.

8 years agoutil: set vlan tag for macvtap passthrough mode on SRIOV VFs
Laine Stump [Wed, 4 May 2016 17:18:16 +0000 (13:18 -0400)]
util: set vlan tag for macvtap passthrough mode on SRIOV VFs

SRIOV VFs used in macvtap passthrough mode can take advantage of the
SRIOV card's transparent vlan tagging. All the code was there to set
the vlan tag, and it has been used for SRIOV VFs used for hostdev
interfaces for several years, but for some reason, the vlan tag for
macvtap passthrough devices was stubbed out with a -1.

This patch moves a bit of common validation down to a lower level
(virNetDevReplaceNetConfig()) so it is shared by hostdev and macvtap
modes, and updates the macvtap caller to actually send the vlan config
instead of -1.

8 years agoseclabeltest: Update to use VIRT_TEST_MAIN
Michal Privoznik [Thu, 25 Feb 2016 16:13:00 +0000 (17:13 +0100)]
seclabeltest: Update to use VIRT_TEST_MAIN

Our tests should use either VIRT_TEST_MAIN() or
VIRT_TEST_MAIN_PRELOAD() macros which create main() function and
call the passed callback subsequently. This is important because
the wrapper which calls the callback eventually does important
stuff like setting logging based on env variables and such.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agovirt-admin: Introduce client-disconnect command
Erik Skultety [Thu, 28 Apr 2016 08:38:32 +0000 (10:38 +0200)]
virt-admin: Introduce client-disconnect command

Enable the client disconnect within virt-admin. Also, update the man page
accordingly.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoadmin: Introduce virAdmClientClose API
Erik Skultety [Thu, 28 Apr 2016 08:26:25 +0000 (10:26 +0200)]
admin: Introduce virAdmClientClose API

Once we're able to list and identify all clients connected to a specific
server, we can then support force-closing a connection. This patch introduces
a simple API calling virNetServerClientClose on a specific client, which
can be later extended easily, e.g. by sending an event once the client is
disconnected successfully.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoadmin: Remove flags checking from virAdmConnectOpen public API
Erik Skultety [Thu, 5 May 2016 11:42:52 +0000 (13:42 +0200)]
admin: Remove flags checking from virAdmConnectOpen public API

Unlike the previous commit, we do actually support one client-side only flag
VIR_CONNECT_NO_ALIASES, so besides removing the check for flags this flag
has to be masked out before sending a message to the daemon, otherwise it
would trigger an error when checking flags on the daemon side.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoadmin: Remove flags checking from public API entry points
Erik Skultety [Thu, 5 May 2016 11:30:42 +0000 (13:30 +0200)]
admin: Remove flags checking from public API entry points

Due to compatibility reasons these should be checked on the server side.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
8 years agoqemu_hotplug: fix checking graphics ports
Pavel Hrdina [Thu, 28 Apr 2016 15:55:11 +0000 (17:55 +0200)]
qemu_hotplug: fix checking graphics ports

We cannot change ports for running domain and we should error out if
autoport is enabled.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoqemu_process: merge graphics code into qemuProcessSetupGraphics
Pavel Hrdina [Mon, 9 May 2016 12:52:52 +0000 (14:52 +0200)]
qemu_process: merge graphics code into qemuProcessSetupGraphics

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agographics: generate fake ports also for tests
Pavel Hrdina [Mon, 9 May 2016 12:30:27 +0000 (14:30 +0200)]
graphics: generate fake ports also for tests

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agoqemu_process: separate graphics port reservation
Pavel Hrdina [Mon, 9 May 2016 12:20:08 +0000 (14:20 +0200)]
qemu_process: separate graphics port reservation

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
8 years agouml: only build on Linux
Roman Bogorodskiy [Sun, 8 May 2016 13:31:37 +0000 (16:31 +0300)]
uml: only build on Linux

8 years agoconfigure: split out UML driver checks
Roman Bogorodskiy [Sun, 8 May 2016 13:31:36 +0000 (16:31 +0300)]
configure: split out UML driver checks

Move all the UML driver related routines into m4/virt-driver-uml.m4.

8 years agoconf: don't redefine virDomainCapsDeviceHostdev
Roman Bogorodskiy [Tue, 10 May 2016 04:06:45 +0000 (07:06 +0300)]
conf: don't redefine virDomainCapsDeviceHostdev

Commit 5ed235c6 added unnecessary redifinition of
virDomainCapsDeviceHostdev in conf/domain_capabilities.h. This breaks
build with clang 3.4:

In file included from conf/domain_capabilities.c:25:
conf/domain_capabilities.h:88:44: error: redefinition of typedef
'virDomainCapsDeviceHostdev' is a C11 feature
[-Werror,-Wtypedef-redefinition]
typedef struct _virDomainCapsDeviceHostdev virDomainCapsDeviceHostdev;
                                           ^
conf/domain_capabilities.h:86:44: note: previous definition is here
typedef struct _virDomainCapsDeviceHostdev virDomainCapsDeviceHostdev;

So drop one of those.

8 years agoconf: Fix error path in virNodeDevPCICapabilityParseXML
John Ferlan [Thu, 5 May 2016 22:41:28 +0000 (18:41 -0400)]
conf: Fix error path in virNodeDevPCICapabilityParseXML

If the call to virXPathNodeSet to set naddresses fails, Coverity notes
that the subsequent VIR_ALLOC_N cannot have a negative value (well it
probably wouldn't be negative per se).

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoadmin: Clean up error path in adminServerListClients
John Ferlan [Thu, 5 May 2016 22:32:25 +0000 (18:32 -0400)]
admin: Clean up error path in adminServerListClients

Coverity noted that in adminServerListClients if virNetServerGetClients
returns a -1 into ret, then the call virObjectListFreeCount in cleanup
will not be very happy.

Adjust the code to skip the cleanup label and just return -1 if
virNetServerGetClients fails.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoUse virGetLastErrorMessage to avoid Coverity message
John Ferlan [Thu, 5 May 2016 22:27:00 +0000 (18:27 -0400)]
Use virGetLastErrorMessage to avoid Coverity message

Both instances use VIR_WARN() to print the error from a failed
virDBusGetSystemBus() call.  Rather than use the virGetLastError
and need to check for valid return err pointer, just use the
virGetLastErrorMessage.

Signed-off-by: John Ferlan <jferlan@redhat.com>
8 years agoqemu: command: unconditionally allow accel3d='no'
Cole Robinson [Sun, 8 May 2016 17:38:56 +0000 (13:38 -0400)]
qemu: command: unconditionally allow accel3d='no'

This matches how we handle spice gl='no' even if spice GL isn't
supported. Not too interesting in practice but I figure we should
be consistent

8 years agodomaincaps: Report video modelType
Cole Robinson [Sun, 8 May 2016 16:11:39 +0000 (12:11 -0400)]
domaincaps: Report video modelType

Requires adding the plumbing for <device><video>
The value is <enum name='modelType'> to match the associated domain
XML of <video><model type='XXX'/>

Wire it up for qemu too

8 years agodomaincaps: Report graphics type enum
Cole Robinson [Sun, 8 May 2016 15:57:20 +0000 (11:57 -0400)]
domaincaps: Report graphics type enum

Requires adding the plumbing for <device><graphics>
Wire it up for qemu too

8 years agoutil: polkit: Fix polkit agent startup
Peter Krempa [Mon, 9 May 2016 09:02:51 +0000 (11:02 +0200)]
util: polkit: Fix polkit agent startup

Commit 0b36b0e9 broke polkit agent startup when attempting to fix a
coverity warning. Refactor it properly so that we don't need the 'cmd'
intermediate variable.

8 years agoqemu: domain: Don't treat unknown storage type as not having backing chain
Peter Krempa [Thu, 5 May 2016 13:25:52 +0000 (15:25 +0200)]
qemu: domain: Don't treat unknown storage type as not having backing chain

qemuDomainCheckDiskPresence has short-circuit code to skip the
determination of the disk backing chain for storage formats that can't
have backing volumes. The code treats VIR_STORAGE_FILE_NONE as not
having backing chain and skips the call to qemuDomainDetermineDiskChain.

This is wrong as qemuDomainDetermineDiskChain is responsible for storage
format detection and has logic to determine the default type if format
detection is disabled.

This allows to storage passed via <disk type="volume"> to circumvent the
enforcement to have correct storage format or that we shall default to
format='raw', since we don't set the default type via the post parse
callback for "volume" backed disks as the translation code could come up
with a better guess.

This resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1328003

8 years agoqemu: Reject invalid block copy targets for <disk device='lun'>
Peter Krempa [Mon, 2 May 2016 13:26:51 +0000 (15:26 +0200)]
qemu: Reject invalid block copy targets for <disk device='lun'>

Extract the relevant parts of the existing checker and reuse them for
blockcopy since copying to a non-block device creates an invalid
configuration.

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

8 years agoqemu: command: Remove unnecessary label in qemuCheckDiskConfig
Peter Krempa [Mon, 2 May 2016 13:16:50 +0000 (15:16 +0200)]
qemu: command: Remove unnecessary label in qemuCheckDiskConfig

8 years agoconf: Kill now unused virDomainDiskSourceIsBlockType
Peter Krempa [Mon, 2 May 2016 13:07:34 +0000 (15:07 +0200)]
conf: Kill now unused virDomainDiskSourceIsBlockType

8 years agoqemu: command: Use more appropriate checking function for block devices
Peter Krempa [Mon, 2 May 2016 12:57:09 +0000 (14:57 +0200)]
qemu: command: Use more appropriate checking function for block devices

In qemuCheckDiskConfig would now use virDomainDiskSourceIsBlockType just
as a glorified version of virStorageSourceIsBlockLocal that reports
error messages. Replace it with the latter including the message for
clarity.

8 years agoqemu: Support <disk device='lun'> for iSCSI direct mapped volumes
Peter Krempa [Mon, 2 May 2016 12:47:18 +0000 (14:47 +0200)]
qemu: Support <disk device='lun'> for iSCSI direct mapped volumes

Commit c820fbff9fbfe1f2549a5b60967496587f8d8bfc added support for iSCSI
disk as backing for <disk device='lun'>. We would not use it for a disk
type="volume" with direct access mode which basically maps to direct
iSCSI usage. Fix it by adding the storage source type accessor that
resolves the volume type.

8 years agolxc: Fix wrong error message on disk hotplug
Peter Krempa [Mon, 2 May 2016 11:08:53 +0000 (13:08 +0200)]
lxc: Fix wrong error message on disk hotplug

Commit 36025c552 tried to improve error reporting for <disk type="lun">
but reused the code in LXC which doesn't care about the actual disk
type. The error messages would then contain a bogous hint that the
config for the 'lun' device is invalid which might not be the case.

Re-do the relevant portion of the commit with the original message.

8 years agoutil: Replace virDomainDiskSourceIsBlockType with a new helper
Peter Krempa [Mon, 2 May 2016 11:42:32 +0000 (13:42 +0200)]
util: Replace virDomainDiskSourceIsBlockType with a new helper

For disks sources described by a libvirt volume we don't need to do a
complicated check since virStorageTranslateDiskSourcePool already
correctly determines the actual disk type.

Replace the checks using a new accessor that does not open-code the
whole logic.

8 years agoqemu_monitor_json: Follow refactor
Michal Privoznik [Wed, 4 May 2016 08:28:43 +0000 (10:28 +0200)]
qemu_monitor_json: Follow refactor

In 7884d089d2f I've started to refactor qemu_monitor_json.c.
Thing is, it's current structure is nothing like the rest of our
code. The @ret variable is rewritten all the time, if()-s are
nested instead of using goto and so on.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
8 years agovirsh: blkdeviotune: accept human readable values for bytes
Nishith Shah [Wed, 4 May 2016 14:25:10 +0000 (14:25 +0000)]
virsh: blkdeviotune: accept human readable values for bytes

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

Use vshCommandOptScaledInt instead of vshCommandOptULongLong so that
values with suffixes can be passed when bytes are being passed along.
Values for the iops parameters still need to be given in the absolute
form as they are not bytes but numbers.

Signed-off-by: Nishith Shah <nishithshah.2211@gmail.com>
9 years agogenericxml2xml: add several graphics tests
Pavel Hrdina [Mon, 25 Apr 2016 15:10:30 +0000 (17:10 +0200)]
genericxml2xml: add several graphics tests

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
9 years agodomain_conf: fix migration/managedsave with usb keyboard
Pavel Hrdina [Fri, 6 May 2016 11:55:15 +0000 (13:55 +0200)]
domain_conf: fix migration/managedsave with usb keyboard

Commin 36785c7e refactored the code for input devices but introduced a
bug where we removed all keyboard from migratable XML.  We have to
remove only implicit keyboards like PS2 or XEN.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
9 years agoqemu_hotplug: cleanup error messages in qemuDomainChangeGraphics
Pavel Hrdina [Mon, 25 Apr 2016 13:36:28 +0000 (15:36 +0200)]
qemu_hotplug: cleanup error messages in qemuDomainChangeGraphics

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
9 years agoqemu_process: handle port allocation for VNC the same way as for Spice
Pavel Hrdina [Mon, 25 Apr 2016 13:24:48 +0000 (15:24 +0200)]
qemu_process: handle port allocation for VNC the same way as for Spice

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
9 years agoqemu_process: move listen code out of qemuProcessSetupGraphics
Pavel Hrdina [Thu, 28 Apr 2016 07:35:14 +0000 (09:35 +0200)]
qemu_process: move listen code out of qemuProcessSetupGraphics

Move adding the config listen type=address if there is none in
qemuProcessPrepareDomain and move check for multiple listens to
qemuProcessStartValidate.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
9 years agographics: use enums instead of int
Pavel Hrdina [Mon, 2 May 2016 15:45:23 +0000 (17:45 +0200)]
graphics: use enums instead of int

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
9 years agovirCgroupValidateMachineGroup: Reflect change in CGroup struct naming
Michal Privoznik [Thu, 5 May 2016 15:35:38 +0000 (17:35 +0200)]
virCgroupValidateMachineGroup: Reflect change in CGroup struct naming

Fron c3bd0019c0e on instead of creating the following path for
cgroups:

  /sys/fs/cgroupX/$name.libvirt-$driver

we generate rather more verbose one:

  /sys/fs/cgroupX/$driver-$id-$name.libvirt-$driver

where $name is optional and included iff contains allowed chars.
See original commit for more reasoning. Now, problem with the
original commit is that we are unable to start any LXC domain
after it. Because when starting LXC container, the CGroup layout
is created by our lxc_controller process and then detected and
validated by libvirtd. The validation is done by trying to match
detected layout against all the possible patterns for cgroup
paths that we've ever had. And the commit in question forgot to
update this part of the code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
9 years agodomaincapstest: Add tests for QEMU 2.6
Jiri Denemark [Thu, 28 Apr 2016 12:24:51 +0000 (14:24 +0200)]
domaincapstest: Add tests for QEMU 2.6

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Add tests for aarch64 and ppc64le
Jiri Denemark [Wed, 27 Apr 2016 14:48:56 +0000 (16:48 +0200)]
qemucapabilitiestest: Add tests for aarch64 and ppc64le

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agodomaincapstest: Use default machine type
Jiri Denemark [Thu, 28 Apr 2016 16:01:18 +0000 (18:01 +0200)]
domaincapstest: Use default machine type

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Rename *.caps to *.xml
Jiri Denemark [Thu, 28 Apr 2016 15:45:41 +0000 (17:45 +0200)]
qemucapabilitiestest: Rename *.caps to *.xml

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Test all capabilities
Jiri Denemark [Thu, 28 Apr 2016 15:02:38 +0000 (17:02 +0200)]
qemucapabilitiestest: Test all capabilities

Enhance the test to cover all capabilities we probe for rather than
testing the flags only.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Reorder flags in caps files
Jiri Denemark [Thu, 28 Apr 2016 15:27:40 +0000 (17:27 +0200)]
qemucapabilitiestest: Reorder flags in caps files

The flags should follow the order in which they are defined in
virQEMUCaps enum.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Reindent *.caps files
Jiri Denemark [Thu, 28 Apr 2016 15:10:19 +0000 (17:10 +0200)]
qemucapabilitiestest: Reindent *.caps files

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Uses consistent names
Jiri Denemark [Thu, 28 Apr 2016 13:54:31 +0000 (15:54 +0200)]
qemucapabilitiestest: Uses consistent names

In other tests we use "expected" and "actual" to refer to the expected
outcome of the tested API and the result we got, respectively.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemu: Export caps cache APIs for tests
Jiri Denemark [Thu, 28 Apr 2016 13:01:02 +0000 (15:01 +0200)]
qemu: Export caps cache APIs for tests

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemu: Separate formatting from saving into caps cache
Jiri Denemark [Thu, 28 Apr 2016 12:59:15 +0000 (14:59 +0200)]
qemu: Separate formatting from saving into caps cache

We will need to use the formatter directly for testing QEMU capabilities
code.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemucapabilitiestest: Prepare for testing non-x86_64 archs
Jiri Denemark [Mon, 25 Apr 2016 12:19:49 +0000 (14:19 +0200)]
qemucapabilitiestest: Prepare for testing non-x86_64 archs

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agotests: Refactor domaincapstest
Jiri Denemark [Mon, 25 Apr 2016 12:20:58 +0000 (14:20 +0200)]
tests: Refactor domaincapstest

The test was just a big mess passing callbacks and their data through
data for another callback.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemu: Introduce qemuDomainSecretIV
John Ferlan [Mon, 2 May 2016 10:43:32 +0000 (06:43 -0400)]
qemu: Introduce qemuDomainSecretIV

Add the data structure and infrastructure to support an initialization
vector (IV) secrets. The IV secret generation will need to have access
to the domain private master key, so let's make sure the prepare disk
and hostdev functions can accept that now.

Anywhere that needs to make a decision over which secret type to use
in order to fill in or use the IV secret has a switch added.

Signed-off-by: John Ferlan <jferlan@redhat.com>
9 years agoqemu: Separate network URI command building code
John Ferlan [Mon, 2 May 2016 10:39:43 +0000 (06:39 -0400)]
qemu: Separate network URI command building code

Create helper API's in order to build the network URI as shortly we will
be adding a new SecretInfo type

Signed-off-by: John Ferlan <jferlan@redhat.com>
9 years agoqemu: Move qemuDomainSecretDestroy to qemuProcessLaunch
John Ferlan [Mon, 2 May 2016 17:31:47 +0000 (13:31 -0400)]
qemu: Move qemuDomainSecretDestroy to qemuProcessLaunch

Rather than need to call qemuDomainSecretDestroy after any call to
qemuProcessLaunch, let's do the destroy in qemuProcessLaunch since
that's where command line is eventually generated and processed. Once
it's generated, we can clear out the secrets.

Signed-off-by: John Ferlan <jferlan@redhat.com>
9 years agoqemu: Move qemuDomainSecretPrepare to qemuProcessPrepareDomain
John Ferlan [Mon, 2 May 2016 17:20:55 +0000 (13:20 -0400)]
qemu: Move qemuDomainSecretPrepare to qemuProcessPrepareDomain

Commit id '40d8e2ba3' added the function to qemuProcessStart because
in order to set up some secrets in the future we will need the master
key. However, since the previous patch split the master key creation
into two parts (create just the key and create the file), we can now
call qemuDomainSecretPrepare from qemuProcessPrepareDomain since the
file is not necessary.

Signed-off-by: John Ferlan <jferlan@redhat.com>
9 years agoqemu: Split out the master key create and write
John Ferlan [Mon, 2 May 2016 17:11:24 +0000 (13:11 -0400)]
qemu: Split out the master key create and write

A recent review of related changes noted that we should split the creation
(or generation) of the master key into the qemuProcessPrepareDomain and leave
the writing of the master key for qemuProcessPrepareHost.

Made the adjustment and modified some comments to functions that have
changed calling parameters, but didn't change the intro doc.

Signed-off-by: John Ferlan <jferlan@redhat.com>
9 years agoqemu: Adjust names of qemuDomainSecretInfoType enums
John Ferlan [Mon, 2 May 2016 11:20:32 +0000 (07:20 -0400)]
qemu: Adjust names of qemuDomainSecretInfoType enums

From a review after push, add the "_TYPE" into the name.

Also use qemuDomainSecretInfoType in the struct rather than int
with the comment field containing the struct name

Signed-off-by: John Ferlan <jferlan@redhat.com>
9 years agorpc: use virNetMessageClearPayload in client
Cole Robinson [Wed, 27 Apr 2016 22:02:22 +0000 (18:02 -0400)]
rpc: use virNetMessageClearPayload in client

This removes the opencoded payload freeing in the client, to use
the shared virNetMessageClearPayload call. Two changes:

- ClearPayload sets nfds=0, which fixes a potential crash if
  an error path called virNetMessageFree/Clear on the message
  after fds was free'd
- We drop the inner loop VIR_FORCE_CLOSE... this may mean fds are
  kept open a little bit longer if the call is blocking but in
  practice I don't think it will have any effect

9 years agorpc: Clear more in virNetMessageClearPayload
Cole Robinson [Wed, 27 Apr 2016 21:55:54 +0000 (17:55 -0400)]
rpc: Clear more in virNetMessageClearPayload

Set all counters to 0. This doesn't impact current users, but
future users will want this

9 years agorpc: Add virNetMessageClearPayload
Cole Robinson [Wed, 27 Apr 2016 21:47:34 +0000 (17:47 -0400)]
rpc: Add virNetMessageClearPayload

Handles freeing the buffer and fds, but not the message details.
Use it to drop some duplicate code.

9 years agovirNetServerClientNewPostExecRestart: Avoid align problems
Michal Privoznik [Thu, 5 May 2016 07:07:50 +0000 (09:07 +0200)]
virNetServerClientNewPostExecRestart: Avoid align problems

I've noticed this while trying to compile libvirt on my arm box.

  CC       rpc/libvirt_net_rpc_server_la-virnetserverclient.lo
rpc/virnetserverclient.c: In function 'virNetServerClientNewPostExecRestart':
rpc/virnetserverclient.c:516:45: error: cast increases required alignment of target type [-Werror=cast-align]
                                             (long long *) &timestamp) < 0) {
                                             ^
cc1: all warnings being treated as errors

Problem is, @timestap is defined as time_t which is 32 bits long,
and we are typecasting it to long long which is 64bits long.
Solution is to make @timestamp type of long long. At the same
time, we can make @conn_time in _virNetServerClient struct long
long too. There is no need for it to be type of time_t.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
9 years agovirNetServerClientNewPostExecRestart: Drop useless typecasts
Michal Privoznik [Thu, 5 May 2016 06:42:50 +0000 (08:42 +0200)]
virNetServerClientNewPostExecRestart: Drop useless typecasts

In this function, @id is defined as unsigned long long. When
passing this variable to virJSONValueObjectGetNumberUlong(),
well address of this variable, it's typecasted to ull*. There
is no need for that. It's a same story with @nrequests_max.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
9 years agoAdd qemucapsprobe in .gitignore
Jiri Denemark [Thu, 5 May 2016 08:09:32 +0000 (10:09 +0200)]
Add qemucapsprobe in .gitignore

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agotests: Add qemucapsprobe helper
Jiri Denemark [Tue, 26 Apr 2016 13:04:55 +0000 (15:04 +0200)]
tests: Add qemucapsprobe helper

Adding new *.replies files for qemucapabilitiestest or updating the
files when libvirt adds an additional QMP command into the probing
process is quite painful. The goal of the new qemucapsprobe command is
to make this process as easy as

    tests/qemucapsprobe /path/to/qemu/binary >caps.replies

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agovirjson: Make pretty format more compact
Jiri Denemark [Wed, 27 Apr 2016 14:49:25 +0000 (16:49 +0200)]
virjson: Make pretty format more compact

json_reformat uses two spaces for when indenting nested objects, let's
do the same. The result of virJSONValueToString will be exactly the same
as json_reformat would produce.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemu: Make qemuMonitorJSONIOProcessLine available for tests
Jiri Denemark [Wed, 27 Apr 2016 14:50:43 +0000 (16:50 +0200)]
qemu: Make qemuMonitorJSONIOProcessLine available for tests

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agoqemu: Make virQEMUCapsNewForBinary usable from tests
Jiri Denemark [Tue, 26 Apr 2016 13:03:06 +0000 (15:03 +0200)]
qemu: Make virQEMUCapsNewForBinary usable from tests

virQEMUCapsNewForBinary unconditionally loads data from cache and probes
using both QMP and -help parsing, which is suboptimal when we want to
use it in tests.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agotests: Decouple preload code from main()
Jiri Denemark [Tue, 26 Apr 2016 13:00:24 +0000 (15:00 +0200)]
tests: Decouple preload code from main()

The new VIRT_TEST_PRELOAD macro does not force the caller to create a
special main function which would need to be called through
virtTestMain().

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9 years agotests: Create a shared library with qemu driver
Jiri Denemark [Tue, 26 Apr 2016 12:58:56 +0000 (14:58 +0200)]
tests: Create a shared library with qemu driver

Currently all qemu driver tests are statically linked to qemu driver
library, which makes it impossible to mock any API from the library.
This patch creates a shared qemu driver library which can be used
instead of the static one.

NB we can't use libvirt_driver_qemu.so directly since it is linked with
-module and it is supposed to be dlopened.

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