]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
6 years agostorage_util: Split backing_fmt set in storageBackendCreateQemuImgOpts
John Ferlan [Mon, 7 May 2018 14:17:43 +0000 (10:17 -0400)]
storage_util: Split backing_fmt set in storageBackendCreateQemuImgOpts

The only way backing_fmts could be set is if the info->format was
not RAW (see storageBackendCreateQemuImgSetBacking), so let's just
extract it from the if/else surrounding the application of the
encryption options.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Remove luks distinction from secret path and alias
John Ferlan [Thu, 19 Apr 2018 14:52:03 +0000 (10:52 -0400)]
storage_util: Remove luks distinction from secret path and alias

Remove the "luks" distinction as the code is about to become more
generic and be able to support qcow encryption as well.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Move secretPath generation
John Ferlan [Wed, 18 Apr 2018 18:18:14 +0000 (14:18 -0400)]
storage_util: Move secretPath generation

Move generation of secretPath to storageBackendGenerateSecretData
and simplify a bit since we know vol->target.encryption is set plus
we have a local @enc.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Generate the qcow secret earlier
John Ferlan [Wed, 18 Apr 2018 18:08:51 +0000 (14:08 -0400)]
storage_util: Generate the qcow secret earlier

Rather than having storageBackendCreateQemuImgCheckEncryption
perform the virStorageGenerateQcowEncryption, let's just do that
earlier during storageBackendCreateQemuImg so that the check
helper is just a check helper rather doing something different
based on whether the format is qcow[2] or raw based encryption.

This fixes an issue in the storageBackendResizeQemuImg processing
for qcow encryption where if a secret was not available for a
volume, a new secret will not be generated and instead an error
message will be generated.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Rename virQEMUBuildLuksOpts
John Ferlan [Thu, 19 Apr 2018 13:47:31 +0000 (09:47 -0400)]
storage_util: Rename virQEMUBuildLuksOpts

Rename to storageBackendCreateQemuImgOpts - which is what it's doing.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Remove unnecessary check
John Ferlan [Wed, 18 Apr 2018 16:43:43 +0000 (12:43 -0400)]
storage_util: Remove unnecessary check

Commit id 'a48c71411' altered the logic a bit and didn't
remove an unnecessary check as info.encryption is true when
vol->target.encryption != NULL, so if we enter the if segment
with info.format == VIR_STORAGE_FILE_RAW && vol->target.encryption
!= NULL, then there's no way info.encryption could be false.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Cleanup usage of target.encryption
John Ferlan [Wed, 18 Apr 2018 17:02:19 +0000 (13:02 -0400)]
storage_util: Cleanup usage of target.encryption

Remove the != NULL checks, use !! for setting info.encryption.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agostorage_util: Some code cleanup
John Ferlan [Wed, 18 Apr 2018 16:23:04 +0000 (12:23 -0400)]
storage_util: Some code cleanup

Perform some code cleanup in areas that are about to be altered.

Signed-off-by: John Ferlan <jferlan@redhat.com>
6 years agodocs: Update news.xml with QEMU SDL OpenGL Improvement
Maciej Wolny [Fri, 11 May 2018 14:47:53 +0000 (15:47 +0100)]
docs: Update news.xml with QEMU SDL OpenGL Improvement

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
6 years agoqemu: Add gl option to SDL graphics command line
Maciej Wolny [Thu, 10 May 2018 10:53:59 +0000 (11:53 +0100)]
qemu: Add gl option to SDL graphics command line

Support OpenGL when using SDL backend via -sdl,gl=on. Add associated
tests.

NB: Usage of DO_TEST_CAPS_LATEST in qemuxml2argv doesn't work in
this case because -sdl gl is not introspectable.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: Add QEMU_CAPS_SDL_GL to qemu capabilities
Maciej Wolny [Thu, 10 May 2018 10:53:58 +0000 (11:53 +0100)]
qemu: Add QEMU_CAPS_SDL_GL to qemu capabilities

Support OpenGL acceleration capability when using SDL graphics.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoconf: Add gl property to graphics of type sdl in domain config
Maciej Wolny [Thu, 10 May 2018 10:53:57 +0000 (11:53 +0100)]
conf: Add gl property to graphics of type sdl in domain config

Support OpenGL accelerated rendering when using SDL graphics in the
domain config. Add associated test and documentation.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu_command: Remove outdated comment
Maciej Wolny [Thu, 10 May 2018 10:53:56 +0000 (11:53 +0100)]
qemu_command: Remove outdated comment

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu_command: Move SDL command line building into helper
Maciej Wolny [Thu, 10 May 2018 10:53:55 +0000 (11:53 +0100)]
qemu_command: Move SDL command line building into helper

Create a function called `qemuBuildGraphicsSDLCommandLine` which is
called from qemuBuildGraphicsCommandLine.

Signed-off-by: Maciej Wolny <maciej.wolny@codethink.co.uk>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoutil: fix misleading comment for virObjectLock
Daniel P. Berrangé [Fri, 11 May 2018 17:48:26 +0000 (18:48 +0100)]
util: fix misleading comment for virObjectLock

It only accepts a virObjecLockable, not a virObjecRWLockable

Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
6 years agolibxl: don't set hasManagedSave when performing save
Jim Fehlig [Mon, 14 May 2018 20:45:05 +0000 (14:45 -0600)]
libxl: don't set hasManagedSave when performing save

libxlDoDomainSave() is used in both the save and managedsave code
paths but was unconditionally setting hasManagedSave to true on
success. As a result, undefine would fail after a non-managed
save/restore operation. E.g.

virsh define; virsh start
virsh save; virsh restore
virsh shutdown
virsh undefine
error: Refusing to undefine while domain managed save image exists

Modify libxlDoDomainSave() to take an additional parameter to
specify managed vs non-managed save, and change callers to use it.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
6 years agotests: Link mocks with libvirt.so
Michal Privoznik [Tue, 15 May 2018 06:58:33 +0000 (08:58 +0200)]
tests: Link mocks with libvirt.so

In a lot of our mocks (if not all of them) we use our internal
APIs (e.g. VIR_ALLOC). So far, we're relying on test binary that
links with the mock to drag in libvirt.so. Well, this works only
partially. Firstly, whatever binary we execute from tests will
fail (e.g. as Martin reported on the list ./qemucapsprobe fails
to execute qemu). Secondly, if there's a program that tries to
validate linking (like valgrind is doing) it fails because of
unresolved symbols.

Because of that we have to link our mocks with libvirt.so.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoxenconfig: xm: Fix checking for extra in parser
Filip Alac [Sat, 12 May 2018 15:45:02 +0000 (17:45 +0200)]
xenconfig: xm: Fix checking for extra in parser

Parser assumed extra was always present when root was specified.
Fixed by handling root and extra separately.

Signed-off-by: Filip Alac <filipalac@gmail.com>
Reviewed-by: Jim Fehlig <jfehlig@suse.com>
6 years agonews: documentation of new feature
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:18 +0000 (16:41 +0200)]
news: documentation of new feature

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agodocs: documentation for vfio-ccw passthrough
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:17 +0000 (16:41 +0200)]
docs: documentation for vfio-ccw passthrough

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: command line generation for vfio-ccw device
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:15 +0000 (16:41 +0200)]
qemu: command line generation for vfio-ccw device

Generates the QEMU command line for the vfio-ccw device.

Adds various functionality testing for vfio-ccw in libvirt:

1. Generation of QEMU command line from domain xml file
2. Generation of dump xml from domain xml file
3. Checks duplicate/invalid addresses for vfio-ccw devices.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: vfio-ccw device address generation
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:14 +0000 (16:41 +0200)]
qemu: vfio-ccw device address generation

Introduces the vfio-ccw model for mediated devices and prime vfio-ccw
devices such that CCW address will be generated.

Alters the qemuxml2xmltest for testing a basic mdev device using vfio-ccw.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.vnet.ibm.com>
Reviewed-by: Stefan Zimmermann <stzi@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoutil: virhostdev: add virHostdevIsMdevDevice()
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:13 +0000 (16:41 +0200)]
util: virhostdev: add virHostdevIsMdevDevice()

Add the function virHostdevIsMdevDevice() which detects whether a
hostdev is a mediated device or not. Also, replace all existing
conditionals.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: introduce vfio-ccw capability
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:12 +0000 (16:41 +0200)]
qemu: introduce vfio-ccw capability

Let us introduce the capability vfio-ccw for supporting the basic
channel I/O passthrough, which have been introduced in QEMU 2.10. The
current focus is to support dasd-eckd (cu_type/dev_type = 0x3990/0x3390)
as the target device.

Let us also introduce the capability QEMU_CAPS_CCW_CSSID_UNRESTRICTED
for virtual-css-bridge. This capability is based on the
cssid-unrestricted property which exists if QEMU no longer enforces
cssid restrictions based on ccw device types.

Vfio-ccw capability is dependent on the hidden virtual-css-bridge, so
that we are able to probe for the cssid-unrestriced property to make
sure the devices are visible to non-mcss-e enabled guests.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: introduce capability for virtual-css-bridge
Shalini Chellathurai Saroja [Mon, 7 May 2018 14:41:11 +0000 (16:41 +0200)]
qemu: introduce capability for virtual-css-bridge

Let us introduce the capability QEMU_CAPS_CCW for virtual-css-bridge
and replace QEMU_CAPS_VIRTIO_CCW with QEMU_CAPS_CCW in code segments
which identify support for ccw devices.

The virtual-css-bridge is part of the ccw support introduced in QEMU 2.7.
The QEMU_CAPS_CCW capability is based on the existence of the QEMU type.

Let us also add the capability QEMU_CAPS_CCW to the tests which
require support for ccw devices.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agovircrypto: Rely on GnuTLS for hash functions
Ján Tomko [Fri, 11 May 2018 14:18:17 +0000 (16:18 +0200)]
vircrypto: Rely on GnuTLS for hash functions

Ditch the use of gnulib's digest functions in favor of GnuTLS,
which might be more likely to get FIPS-certified.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agoesx: Use VIR_CRYPTO_HASH_SIZE_MD5
Ján Tomko [Fri, 11 May 2018 13:50:48 +0000 (15:50 +0200)]
esx: Use VIR_CRYPTO_HASH_SIZE_MD5

Do not rely on gnulib's MD5_DIGEST_SIZE from md5.h.

Include vircrypto.h and use VIR_CRYPTO_HASH_SIZE_MD5.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agoesx: use virCryptoHashBuf
Ján Tomko [Fri, 11 May 2018 14:49:32 +0000 (16:49 +0200)]
esx: use virCryptoHashBuf

Instead of using md5_buffer from gnulib directly.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agoIntroduce virCryptoHashBuf
Ján Tomko [Fri, 11 May 2018 14:31:10 +0000 (16:31 +0200)]
Introduce virCryptoHashBuf

A function that keeps the hash in binary form instead of converting
it to human-readable hexadecimal form.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agovircrypto: provide constants for hash sizes
Ján Tomko [Fri, 11 May 2018 13:42:35 +0000 (15:42 +0200)]
vircrypto: provide constants for hash sizes

The callers needing to know the size of the resulting digest
rely on _DIGEST_SIZE constants from gnulib.

Introduce VIR_CRYPTO_HASH_SIZE_ constants to remove the dependency.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agotravis: Uninstall packages before upgrade
Andrea Bolognani [Mon, 14 May 2018 07:45:10 +0000 (09:45 +0200)]
travis: Uninstall packages before upgrade

numpy (needed by cgal) started having the same issue with
linking as python, which makes upgrade and thus the entire
build fail on macOS.

Instead of playing more tricks with linking/unlinking, just
uninstall the problematic packages (and those dragging them
in) before doing anything else.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
6 years agoqemu: Implement memoryBacking/discard
Michal Privoznik [Thu, 12 Apr 2018 15:16:40 +0000 (17:16 +0200)]
qemu: Implement memoryBacking/discard

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

QEMU has this new feature memory-backend-file.discard-data=yes
which is a nifty optimization. Basically, when qemu is quitting
or on memory hotplug it calls munmap() and close() on the file
that is backing the memory. However, this does not mean kernel
won't stop touching that part of memory. It still might. With
this feature enabled we tell kernel: "we don't need this memory
nor data stored in it". This makes kernel drop the memory
immediately without trying to sync memory with the mapped file.

Unfortunately, this cannot be turned on by default because we
can't be sure when users really don't care about what happens to
data after qemu dies. So it has to be opt-in. As usual, there are
three places where one can configure memory attributes. This
patch adds the feature to all of them.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoconf: Introduce memoryBacking/discard
Michal Privoznik [Fri, 11 May 2018 13:08:53 +0000 (15:08 +0200)]
conf: Introduce memoryBacking/discard

QEMU has possibility to call madvise(.., MADV_REMOVE) in some
cases. Expose this feature to users by new element/attribute
discard.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoconf: Move virDomainMemtune formatting into a separate function
Michal Privoznik [Fri, 11 May 2018 12:48:59 +0000 (14:48 +0200)]
conf: Move virDomainMemtune formatting into a separate function

At the same time convert the code to use virXMLFormatElement.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoqemu_capabilities: Introduce QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD
Michal Privoznik [Fri, 20 Apr 2018 08:25:49 +0000 (10:25 +0200)]
qemu_capabilities: Introduce QEMU_CAPS_OBJECT_MEMORY_FILE_DISCARD

This capability tracks if memory-backend-file has discard-data
attribute or not.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoqemu_capabilities: Introduce QEMU_CAPS_QOM_LIST_PROPERTIES
Michal Privoznik [Fri, 20 Apr 2018 08:31:54 +0000 (10:31 +0200)]
qemu_capabilities: Introduce QEMU_CAPS_QOM_LIST_PROPERTIES

This capability tracks if qemu has "qom-list-properties" monitor
command.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoqemu_monitor: Introduce qemuMonitorGetObjectProps
Michal Privoznik [Thu, 12 Apr 2018 13:04:07 +0000 (15:04 +0200)]
qemu_monitor: Introduce qemuMonitorGetObjectProps

Now that we've gotten rid of misleading names we can introduce
qemuMonitorGetObjectProps() function which queries -object
properties. Again, some parts of code can be reused.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoqemuMonitorJSONGetDeviceProps: Separate props processing
Michal Privoznik [Fri, 20 Apr 2018 07:20:36 +0000 (09:20 +0200)]
qemuMonitorJSONGetDeviceProps: Separate props processing

The code that processes list of device properties is going to be
reused. Therefore put it into a separate function.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agobhyve: start using virDomainObjCheckActive
Clementine Hayat [Sun, 13 May 2018 22:32:15 +0000 (00:32 +0200)]
bhyve: start using virDomainObjCheckActive

Signed-off-by: Clementine Hayat <clem@lse.epita.fr>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agolxc: start using virDomainObjCheckActive
Clementine Hayat [Sun, 13 May 2018 22:32:14 +0000 (00:32 +0200)]
lxc: start using virDomainObjCheckActive

Signed-off-by: Clementine Hayat <clem@lse.epita.fr>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agoqemu: start using virDomainObjCheckActive
Clementine Hayat [Sun, 13 May 2018 22:32:13 +0000 (00:32 +0200)]
qemu: start using virDomainObjCheckActive

Signed-off-by: Clementine Hayat <clem@lse.epita.fr>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agovirutil.c: do not include stdarg.h
Ján Tomko [Mon, 23 Apr 2018 15:11:50 +0000 (17:11 +0200)]
virutil.c: do not include stdarg.h

Last functions using it were moved to virfile.c in commit <bfe7721>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agovirutil.c: do not include ioctl.h
Ján Tomko [Mon, 23 Apr 2018 15:06:57 +0000 (17:06 +0200)]
virutil.c: do not include ioctl.h

Added by commit 61674cc, but we have started using
set_nonblocking_flag from gnulib in commit da3c4714

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agobhyve: document support for wiring guest memory
Fabian Freyer [Wed, 9 May 2018 01:01:37 +0000 (03:01 +0200)]
bhyve: document support for wiring guest memory

Signed-off-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Reviewed-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
6 years agobhyve: add tests for wiring memory
Fabian Freyer [Wed, 9 May 2018 01:01:36 +0000 (03:01 +0200)]
bhyve: add tests for wiring memory

Signed-off-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Reviewed-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
6 years agobhyve: add support for wiring memory
Fabian Freyer [Wed, 9 May 2018 01:01:35 +0000 (03:01 +0200)]
bhyve: add support for wiring memory

The <memoryBacking><locked/></memoryBacking> element will now pass the
wired (-S) flag to the bhyve command.

Signed-off-by: Fabian Freyer <fabian.freyer@physik.tu-berlin.de>
Reviewed-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
6 years agomaint: typo fix in VIR_MIGRATE_PARAM_URI
Eric Blake [Fri, 11 May 2018 20:31:21 +0000 (15:31 -0500)]
maint: typo fix in VIR_MIGRATE_PARAM_URI

s/filed/field/

Signed-off-by: Eric Blake <eblake@redhat.com>
6 years agolog: update docs for daemons to improve user understanding
Daniel P. Berrangé [Fri, 20 Apr 2018 16:52:04 +0000 (17:52 +0100)]
log: update docs for daemons to improve user understanding

Strongly recommend against use of the log_levels setting since it
creates overly verbose logs and has a serious performance impact.

Describe the log filter syntax better and mention use of shell
glob syntax. Also provide more realistic example of good settings
to use. The libvirtd example is biased towards QEMU, but when the
drivers split off each daemon can get its own more appropriate
example.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
6 years agolog: support logging using shell wildcard syntax
Daniel P. Berrangé [Fri, 20 Apr 2018 16:38:56 +0000 (17:38 +0100)]
log: support logging using shell wildcard syntax

Rather than specialcasing handling of the '*' character, use fnmatch()
to get normal shell wildcard syntax, as described in 'man glob(7)'.

To get an indication of the performance impact of using globs instead
of plain string matches, a test program was written. The list of all
260 log categories was extracted from the source. Then a typical log
filters setup was picked by creating an array of the strings "qemu",
"security", "util", "cgroup", "event", "object". Every filter string
was matched against every log category. Timing information showed that
using strstr() this took 8 microseconds, while fnmatch() took 114
microseconds.

IOW, fnmatch is 14 times slower than our existing strstr check. These
numbers show a worst case scenario that will never be hit, because it
is rare that every log category would have data output. The log category
matches are cached, so each category is only checked once no matter how
many log statements are emitted. IOW despite being slower, this will
be lost in the noise and have no consequence on real world logging
performance.

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
6 years agolog: rename virLogFlags to virLogFilterFlags to match docs
Daniel P. Berrangé [Fri, 20 Apr 2018 14:46:08 +0000 (15:46 +0100)]
log: rename virLogFlags to virLogFilterFlags to match docs

Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
6 years agovirbuffer: Set child buffer indent properly
Michal Privoznik [Fri, 11 May 2018 12:05:53 +0000 (14:05 +0200)]
virbuffer: Set child buffer indent properly

There's this macro virBufferSetChildIndent which sets offset of
child buffer from given parent buffer. However, it is calling
virBufferAdjustIndent() which only adds adjustment instead of
calling virBufferSetIndent() which clears out any adjustment
previously set.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agotests: replace references to yajl
Ján Tomko [Wed, 9 May 2018 14:42:43 +0000 (16:42 +0200)]
tests: replace references to yajl

Use "libvirt not compiled with JSON support" instead of mentioning
yajl specifically.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agovirJSONValue: remove unused 'protect' property
Ján Tomko [Thu, 10 May 2018 12:25:57 +0000 (14:25 +0200)]
virJSONValue: remove unused 'protect' property

The last usage was removed by commit <167028e>

Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agovirsh: Don't skip the first entry when the typed command share same prefix
Lin Ma [Fri, 11 May 2018 09:13:10 +0000 (17:13 +0800)]
virsh: Don't skip the first entry when the typed command share same prefix

Signed-off-by: Lin Ma <lma@suse.com>
6 years agorpc: replacing ssh_get_publickey() by ssh_get_server_publickey().
Julio Faracco [Thu, 10 May 2018 20:38:57 +0000 (17:38 -0300)]
rpc: replacing ssh_get_publickey() by ssh_get_server_publickey().

After version 0.7.5, libssh deprecated the function scope
ssh_get_publickey() and moved to ssh_get_server_publickey(). So, Libvirt
is failing to compile using this new function name.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
6 years agom4: checking if ssh_get_server_publickey() exists.
Julio Faracco [Thu, 10 May 2018 20:38:56 +0000 (17:38 -0300)]
m4: checking if ssh_get_server_publickey() exists.

This commit adds some checks inside libssh m4 checking to verify if
ssh_get_server_publickey is available. This new function scope replaces
the old ssh_get_publickey() from libssh 0.7.5 and below. Assuming that
some distros are not showing the right version of libssh. This is a
simple way to check which function is available.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
6 years agoqemu: Detect pr-manager-helper capability
Michal Privoznik [Mon, 26 Mar 2018 10:27:16 +0000 (12:27 +0200)]
qemu: Detect pr-manager-helper capability

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu_hotplug: Hotunplug of reservations
Michal Privoznik [Mon, 23 Apr 2018 11:51:49 +0000 (13:51 +0200)]
qemu_hotplug: Hotunplug of reservations

If we are the last one to use pr-manager object we need to remove
it and also kill the qemu-pr-helper process.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu_hotplug: Hotplug of reservations
Michal Privoznik [Mon, 23 Apr 2018 11:21:03 +0000 (13:21 +0200)]
qemu_hotplug: Hotplug of reservations

When attaching a disk that requires pr-manager we might need to
plug the pr-manager object and start the pr-helper process.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: Start PR daemon on domain startup
Michal Privoznik [Thu, 19 Apr 2018 08:00:36 +0000 (10:00 +0200)]
qemu: Start PR daemon on domain startup

Before we exec() qemu we have to spawn pr-helper processes for
all managed reservations (well, technically there can only one).
The only caveat there is that we should place the process into
the same namespace and cgroup as qemu (so that it shares the same
view of the system). But we can do that only after we've forked.
That means calling the setup function between fork() and exec().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: Introduce pr_helper to qemu.conf
Michal Privoznik [Fri, 15 Dec 2017 09:42:40 +0000 (10:42 +0100)]
qemu: Introduce pr_helper to qemu.conf

Just like we allow users overriding path to bridge-helper
detected at compile time we can allow them to override path to
qemu-pr-helper.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu_cgroup: Allow /dev/mapper/control for PR
Michal Privoznik [Tue, 10 Apr 2018 06:00:59 +0000 (08:00 +0200)]
qemu_cgroup: Allow /dev/mapper/control for PR

Just like in previous commit, qemu-pr-helper might want to open
/dev/mapper/control under certain circumstances. Therefore we
have to allow it in cgroups.

The change virdevmapper.c might look spurious but it isn't. After
6dd84f6850ca437 any path that we're allowing in deivces CGroup is
subject to virDevMapperGetTargets() inspection. And libdevmapper
returns ENXIO for the path from subject.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu_ns: Allow /dev/mapper/control for PR
Michal Privoznik [Mon, 9 Apr 2018 12:44:44 +0000 (14:44 +0200)]
qemu_ns: Allow /dev/mapper/control for PR

If qemu-pr-helper is compiled with multipath support the first
thing it does is open /dev/mapper/control. Since we're going
to be running it inside qemu namespace we need to create it
there. Unfortunately, we don't know if it was compiled with or
without multipath so we have to create it anyway.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: Generate pr cmd line at startup
Michal Privoznik [Wed, 18 Apr 2018 14:55:14 +0000 (16:55 +0200)]
qemu: Generate pr cmd line at startup

For command line we need two things:

1) -object pr-manager-helper,id=$alias,path=$socketPath
2) -drive file.pr-manager=$alias

In -object pr-manager-helper we tell qemu which socket to connect
to, then in -drive file-pr-manager we just reference the object
the drive in question should use.

For managed PR helper the alias is always "pr-helper0" and socket
path "${vm->priv->libDir}/pr-helper0.sock".

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: Introduce pr-manager-helper capability
Michal Privoznik [Mon, 19 Feb 2018 06:41:25 +0000 (07:41 +0100)]
qemu: Introduce pr-manager-helper capability

The capability tracks if qemu has pr-manager-helper object. At
this time don't actually detect if qemu has the capability. Not
just yet. Only after the code is written the feature will be
enabled.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemuDomainDiskChangeSupported: Deny changing reservations
Michal Privoznik [Thu, 14 Dec 2017 10:47:02 +0000 (11:47 +0100)]
qemuDomainDiskChangeSupported: Deny changing reservations

Couple of reasons for that:

a) there's no monitor command to change path where the pr-helper
connects to, or
b) there's no monitor command to introduce a new pr-helper for a
disk that already exists.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agovirstoragefile: Introduce virStoragePRDef
Michal Privoznik [Mon, 27 Nov 2017 10:54:33 +0000 (11:54 +0100)]
virstoragefile: Introduce virStoragePRDef

This is a definition that holds information on SCSI persistent
reservation settings. The XML part looks like this:

  <reservations enabled='yes' managed='no'>
    <source type='unix' path='/path/to/qemu-pr-helper.sock' mode='client'/>
  </reservations>

If @managed is set to 'yes' then the <source/> is not parsed.
This design was agreed on here:

https://www.redhat.com/archives/libvir-list/2017-November/msg01005.html

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoutil: Clean up consumers of virJSONValueArraySize
John Ferlan [Thu, 19 Apr 2018 21:29:02 +0000 (17:29 -0400)]
util: Clean up consumers of virJSONValueArraySize

Rather than have virJSONValueArraySize return a -1 when the input
is not an array and then splat an error message, let's check for
an array before calling and then change the return to be a size_t
instead of ssize_t.

That means using the helper virJSONValueIsArray as well as using a
more generic error message such as "Malformed <something> array".
In some cases we can remove stack variables and when we cannot,
those variables should be size_t not ssize_t. Alter a few references
of if (!value) to be if (value == 0) instead as well.

Some callers can already assume an array is being worked on based
on the previous call, so there's less to do.

Signed-off-by: John Ferlan <jferlan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
6 years agoqemu: Remove parameter 'driver' from qemuBlockJobUpdate
Roland Schulz [Thu, 10 May 2018 14:16:30 +0000 (16:16 +0200)]
qemu: Remove parameter 'driver' from qemuBlockJobUpdate

The pointer to the qemu driver is already included in domain object's
private data, so does not need to be passed as yet another parameter
when the domain object is already passed.

Also removes parameter 'driver' from functions which had it just because of
qemuBlockJobUpdate.

Signed-off-by: Roland Schulz <schullzroll@gmail.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
6 years agovirsh: Apply macro for current VSH_OT_ARGV "domain" options
Lin Ma [Tue, 8 May 2018 14:20:36 +0000 (22:20 +0800)]
virsh: Apply macro for current VSH_OT_ARGV "domain" options

Signed-off-by: Lin Ma <lma@suse.com>
6 years agovirsh: Create macros for VSH_OT_ARGV "domain" option
Lin Ma [Tue, 8 May 2018 14:20:35 +0000 (22:20 +0800)]
virsh: Create macros for VSH_OT_ARGV "domain" option

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
6 years agovshReadlineParse: Ignore vshReadlineOptionsGenerator for VSH_OT_ARGV options
Lin Ma [Tue, 8 May 2018 14:20:34 +0000 (22:20 +0800)]
vshReadlineParse: Ignore vshReadlineOptionsGenerator for VSH_OT_ARGV options

Currently the VSH_OT_ARGV options don't support complete, But some of
VSH_OT_ARGV options are gonna support complete in upcoming patches.

Once applied the upcoming completion patches for VSH_OT_ARGV options, If
we don't ignore VSH_OT_ARGV here, The vshReadlineOptionsGenerator will
be called, Hence complete output will consist of the result by command
completer + the result by option completer, It's confusing.
e.g.
    $ virsh domstats --domain <TAB><TAB>
    --backing     --interface      --list-paused      --perf      --vcpu
    --balloon     leap42.3         --list-persistent  --raw       win10
    --block       --list-active    --list-running     sles12sp3
    --cpu-total   --list-inactive  --list-shutoff     sles15
    --enforce     --list-other     --list-transient   --state

After this patch and the upcoming completion patches:
    $ virsh domstats --domain <TAB><TAB>
    leap42.3    sles12sp3    sles15    win10

Signed-off-by: Lin Ma <lma@suse.com>
6 years agovshReadlineOptionsGenerator: Add already provided VSH_OT_ARGV options to list
Lin Ma [Tue, 8 May 2018 14:20:37 +0000 (22:20 +0800)]
vshReadlineOptionsGenerator: Add already provided VSH_OT_ARGV options to list

It's helpful for users while they type certain kind of VSH_OT_ARGV options.
e.g.

$ virsh domstats --domain sles12sp3 --d<TAB>

Signed-off-by: Lin Ma <lma@suse.com>
6 years agovirsh: Apply macro for current VSH_OT_STRING "domain" options
Lin Ma [Tue, 8 May 2018 14:20:33 +0000 (22:20 +0800)]
virsh: Apply macro for current VSH_OT_STRING "domain" options

These VSH_OT_STRING "domain" options support domain name completion now.

Signed-off-by: Lin Ma <lma@suse.com>
6 years agovirsh: Create macros for VSH_OT_STRING "domain" option
Lin Ma [Tue, 8 May 2018 14:20:32 +0000 (22:20 +0800)]
virsh: Create macros for VSH_OT_STRING "domain" option

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
6 years agovirsh: Conditionally Ignore the first entry in list of completions
Lin Ma [Tue, 8 May 2018 14:20:31 +0000 (22:20 +0800)]
virsh: Conditionally Ignore the first entry in list of completions

The first entry in the returned array is the substitution for TEXT. It
causes unnecessary output if other commands or options share the same
prefix, e.g.

$ virsh des<TAB><TAB>
des      desc     destroy

or

$ virsh domblklist --d<TAB><TAB>
--d        --details  --domain

This patch fixes the above issue.

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
6 years agovirsh: Add domain name completion to 'migrate-postcopy' command
Lin Ma [Tue, 8 May 2018 14:20:30 +0000 (22:20 +0800)]
virsh: Add domain name completion to 'migrate-postcopy' command

Signed-off-by: Lin Ma <lma@suse.com>
6 years agovirsh: Move the definition of macro VIRSH_COMMON_OPT_DOMAIN_FULL to virsh.h
Lin Ma [Tue, 8 May 2018 14:20:29 +0000 (22:20 +0800)]
virsh: Move the definition of macro VIRSH_COMMON_OPT_DOMAIN_FULL to virsh.h

centralize the definition of macro VIRSH_COMMON_OPT_DOMAIN_FULL to virsh.h
to avoid unnecessary duplicated definition

Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
6 years agoDeprecate QEMU_CAPS_NESTING
Ján Tomko [Thu, 3 May 2018 10:14:41 +0000 (12:14 +0200)]
Deprecate QEMU_CAPS_NESTING

Unused since commit <a7424fa>.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
6 years agoqemu: domain: Replace qemuDomainFilePathIsHostCDROM with virFileIsCDROM
Peter Krempa [Mon, 7 May 2018 15:19:27 +0000 (17:19 +0200)]
qemu: domain: Replace qemuDomainFilePathIsHostCDROM with virFileIsCDROM

Use the new helper when checking that the VM needs to be tainted as a
host-cdrom passthrough.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Laine Stump <laine@laine.org>
7 years agospec: Remove Group: tags
Cole Robinson [Tue, 8 May 2018 13:46:56 +0000 (09:46 -0400)]
spec: Remove Group: tags

It's only required on el5 which we don't support anymore. Everywhere
else it's not used for anything useful

https://fedoraproject.org/wiki/RPMGroups

Signed-off-by: Cole Robinson <crobinso@redhat.com>
7 years agospec: Remove %clean section
Igor Gnatenko [Wed, 14 Feb 2018 08:28:07 +0000 (09:28 +0100)]
spec: Remove %clean section

None of currently supported distributions need that.
Last one was EL5 which is EOL for a while.

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
7 years agospec: Remove BuildRoot definition
Igor Gnatenko [Tue, 13 Feb 2018 22:44:12 +0000 (23:44 +0100)]
spec: Remove BuildRoot definition

None of currently supported distributions need that.
It was needed last for EL5 which is EOL now

Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
Signed-off-by: Cole Robinson <crobinso@redhat.com>
7 years agoxenconfig: remove my name and email from files
David Kiarie [Tue, 8 May 2018 12:40:00 +0000 (15:40 +0300)]
xenconfig: remove my name and email from files

Remove my name and email from these files

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: David Kiarie <davidkiarie4@gmail.com>
7 years agoutil: file: Fix usage of STRPREFIX in virFileIsCDROM
Peter Krempa [Mon, 7 May 2018 15:12:26 +0000 (17:12 +0200)]
util: file: Fix usage of STRPREFIX in virFileIsCDROM

STRPREFIX takes only two arguments, but the code it was adapted from
used function with 3 arguments.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
7 years agotests: qemublock: Test handling of block devices
Peter Krempa [Wed, 25 Apr 2018 13:53:18 +0000 (15:53 +0200)]
tests: qemublock: Test handling of block devices

Make sure that 'host_device' is generated for type='block'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Test handling of all cache modes
Peter Krempa [Fri, 6 Apr 2018 12:24:51 +0000 (14:24 +0200)]
tests: qemublock: Test handling of all cache modes

The test cases would correspond to the following -drive command lines:

dir-fat-cache.xml:
-drive file=fat:/var/somefiles,if=none,id=drive-dummy,readonly=on,cache=directsync
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

file-backing_basic-cache-directsync.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=directsync
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

file-backing_basic-cache-none.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=none
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

file-backing_basic-cache-unsafe.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=unsafe
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

file-backing_basic-cache-writeback.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=writeback
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

file-backing_basic-cache-writethrough.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow2,if=none,id=drive-dummy,cache=writethrough
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

network-qcow2-backing-chain-cache-unsafe.xml:
-drive file=rbd:rbdpool/rbdimg:id=testuser-rbd:auth_supported=cephx\;none:
        mon_host=host1.example.com\;host2.example.com,
        file.password-secret=node-a-s-secalias,format=qcow2,
        if=none,id=drive-dummy,cache=directsync
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=off

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Test handling of 'unmap' and 'detect-zeroes' options
Peter Krempa [Fri, 6 Apr 2018 12:07:44 +0000 (14:07 +0200)]
tests: qemublock: Test handling of 'unmap' and 'detect-zeroes' options

The test cases would correspond to the following -drive command lines:

file-backing_basic-detect.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,detect-zeroes=on
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-backing_basic-unmap-detect.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,discard=unmap,detect-zeroes=unmap
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-backing_basic-unmap-ignore.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,discard=ignore,detect-zeroes=on
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-backing_basic-unmap.xml:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,discard=unmap
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add test combining authentication and encryption
Peter Krempa [Mon, 19 Mar 2018 11:51:20 +0000 (12:51 +0100)]
tests: qemublock: Add test combining authentication and encryption

iscsi and rbd support authentication of the connection. Combine it with
encryption of qcow2.

The top level disk image would generate the following '-drive' cmdline:

-drive file=rbd:rbdpool/rbdimg:id=testuser-rbd:auth_supported=cephx\;none:
            mon_host=host1.example.com\;host2.example.com,
            file.password-secret=node-a-s-secalias,encrypt.format=luks,
            encrypt.key-secret=node-b-f-encalias,format=qcow2,
            if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: basic qcow2 tests
Peter Krempa [Fri, 16 Mar 2018 16:56:16 +0000 (17:56 +0100)]
tests: qemublock: basic qcow2 tests

Add tests for backing chain handling, including a very long chain which
is fully specified in the XML and an unterminated chain.

The top level disk image would generate the following '-drive':

file-qcow2-backing-chain-encryption.xml:
-drive file=/var/lib/libvirt/images/a,encrypt.format=luks,
    encrypt.key-secret=node-b-f-encalias,format=qcow2,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-qcow2-backing-chain-noopts.xml:
-drive file=/var/lib/libvirt/images/rhel7.3.1507297895,format=qcow2,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-qcow2-backing-chain-unterminated.xml:
-drive file=/var/lib/libvirt/images/rhel7.3.1507297895,format=qcow2,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add test for raw luks disk format
Peter Krempa [Thu, 19 Apr 2018 14:16:44 +0000 (16:16 +0200)]
tests: qemublock: Add test for raw luks disk format

Apart from adding test data add a function which sets up fake secrets
for the test.

The top level disk image would generate the following '-drive' cmdline:

-drive file=/path/luks.img,key-secret=test1-encalias,format=luks,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add test cases for 'aio' options of 'file' storage
Peter Krempa [Mon, 19 Mar 2018 07:59:19 +0000 (08:59 +0100)]
tests: qemublock: Add test cases for 'aio' options of 'file' storage

Test that the 'aio' option is applied correctly for the 'file' protocol
backend and across the backing chain.

The top level disk image would generate the following '-drive' cmdline:

file-backing_basic-aio_threads:
-drive file=/var/lib/libvirt/images/a,format=qcow,if=none,id=drive-dummy,aio=threads
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-raw-aio_native:
-drive file=/path/to/i.img,format=raw,if=none,id=drive-dummy,cache=none,aio=native
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy,write-cache=on

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add test-case for the 'vvfat' driver in qemu
Peter Krempa [Mon, 19 Mar 2018 07:00:19 +0000 (08:00 +0100)]
tests: qemublock: Add test-case for the 'vvfat' driver in qemu

Test mapping of the 'FAT' disk format to 'vvfat' in qemu.

The top level disk image would generate the following '-drive' cmdline:

dir-fat-readonly.xml:
-drive file=fat:/var/somefiles,if=none,id=drive-dummy,readonly=on
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

dir-fat-floppy.xml
-drive file=fat:floppy:/var/somefiles,if=none,id=drive-dummy,readonly=on

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add tests for basic backing chain formats
Peter Krempa [Wed, 28 Mar 2018 08:27:14 +0000 (10:27 +0200)]
tests: qemublock: Add tests for basic backing chain formats

Formats supporting backing chain such as qed, vmdk, don't have any other
parameters than the backing store and 'qcow' has only encryption params
which will be tested extra. Add this test case so they are covered since
any further test cases will mainly care about 'qcow2' and 'raw'.

The top level disk image would generate the following '-drive' cmdline:

-drive file=/var/lib/libvirt/images/a,format=qed,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add tests for all other format without special options
Peter Krempa [Wed, 28 Mar 2018 08:11:38 +0000 (10:11 +0200)]
tests: qemublock: Add tests for all other format without special options

Similarly to the 'raw' case add tests for bochs, cloop, dmg, ploop, vdi
vhd, and vpc. Covering all supported non-backing formats.

Note that the JSON name for 'ploop' maps to 'parallels' and 'vhd' maps
to 'vhdx'.

Files added here would result in the followint configs:

file-bochs-noopts.xml:
-drive file=/path/to/i.img,format=bochs,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-cloop-noopts.xml:
-drive file=/path/to/i.img,format=cloop,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-dmg-noopts.xml:
-drive file=/path/to/i.img,format=dmg,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-ploop-noopts.xml:
-drive file=/path/to/i.img,format=ploop,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-vdi-noopts.xml:
-drive file=/path/to/i.img,format=vdi,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-vhd-noopts.xml:
-drive file=/path/to/i.img,format=vhd,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

file-vpc-noopts.xml:
-drive file=/path/to/i.img,format=vpc,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add basic 'raw' file test
Peter Krempa [Wed, 28 Mar 2018 07:40:03 +0000 (09:40 +0200)]
tests: qemublock: Add basic 'raw' file test

Test the JSON props generator with a very simple 'raw' image with no
other options. The node-names for the image are 31 bytes long so that we
validate our node name detector.

The top level disk image would generate the following '-drive' cmdline:

-drive file=/var/lib/libvirt/images/i.img,format=raw,if=none,id=drive-dummy
-device virtio-blk-pci,scsi=off,drive=drive-dummy,id=dummy

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: qemublock: Add testing of blockdev JSON property generator
Peter Krempa [Fri, 23 Mar 2018 08:06:40 +0000 (09:06 +0100)]
tests: qemublock: Add testing of blockdev JSON property generator

Add a test infrastructure that will allow testing the JSON object
generator used for generating data to use with blockdev-add.

The resulting disk including the backing chain is validated to conform
to the QAPI schema and the expected output files.

The first test cases make sure that libvirt will not allow nodenames
exceeding 31 chars.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agoqemu: domain: Tolerate NULL 'cfg' in qemuDomainPrepareDiskSourceChain
Peter Krempa [Thu, 19 Apr 2018 13:54:18 +0000 (15:54 +0200)]
qemu: domain: Tolerate NULL 'cfg' in qemuDomainPrepareDiskSourceChain

The function will be reused in the test code where we don't care much
that the gluster debug level can't be populated from the qemu config.

Set the level only when 'cfg' is passed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agoqemu: domain: Export qemuDomainDeviceDefValidateDisk
Peter Krempa [Thu, 19 Apr 2018 11:44:04 +0000 (13:44 +0200)]
qemu: domain: Export qemuDomainDeviceDefValidateDisk

It will be used in the qemublocktest.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
7 years agotests: Makefile: Sanitize entry for qemublocktest
Peter Krempa [Fri, 23 Mar 2018 07:16:09 +0000 (08:16 +0100)]
tests: Makefile: Sanitize entry for qemublocktest

Remove gnulib from _LDADD and move LDADDS to replace it. Also reformat
the _SOURCES so that they can be easily extended.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>