]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
5 years agotests: qemublock: Use bigger numbers as dummy capacity/physical
Peter Krempa [Fri, 30 Aug 2019 14:36:15 +0000 (16:36 +0200)]
tests: qemublock: Use bigger numbers as dummy capacity/physical

Actually test that the full range is available.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: block: Use correct type when creating image size JSON entries
Peter Krempa [Fri, 30 Aug 2019 14:33:48 +0000 (16:33 +0200)]
qemu: block: Use correct type when creating image size JSON entries

The 'u' modifier creates an unsigned int JSON attribute but the disk size
and capacity fields are unsigned long long. If the size of the created
image would be more than 4GiB we'd overflow and create sub-4G image.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agonews: Mention removal of xenapi driver
Jim Fehlig [Tue, 3 Sep 2019 04:46:00 +0000 (22:46 -0600)]
news: Mention removal of xenapi driver

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoxenapi: remove driver
Jim Fehlig [Tue, 3 Sep 2019 04:24:00 +0000 (22:24 -0600)]
xenapi: remove driver

The xenapi driver has not seen any development since its initial
contribution 9 years ago. There have been no bug reports, no patches,
and no queries about the driver on the developer or user mailing lists.
Remove the driver from the libvirt sources.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agomaint: Post-release version bump to 5.8.0
Jim Fehlig [Tue, 3 Sep 2019 21:19:22 +0000 (15:19 -0600)]
maint: Post-release version bump to 5.8.0

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
5 years agoRelease of libvirt 5.7.0
Daniel Veillard [Tue, 3 Sep 2019 15:19:02 +0000 (17:19 +0200)]
Release of libvirt 5.7.0

* docs/news.xml: updated for release

Signed-off-by: Daniel Veillard <veillard@redhat.com>
5 years agonews: document new libxml version requirement
Daniel P. Berrangé [Tue, 3 Sep 2019 12:24:27 +0000 (13:24 +0100)]
news: document new libxml version requirement

Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoqemu: domain: Fix potential NULL deref when parsing job private data
Peter Krempa [Mon, 2 Sep 2019 14:11:46 +0000 (16:11 +0200)]
qemu: domain: Fix potential NULL deref when parsing job private data

A specially crafted XML which would reference a non-existing disk but
request the mirror to be registered with the blockjob could potentially
make the parser dereference NULL. Fix it by moving the code slightly and
just treat it as a wrong job XML. Found by Coverity.

Reported-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
5 years agonews: Update for 5.7.0 release
Michal Privoznik [Tue, 3 Sep 2019 12:09:06 +0000 (14:09 +0200)]
news: Update for 5.7.0 release

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
5 years agonews: Rename --precopy-bandwidth migration option
Jiri Denemark [Mon, 2 Sep 2019 15:00:32 +0000 (17:00 +0200)]
news: Rename --precopy-bandwidth migration option

The (pre-copy) bandwidth was historically the only bandwidth we
supported and thus it is called just "bandwidth" in all other places.
E.g., virsh migrate-setspeed or in the migration typed parameter name.
Let's make the new option for virsh migrate consistent.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agovirsh: Rename --precopy-bandwidth migration option
Jiri Denemark [Mon, 2 Sep 2019 15:00:32 +0000 (17:00 +0200)]
virsh: Rename --precopy-bandwidth migration option

The (pre-copy) bandwidth was historically the only bandwidth we
supported and thus it is called just "bandwidth" in all other places.
E.g., virsh migrate-setspeed or in the migration typed parameter name.
Let's make the new option for virsh migrate consistent.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoqemu_blockjob: Remove secdriver metadata more frequently
Michal Privoznik [Fri, 30 Aug 2019 12:34:12 +0000 (14:34 +0200)]
qemu_blockjob: Remove secdriver metadata more frequently

If a block job reaches failed/cancelled state, or is completed
without pivot then we must remove security driver metadata
associated to the backing chain so that we don't leave any
metadata behind.

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

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
5 years agoqemu_blockjob: Print image path on failed security metadata move too
Michal Privoznik [Fri, 30 Aug 2019 13:07:48 +0000 (15:07 +0200)]
qemu_blockjob: Print image path on failed security metadata move too

When a block job is completed, the security image metadata are
moved to the new image. If this fails an warning is printed, but
the message contains only domain name and lacks image paths. Put
them both into the warning message.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
5 years agoqemu_blockjob: Move active commit failed state handling into a function
Michal Privoznik [Fri, 30 Aug 2019 12:21:24 +0000 (14:21 +0200)]
qemu_blockjob: Move active commit failed state handling into a function

Currently, there are only a few lines of code so a separate
function was not necessary, but this will change. So instead of
putting all the new code under 'case
QEMU_BLOCKJOB_TYPE_ACTIVE_COMMIT' create a separate function.
Just like every other case has one.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
5 years agoselinux: Do not report an error when not returning -1
Martin Kletzander [Thu, 29 Aug 2019 15:32:03 +0000 (17:32 +0200)]
selinux: Do not report an error when not returning -1

I guess the reason for that was the automatic interpretation/stringification of
setfilecon_errno, but the code was not nice to read and it was a bit confusing.
Also, the logs and error states get cleaner this way.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
5 years agoqemu: Validate arg in qemuAgentErrorComandUnsupported()
Jonathon Jongsma [Fri, 30 Aug 2019 16:09:09 +0000 (11:09 -0500)]
qemu: Validate arg in qemuAgentErrorComandUnsupported()

Coverity noted that 'reply' can be NULL after calling
qemuAgentCommand().  Avoid dereferencing reply in
qemuAgentErrorComandUnsupported() in that case.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
5 years agovircgroupv2: fix abort in VIR_AUTOFREE
Pavel Hrdina [Fri, 30 Aug 2019 14:15:15 +0000 (16:15 +0200)]
vircgroupv2: fix abort in VIR_AUTOFREE

Introduced by commit <c854e0bd33c7a5afb04a36465bf04f861b2efef5> that
tried to fix an issue where we would fail to parse values from files.

We cannot change the original pointer that is going to be used by
VIR_AUTOFREE.

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

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Acked-by: Peter Krempa <pkrempa@redhat.com>
5 years agoqemu_conf.c: removing unused virQEMUDriverConfigPtr variable
Daniel Henrique Barboza [Fri, 30 Aug 2019 10:03:55 +0000 (07:03 -0300)]
qemu_conf.c: removing unused virQEMUDriverConfigPtr variable

'virQEMUDriverConfigPtr cfg' is declared, initiated, but never
used in virQEMUDriverCreateCapabilities().

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Christophe de Dinechin <dinechin@redhat.com>
5 years agosecurity_selinux: Play nicely with network FS that only emulates SELinux
Michal Privoznik [Thu, 22 Aug 2019 14:34:02 +0000 (16:34 +0200)]
security_selinux: Play nicely with network FS that only emulates SELinux

There are some network file systems that do support XATTRs (e.g.
gluster via FUSE). And they appear to support SELinux too.
However, not really. Problem is, that it is impossible to change
SELinux label of a file stored there, and yet we claim success
(rightfully - hypervisor succeeds in opening the file). But this
creates a problem for us - from XATTR bookkeeping POV, we haven't
changed the label and thus if we remembered any label, we must
roll back and remove it.

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

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
5 years agosecurity_selinux: Drop virSecuritySELinuxSetFileconHelper
Michal Privoznik [Thu, 22 Aug 2019 08:25:24 +0000 (10:25 +0200)]
security_selinux: Drop virSecuritySELinuxSetFileconHelper

This function is no longer needed because after previous commits
it's just an alias to virSecuritySELinuxSetFilecon.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
5 years agosecurity_selinux: Drop @optional from _virSecuritySELinuxContextItem
Michal Privoznik [Thu, 22 Aug 2019 08:21:11 +0000 (10:21 +0200)]
security_selinux: Drop @optional from _virSecuritySELinuxContextItem

Now, that we don't need to remember if setting context is
'optional' (the argument only made
virSecuritySELinuxSetFileconImpl() return a different success
code), we can drop it from the _virSecuritySELinuxContextItem
structure as we don't need to remember it in transactions.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
5 years agosecurity_selinux: Drop virSecuritySELinuxSetFileconOptional()
Michal Privoznik [Thu, 22 Aug 2019 08:14:05 +0000 (10:14 +0200)]
security_selinux: Drop virSecuritySELinuxSetFileconOptional()

There is no real difference between
virSecuritySELinuxSetFilecon() and
virSecuritySELinuxSetFileconOptional(). Drop the latter in favour
of the former.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
5 years agovirSecuritySELinuxSetFileconImpl: Drop @optional argument
Michal Privoznik [Wed, 21 Aug 2019 15:50:55 +0000 (17:50 +0200)]
virSecuritySELinuxSetFileconImpl: Drop @optional argument

The only thing that the @optional argument does is that it makes
the function return 1 instead of 0 if setting SELinux context
failed in a non-critical fashion. Drop the argument then and
return 1 in that case. This enables caller to learn if SELinux
context was set or not.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
5 years agoqemu: command: Use all vCPU properties when creating args for vCPU hotplug
Peter Krempa [Thu, 29 Aug 2019 13:15:23 +0000 (15:15 +0200)]
qemu: command: Use all vCPU properties when creating args for vCPU hotplug

As qemu documents we should use everything in the 'props' sub-object of
the data returned by query-hotpluggable-cpus. Until now we only used
everything we recognized, but that may break in cases when qemu
introduces new fields.

This change requires a fix to the test data as some fields were
reordered.

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

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
5 years agoqemu: Extract and store vCPU properties as qemu returned them
Peter Krempa [Thu, 29 Aug 2019 12:47:10 +0000 (14:47 +0200)]
qemu: Extract and store vCPU properties as qemu returned them

In addition to the data that libvirt needs and extracts internally,
copy and store the whole 'props' JSON sub-object of the data returned by
query-hotpluggable-cpus for future use.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
5 years agoqemu: agent: fix potential leak in qemuAgentGetFSInfo()
Jonathon Jongsma [Thu, 29 Aug 2019 13:56:29 +0000 (08:56 -0500)]
qemu: agent: fix potential leak in qemuAgentGetFSInfo()

On error paths, info_ret could potentially leak. Make sure it's freed.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
5 years agosecurity_util: verify xattrs only if ref is present
Nikolay Shirokovskiy [Wed, 28 Aug 2019 10:21:02 +0000 (13:21 +0300)]
security_util: verify xattrs only if ref is present

After 7cfb7aab573 commit starting a domain pullutes logs with
warnings like [1]. The reason is resource files do not
have timestamp before starting a domain and after destroying
domain the timestamp is cleared. Let's check the timestamp
only if attribute with refcounter is found.

[1] warning : virSecurityValidateTimestamp:198 : Invalid XATTR timestamp detected on \
    /some/path secdriver=dac

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agodocs: add SVGs for sticker logos
Daniel P. Berrangé [Wed, 21 Feb 2018 13:25:32 +0000 (13:25 +0000)]
docs: add SVGs for sticker logos

Use the templates at https://github.com/terinjokes/StickerConstructorSpec
to provide square and hexagon logos for libvirt, suitable for printing
as stickers.

Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agovirsh: alphabetize domain commands in man page
Jonathon Jongsma [Tue, 27 Aug 2019 20:35:56 +0000 (15:35 -0500)]
virsh: alphabetize domain commands in man page

It appears that all commands were originally fully in alphabetical order
but as new commands were added, they were sometimes inserted out of
order.  Fix up all domain commands so that they're in alphabetical order
again.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agovirsh: add 'guestinfo' command
Jonathon Jongsma [Tue, 27 Aug 2019 20:35:55 +0000 (15:35 -0500)]
virsh: add 'guestinfo' command

The 'guestinfo' command uses the new virDomainGetGuestInfo() API to
query information about the specified domain and print it out for the
user. The output is modeled roughly on the 'domstats' command.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemu: guestinfo: handle unsupported agent commands
Jonathon Jongsma [Tue, 27 Aug 2019 20:35:54 +0000 (15:35 -0500)]
qemu: guestinfo: handle unsupported agent commands

When we're collecting guest information, older agents may not support
all agent commands. In the case where the user requested all info
types (i.e. types == 0), ignore unsupported command errors and gather as
much information as possible. If the agent command failed for some other
reason, or if the user explciitly requested a specific info type (i.e.
types != 0), abort on the first error.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agolib: minor fixes to virDomainGetGuestInfo docs
Jonathon Jongsma [Tue, 27 Aug 2019 20:35:53 +0000 (15:35 -0500)]
lib: minor fixes to virDomainGetGuestInfo docs

Due to a typo, some of the field names didn't have closing quotes,
the information about the hostname was omitted and there was an
empty line missing after filesystem info description (which helps
our docs generator produce better looking HTML).

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agonews: Mention new --precopy-bandwidth parameter for virsh migrate
Jim Fehlig [Tue, 27 Aug 2019 20:16:47 +0000 (14:16 -0600)]
news: Mention new --precopy-bandwidth parameter for virsh migrate

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
5 years agodocs: Make anchors follow HTML5
Michal Privoznik [Tue, 27 Aug 2019 15:21:32 +0000 (17:21 +0200)]
docs: Make anchors follow HTML5

According to HTML specification, <a name=''> works in HTML4, but
<a id=''> works in both HTML4 and HTML5. This is followed even in
docs/page.xsl where HTML bookmark links are generated only for
those anchors which have @id attribute.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoqemu: support bootindex on vfio-ccw mdev devices
Boris Fiuczynski [Tue, 27 Aug 2019 14:19:23 +0000 (16:19 +0200)]
qemu: support bootindex on vfio-ccw mdev devices

Add support to specify a boot order on vfio-ccw passthrough devices.

Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: refactor mdev validation method signatures
Boris Fiuczynski [Tue, 27 Aug 2019 14:19:22 +0000 (16:19 +0200)]
qemu: refactor mdev validation method signatures

Refactoring the method signatures in preparation for
checking boot index of the mediated devices.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: make error messages device specific
Boris Fiuczynski [Tue, 27 Aug 2019 14:19:21 +0000 (16:19 +0200)]
qemu: make error messages device specific

Changing the error messages to report the problem encountered.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: move hostdev boot validation into domain validation
Boris Fiuczynski [Tue, 27 Aug 2019 14:19:20 +0000 (16:19 +0200)]
qemu: move hostdev boot validation into domain validation

Moving the hostdev boot support validation from the command line
generator code into the domain validation code.

Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
5 years agotests: add vhost scsi hostdev boot unsupported test
Boris Fiuczynski [Tue, 27 Aug 2019 14:19:19 +0000 (16:19 +0200)]
tests: add vhost scsi hostdev boot unsupported test

Adding a failure test for booting from a vhost scsi hostdev device.

Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
5 years agotests: add vfio-ap mdev tests
Boris Fiuczynski [Tue, 27 Aug 2019 14:19:18 +0000 (16:19 +0200)]
tests: add vfio-ap mdev tests

Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk@linux.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoremote_daemon_dispatch: Don't open code xdr_free()
Michal Privoznik [Tue, 27 Aug 2019 09:49:27 +0000 (11:49 +0200)]
remote_daemon_dispatch: Don't open code xdr_free()

At two places we are open coding xdr_free():
remoteRelayDomainEventTunable() and
remoteRelayDomainEventJobCompleted().
Bot of these functions use make_nonnull_domain() to put domain
IDs tuple into return structure and then continue encoding the
rest of structure. If that fails, they call VIR_FREE() directly.
While this okay, we should use xdr_free() which frees the whole
return structure for us.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
5 years agoremote_daemon_dispatch: Don't leak @ret on failure
Michal Privoznik [Tue, 27 Aug 2019 09:47:52 +0000 (11:47 +0200)]
remote_daemon_dispatch: Don't leak @ret on failure

If there's a problem in encoding @ret (for instance
virTypedParamsSerialize() fails) then @ret is leaked.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
5 years agoremote: Check for limits when encoding typed params
Michal Privoznik [Tue, 27 Aug 2019 08:57:49 +0000 (10:57 +0200)]
remote: Check for limits when encoding typed params

The same way we check for limits when decoding typed parameters
(virTypedParamsDeserialize()) we should do the same check when
serializing them so that we don't put onto the wire more than our
limits allow. Surprisingly, we were doing so explicitly in some
places but not all of them.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
5 years agoremote_daemon_dispatch: Check for limit properly in remoteDispatchConnectGetAllDomain...
Michal Privoznik [Tue, 27 Aug 2019 09:05:21 +0000 (11:05 +0200)]
remote_daemon_dispatch: Check for limit properly in remoteDispatchConnectGetAllDomainStats

The return structure is a bit complicated and that's why it is
very easy to check for RPC limits incorrectly. The structure is
an array of remote_domain_stats_record structures with the limit
of REMOTE_DOMAIN_LIST_MAX. The latter structure then poses a
different limit on typed params:
REMOTE_CONNECT_GET_ALL_DOMAIN_STATS_MAX (which is what we are
checking for mistakenly).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
5 years agovirsh: Add support for setting bandwidth in migrate
Jim Fehlig [Mon, 26 Aug 2019 19:41:25 +0000 (13:41 -0600)]
virsh: Add support for setting bandwidth in migrate

Commit f15789ec added support for setting postcopy migration bandwidth to
the migrate subcommand. This change does the same for precopy migration.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agovirhostdevtest: Reset libvirt error on expected failure
Michal Privoznik [Tue, 27 Aug 2019 14:08:12 +0000 (16:08 +0200)]
virhostdevtest: Reset libvirt error on expected failure

If a libvirt error occurred during a test, then virTestRun()
reports it (regardless of test returning success or failure).
For instance, in this specific case, a hostdev is detached twice
and the second attempt is expected to fail. It does fail and
libvirt error is reported which is then printed onto stderr.
Insert virResetLastError() calls on appropriate places to avoid
that.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agovirhostdevtest: s/VIR_DEBUG/VIR_TEST_DEBUG/
Michal Privoznik [Tue, 27 Aug 2019 14:07:36 +0000 (16:07 +0200)]
virhostdevtest: s/VIR_DEBUG/VIR_TEST_DEBUG/

There's no need to have VIR_DEBUG() really.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agovirhostdevtest: Drop useless VIR_TEST_DEBUG
Michal Privoznik [Tue, 27 Aug 2019 14:04:53 +0000 (16:04 +0200)]
virhostdevtest: Drop useless VIR_TEST_DEBUG

The virTestRun() already reports the same.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agovirhostdevtest: Drop most of 'cleanup' and 'out' labels
Michal Privoznik [Tue, 27 Aug 2019 14:00:55 +0000 (16:00 +0200)]
virhostdevtest: Drop most of 'cleanup' and 'out' labels

In this test there is this macro CHECK_LIST_COUNT() which checks
if a list of PCI devices contains expected count. If it doesn't
an error is reported and 'goto cleanup' is invoked. There's no
real reason for that as even since its introduction there is no
cleanup done and all 'cleanup' labels contain nothing but
'return'.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agovirhostdevtest: Check for integer retval in more verbose way
Michal Privoznik [Tue, 27 Aug 2019 14:00:10 +0000 (16:00 +0200)]
virhostdevtest: Check for integer retval in more verbose way

There are few functions called from the test which return an
integer but their retval is compared as if it was a pointer.
Now, there is nothing wrong with that from machine POV, but
from readability perspective it's wrong.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agovirhashtest: Drop useless new line
Michal Privoznik [Fri, 3 May 2019 08:30:44 +0000 (10:30 +0200)]
virhashtest: Drop useless new line

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agotests: Always put '\n' at the end of VIR_TEST_VERBOSE
Michal Privoznik [Fri, 3 May 2019 08:45:58 +0000 (10:45 +0200)]
tests: Always put '\n' at the end of VIR_TEST_VERBOSE

Similarly to the previous commit, VIR_TEST_VERBOSE should put
'\n' at the end of each call so that the output is not broken.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agotests: Always put a '\n' after each debug print
Michal Privoznik [Fri, 3 May 2019 08:31:02 +0000 (10:31 +0200)]
tests: Always put a '\n' after each debug print

There is an inconsistency with VIR_TEST_DEBUG() calls. One half
(roughly) of calls does have the newline character the other one
doesn't. Well, it doesn't have it because it assumed blindly that
new line will be printed, which is not the case.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: Don't duplicate domain def in qemuDomainGetFSInfo
Michal Privoznik [Tue, 27 Aug 2019 07:07:39 +0000 (09:07 +0200)]
qemu: Don't duplicate domain def in qemuDomainGetFSInfo

Introduced in v3.0.0-rc1~336, the commit message doesn't really
justifies the expensive domain def copy creation. Now, that
vm->def is guarded in this function by job acquirement we can use
vm->def directly.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: Acquire domain job in qemuDomainGetFSInfo and qemuDomainGetGuestInfo
Michal Privoznik [Tue, 27 Aug 2019 06:53:53 +0000 (08:53 +0200)]
qemu: Acquire domain job in qemuDomainGetFSInfo and qemuDomainGetGuestInfo

These two functions work with vm->def in their critical sections
(i.e. after the job was acquired and before it is released). But
that means, they need QUERY domain job too to prevent vm->def
change.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agorpm: move nc dep into the libvirt-daemon sub-RPM
Daniel P. Berrangé [Tue, 20 Aug 2019 09:15:47 +0000 (10:15 +0100)]
rpm: move nc dep into the libvirt-daemon sub-RPM

The remote client invokes the 'nc' binary on the remote server to tunnel
access to the socket. As such the 'nc' binary needs to be pulled in only
by the libvirt-daemon sub-RPM, not the libvirt-client sub-RPM.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agorpm: depend on /usr/bin/nc instead of nc
Daniel P. Berrangé [Tue, 20 Aug 2019 09:13:01 +0000 (10:13 +0100)]
rpm: depend on /usr/bin/nc instead of nc

The 'nc' RPM does not in fact exist anymore, this is a virtual provide
from the nmap-ncat RPM which the maintainer wishes to delete. Change the
dep to use the actual binary path we want to invoke.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agorpm: don't enable socket activation in upgrade if --listen present
Daniel P. Berrangé [Fri, 23 Aug 2019 12:13:40 +0000 (13:13 +0100)]
rpm: don't enable socket activation in upgrade if --listen present

Currently during RPM upgrade we restart libvirtd and unconditionally
enable use of systemd socket activation for the UNIX sockets.

If the user had previously given the --listen arg to libvirtd though,
this will no longer be honoured if socket activation is used.

We could start libvirtd-tcp.socket or libvirtd-tls.socket for this,
but mgmt tools like puppet/ansible might not be expecting this.
So for now we silently disable socket activation if we see --listen
was previously set on the host.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoremote: forbid the --listen arg when systemd socket activation
Daniel P. Berrangé [Thu, 22 Aug 2019 13:52:16 +0000 (14:52 +0100)]
remote: forbid the --listen arg when systemd socket activation

When using systemd socket activation the --listen arg has no
effect. This is confusing to users upgrading from previous versions of
libvirt as their config is silently ignored. Turn use of --listen into a
fatal error when sockets are passed from systemd.

This helps the admin discover the change in behaviour and thus decide
whether to stick with socket activation or revert to previous behaviour.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoremote: move timeout arg into sysconf file
Daniel P. Berrangé [Thu, 22 Aug 2019 13:51:06 +0000 (14:51 +0100)]
remote: move timeout arg into sysconf file

We need to give users the ability to customize the length of the
shutdown timeout, or even disable timeouts entirely. Thus we must move
the timeout arg into the sysconf file, instead of the service unit.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoremote: use Wants instead of Requires for libvirtd sockets
Daniel P. Berrangé [Thu, 22 Aug 2019 13:48:46 +0000 (14:48 +0100)]
remote: use Wants instead of Requires for libvirtd sockets

To facilitate upgrades from earlier versions of libvirt which did not
use socket activation for libvirtd, we want to allow the libvirtd socket
units to be disabled (masked). This can only be supported if we use the
weaker Wants statement instead of Requires.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agorpm: set runstatedir to /run directory
Daniel P. Berrangé [Tue, 20 Aug 2019 16:38:58 +0000 (17:38 +0100)]
rpm: set runstatedir to /run directory

Use the %{_rundir} RPM variable to set the configure runstatedir
variable to /run.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agobuild: support customization of runstatedir variable with old autoconf
Daniel P. Berrangé [Tue, 20 Aug 2019 10:44:24 +0000 (11:44 +0100)]
build: support customization of runstatedir variable with old autoconf

Many distros have moved /var/run to /run with the introduction of
systemd. /var/run still exists as a symlink to /run, but its usage
is deprecated.

autoconf added a --runstatedir option back in 2013 but there's still no
new release of autoconf that includes this.

gnulib meanwhile added support to propagate this arg's value to
configmake.h, but it falls back to $localstatedir/run for autoconf 2.69
and older, which is what every distro today has.

To deal with this problem we add a --with-runstatedir arg that then sets
the $runstatedir env variable that future autoconf's --runstatedir arg
will also use. This finally enables $runstatedir to be pointed to /run.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agosrc: honour the RUNSTATEDIR variable in all code
Daniel P. Berrangé [Tue, 20 Aug 2019 15:05:12 +0000 (16:05 +0100)]
src: honour the RUNSTATEDIR variable in all code

All code using LOCALSTATEDIR "/run" is updated to use RUNSTATEDIR
instead. The exception is the remote driver client which still
uses LOCALSTATEDIR "/run". The client needs to connect to remote
machines which may not be using /run, so /var/run is more portable
due to the /var/run -> /run symlink.

Some duplicate paths in the apparmor code are also purged.

There's no functional change by default yet since both expressions
expand to the same value.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agobuild: honour $(runstatedir) in make rules
Daniel P. Berrangé [Tue, 20 Aug 2019 15:08:19 +0000 (16:08 +0100)]
build: honour $(runstatedir) in make rules

Creating various directories using $(runstatedir) instead of
$(localstatedir)/run.

There's no functional change by default yet since both expressions
expand to the same value.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agosystemd: honour $runstatedir in socket unit files
Daniel P. Berrangé [Tue, 20 Aug 2019 10:57:46 +0000 (11:57 +0100)]
systemd: honour $runstatedir in socket unit files

If a systemd socket uses /var/run in its path, systemd prints a warning
at runtime

[   15.139976] systemd[1]: /usr/lib/systemd/system/virtlockd.socket:5:
  ListenStream= references a path below legacy directory /var/run/,
  updating /var/run/libvirt/virtlockd-sock → /run/libvirt/virtlockd-sock;
  please update the unit file accordingly.

This minimal change updates the socket unit files to honour the
$runstatedir path.

There's no functional change by default yet since both expressions
expand to the same value.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agobuild: use $(COMMON_UNIT_VARS) for logging/locking systemd units
Daniel P. Berrangé [Wed, 21 Aug 2019 10:12:00 +0000 (11:12 +0100)]
build: use $(COMMON_UNIT_VARS) for logging/locking systemd units

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
5 years agoqemu_command: remove unnecessary labels and ret variables
Ján Tomko [Tue, 20 Aug 2019 12:33:44 +0000 (14:33 +0200)]
qemu_command: remove unnecessary labels and ret variables

The recent cleanups allow us to clean up the code a bit.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildCommandLine: use VIR_RETURN_PTR for cmd
Ján Tomko [Mon, 26 Aug 2019 19:32:36 +0000 (21:32 +0200)]
qemuBuildCommandLine: use VIR_RETURN_PTR for cmd

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemu_command: use VIR_AUTOUNREF
Ján Tomko [Tue, 20 Aug 2019 11:59:10 +0000 (13:59 +0200)]
qemu_command: use VIR_AUTOUNREF

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildShmemCommandLine: use VIR_AUTOFREE for devstr
Ján Tomko [Tue, 20 Aug 2019 11:25:24 +0000 (13:25 +0200)]
qemuBuildShmemCommandLine: use VIR_AUTOFREE for devstr

Now that it's only used once.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildShmemCommandLine: add chardev variable
Ján Tomko [Tue, 20 Aug 2019 11:24:57 +0000 (13:24 +0200)]
qemuBuildShmemCommandLine: add chardev variable

That way devstr will only be used for the device string.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildSmpCommandLine: use virCommandAddArgBuffer directly
Ján Tomko [Tue, 20 Aug 2019 11:23:36 +0000 (13:23 +0200)]
qemuBuildSmpCommandLine: use virCommandAddArgBuffer directly

Instead of getting the string then passing it to virCommand.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildRNGCommandLine: use VIR_AUTOFREE
Ján Tomko [Tue, 20 Aug 2019 11:22:53 +0000 (13:22 +0200)]
qemuBuildRNGCommandLine: use VIR_AUTOFREE

Use separate variables for the chardev and the device.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildControllersByTypeCommandLine: use VIR_AUTOFREE
Ján Tomko [Tue, 20 Aug 2019 11:21:28 +0000 (13:21 +0200)]
qemuBuildControllersByTypeCommandLine: use VIR_AUTOFREE

Reduce the scope of the variable to get it freed for every controller
processed.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemuBuildNetworkDriveURI: use VIR_AUTOPTR for virURI
Ján Tomko [Tue, 20 Aug 2019 11:11:13 +0000 (13:11 +0200)]
qemuBuildNetworkDriveURI: use VIR_AUTOPTR for virURI

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemu_command: use VIR_AUTOFREE for variables used once
Ján Tomko [Tue, 20 Aug 2019 11:05:03 +0000 (13:05 +0200)]
qemu_command: use VIR_AUTOFREE for variables used once

Remove the VIR_FREE's from the cleanup sections.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemu_command: use VIR_AUTOPTR for virJSONValue
Ján Tomko [Tue, 20 Aug 2019 10:39:39 +0000 (12:39 +0200)]
qemu_command: use VIR_AUTOPTR for virJSONValue

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoqemu_command: switch to VIR_AUTOCLEAN for virBuffer
Ján Tomko [Tue, 20 Aug 2019 10:33:02 +0000 (12:33 +0200)]
qemu_command: switch to VIR_AUTOCLEAN for virBuffer

Simplify the code by annotating all the temporary virBuffers
with VIR_AUTOCLEAN.

Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
5 years agoapi: fix typo in virDomainGetGuestInfo docs
Ján Tomko [Mon, 26 Aug 2019 19:01:22 +0000 (21:01 +0200)]
api: fix typo in virDomainGetGuestInfo docs

s/strign/string/

Signed-off-by: Ján Tomko <jtomko@redhat.com>
5 years agoxenconfig: move contents to libxl driver and remove directory
Jim Fehlig [Fri, 23 Aug 2019 18:34:46 +0000 (12:34 -0600)]
xenconfig: move contents to libxl driver and remove directory

After the legacy xen driver was removed the libxl driver became
the only consumer of xenconfig. Move the few files in xenconfig
to the libxl driver and remove the directory.

Signed-off-by: Jim Fehlig <jfehlig@suse.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: Implement virDomainGetGuestInfo()
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:22 +0000 (11:31 -0500)]
qemu: Implement virDomainGetGuestInfo()

Iimplements the new guest information API by querying requested
information via the guest agent.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoqemu: add helper for getting full FSInfo
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:21 +0000 (11:31 -0500)]
qemu: add helper for getting full FSInfo

This function adds the complete filesystem information returned by the
qemu agent to an array of typed parameters with field names intended to
to be returned by virDomainGetGuestInfo()

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoqemu: add support for new fields in FSInfo
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:20 +0000 (11:31 -0500)]
qemu: add support for new fields in FSInfo

Since version 3.0, qemu has returned disk usage statistics in
guest-get-fsinfo. And since 3.1, it has returned information about the
disk serial number and device node of disks that are targeted by the
filesystem.

Unfortunately, the public API virDomainGetFSInfo() returns the
filesystem info using a virDomainFSInfo struct, and due to API/ABI
guarantees it cannot be extended. So this new information cannot
easily be added to the public API. However, it is possible to add this
new filesystem information to a new virDomainGetGuestInfo() API which
will be based on typed parameters and is thus more extensible.

In order to support these two use cases, I added an internal struct
which the agent code uses to return all of the new data fields. This
internal struct can be converted to the public struct at a cost of some
extra memory allocation.

In a following commit, this additional information will be used within
virDomainGetGuestInfo().

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoqemu: add helper for querying timezone info
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:19 +0000 (11:31 -0500)]
qemu: add helper for querying timezone info

This function queries timezone information within the guest and adds
the information to an array of typed parameters with field names
intended to be returned to virDomainGetGuestInfo()

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoqemu: add helper function for querying OS info
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:18 +0000 (11:31 -0500)]
qemu: add helper function for querying OS info

This function queries the guest operating system information and adds
the returned information to an array of typed parameters with field
names intended to be returned in virDomainGetGuestInfo().

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoqemu: add helper for getting guest users
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:17 +0000 (11:31 -0500)]
qemu: add helper for getting guest users

This function fetches the list of logged-in users from the qemu agent
and adds them to a list of typed parameters so that they can be used
internally in libvirt.

Also add some basic tests for the function.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoremote: implement virDomainGetGuestInfo
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:16 +0000 (11:31 -0500)]
remote: implement virDomainGetGuestInfo

Add daemon and client code to serialize/deserialize
virDomainGetGuestInfo().

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agolib: add virDomainGetGuestInfo()
Jonathon Jongsma [Fri, 23 Aug 2019 16:31:15 +0000 (11:31 -0500)]
lib: add virDomainGetGuestInfo()

This API is intended to aggregate several guest agent information
queries and is ispired by stats API virDomainListGetStats(). It is
anticipated that this information will be provided by a guest agent
running within the domain.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
5 years agoqemu: Split out preparing of single snapshot from qemuDomainSnapshotDiskDataCollect
Peter Krempa [Mon, 12 Aug 2019 13:03:37 +0000 (15:03 +0200)]
qemu: Split out preparing of single snapshot from qemuDomainSnapshotDiskDataCollect

Move the internals into qemuDomainSnapshotDiskDataCollectOne to make it
obvious what's happening after moving more code here.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: snapshot: Restrict file existence check only for local storage
Peter Krempa [Mon, 12 Aug 2019 11:48:51 +0000 (13:48 +0200)]
qemu: snapshot: Restrict file existence check only for local storage

Soon we'll allow more protocols and storage types with snapshots where
we in some cases can't check whether the storage already exists.
Restrict the sanity checks whether the destination images exist or not
for local storage where it's easy. For any other case we will fail
later.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: Remove cleanup label in qemuDomainSnapshotPrepareDiskExternal
Peter Krempa [Mon, 12 Aug 2019 11:47:36 +0000 (13:47 +0200)]
qemu: Remove cleanup label in qemuDomainSnapshotPrepareDiskExternal

Refactor the code to avoid having a cleanup label. This will simplify
the change necessary when restricting this check in an upcoming patch.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: driver: Remove dead code from qemuDomainSnapshotUpdateDiskSources
Peter Krempa [Mon, 12 Aug 2019 10:16:35 +0000 (12:16 +0200)]
qemu: driver: Remove dead code from qemuDomainSnapshotUpdateDiskSources

dd->src is always allocated in this function as it contains the new
source for the snapshot which is meant to replace the disk source.

The label handling code executed if that source was not present thus is
dead code. Remove it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoqemu: snapshot: Don't modify persistent XML if disk source is different
Peter Krempa [Fri, 9 Aug 2019 13:15:07 +0000 (15:15 +0200)]
qemu: snapshot: Don't modify persistent XML if disk source is different

While the VM is running the persistent source of a disk might differ
e.g. as the 'newDef' was redefined. Our snapshot code would blindly
rewrite the source of such disk if it shared the 'target'. Fix this by
checking whether the source is the same in the first place.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoutil: storagefile: Flag backing store strings with authentication
Peter Krempa [Thu, 15 Aug 2019 17:29:43 +0000 (19:29 +0200)]
util: storagefile: Flag backing store strings with authentication

Using inline authentication for storage volumes will not work properly
as libvirt requires use of the secret driver for the auth data and
thus would not be able to represent the passwords stored in the backing
store string.

Make sure that the backing store parsers return 1 which is a sign for
the caller to not use the file in certain cases.

The test data include iscsi via a json pseudo-protocol string and URIs
with the userinfo part being present.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoutil: storagefile: Don't traverse storage sources unusable by VM
Peter Krempa [Fri, 16 Aug 2019 09:34:27 +0000 (11:34 +0200)]
util: storagefile: Don't traverse storage sources unusable by VM

virStorageFileGetMetadataRecurse would include files in the backing
chain which would not really be usable by libvirt directly e.g.
when such file would be promoted to the top layer by an active block
commit as for example inline authentication data can't be represented in
the VM xml file. The idea is to use secrets for this.

With the changes to the backing store string parsers we can report and
propagate if such a thing is present in the configuration and thus start
skipping those files in the backing chain traversal code. This approach
still allows to report the appropriate backing store string in the
storage driver which doesn't directly use the backing file.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoutil: storagefile: Clarify docs for '@report_broken' of virStorageFileGetMetadata
Peter Krempa [Fri, 16 Aug 2019 09:28:03 +0000 (11:28 +0200)]
util: storagefile: Clarify docs for '@report_broken' of virStorageFileGetMetadata

virStorageFileGetMetadata does not report error if we can't interrogate
the file somehow. Clarify this in the description of the @report_broken
flag as it implies we should report an error in that case. The problem
is that we don't know whether there's a problem and unfortunately just
offload it to qemu.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoutil: storagefile: Add handling of unusable storage sources
Peter Krempa [Fri, 16 Aug 2019 09:14:31 +0000 (11:14 +0200)]
util: storagefile: Add handling of unusable storage sources

Introduce new semantics to virStorageSourceNewFromBacking and some
of the helpers used by it which propagate the return value from the
callers.

The new return value introduced by this patch allows to notify the
calller that the parsed virStorageSource correctly describes the source
but contains data such as inline authentication which libvirt does not
want to support directly. This means that such file would e.g. unusable
as a storage source (e.g. when actively commiting the overlay to it) or
would not work with blockdev.

The caller will then be able to decide whether to consider this backing
file as viable or just fall back to qemu dealing with it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agotests: virstorage: Allow testing return value of virStorageSourceNewFromBackingAbsolute
Peter Krempa [Thu, 15 Aug 2019 17:27:43 +0000 (19:27 +0200)]
tests: virstorage: Allow testing return value of virStorageSourceNewFromBackingAbsolute

Modify testBackingParse to allow testing other return values of the
backing store string parser.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
5 years agoutil: storagefile: Modify arguments of virStorageSourceNewFromBackingAbsolue
Peter Krempa [Thu, 15 Aug 2019 14:43:40 +0000 (16:43 +0200)]
util: storagefile: Modify arguments of virStorageSourceNewFromBackingAbsolue

Return the parsed storage source via an pointer in arguments and return
an integer from the function. Describe the semantics with a comment for
the function and adjust callers to the new semantics.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>