]> xenbits.xensource.com Git - libvirt.git/log
libvirt.git
3 years agodocs: Convert 'drvvbox' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvvbox' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvtest' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvtest' page to rST

The first sentence was moved up a paragraph to stop treating the first
sub-heading as a page subtitle.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvsecret' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvsecret' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvopenvz' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvopenvz' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvnodedev' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvnodedev' page to rST

Fix one cross link anchor along with the conversion.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvlxc' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvlxc' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvhyperv' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvhyperv' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvesx' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvesx' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'drvbhyve' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'drvbhyve' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Convert 'cgroups' page to rST
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Convert 'cgroups' page to rST

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agodocs: Remove empty unreferenced 'drvremote' page
Peter Krempa [Thu, 10 Mar 2022 16:57:53 +0000 (17:57 +0100)]
docs: Remove empty unreferenced 'drvremote' page

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agomeson: Use dicts to initialize cfg_data objects
Andrea Bolognani [Tue, 29 Mar 2022 09:43:36 +0000 (11:43 +0200)]
meson: Use dicts to initialize cfg_data objects

Instead of creating an empty object and then setting keys one
at a time, it is possible to pass a dict object to
configuration_data(). This is nicer because it doesn't require
repeating the name of the cfg_data object over and over.

There is one exception: the 'conf' object, where we store values
that are used directly by C code. In that case, using a dict
object is not feasible for two reasons: first of all, replacing
the set_quoted() calls would result in awkward code with a lot
of calls to format(); moreover, since code that modifies it is
sprinkled all over the place, refactoring it would probably
make things more complicated rather than simpler.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
3 years agoqemu: Use real defaults for user and group in qemu.conf
Andrea Bolognani [Mon, 28 Mar 2022 13:26:11 +0000 (15:26 +0200)]
qemu: Use real defaults for user and group in qemu.conf

The default values used by the library are determined at configure
time based on a number of factors, and we should reflect them in
the installed configuration file to make the comments it contains
more useful.

Resolves: https://gitlab.com/libvirt/libvirt/-/issues/263
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoutil: Improve macOS workaround
Andrea Bolognani [Mon, 28 Mar 2022 15:24:47 +0000 (17:24 +0200)]
util: Improve macOS workaround

Since the workaround is specific to macOS, only disable compiler
warnings when building on that platform.

While at it, update the comment to reflect the fact that the
workaround is needed for all versions of the OS, including the
modern ones that we currently target.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoqemu: Rename virDomainAsyncJobPhase{From,To}String
Jiri Denemark [Wed, 30 Mar 2022 07:39:12 +0000 (09:39 +0200)]
qemu: Rename virDomainAsyncJobPhase{From,To}String

Recent refactor (v8.1.0-217-ga193f4bef6) generalized job related enums
and functions by changing "qemu" prefix to "vir" and moving them to
src/hypervisor/domain_job.[ch]. This was in most cases a good thing, but
async job phases are driver specific and the corresponding functions
remained in src/qemu/qemu_domainjob.[ch], but still their prefix was
changed to "vir". Let's change it back to "qemu".

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoPost-release version bump to 8.3.0
Jiri Denemark [Fri, 1 Apr 2022 10:29:50 +0000 (12:29 +0200)]
Post-release version bump to 8.3.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
3 years agoRelease of libvirt-8.2.0
Jiri Denemark [Fri, 1 Apr 2022 10:23:38 +0000 (12:23 +0200)]
Release of libvirt-8.2.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
3 years agoNEWS: Document some contributions
Michal Privoznik [Fri, 1 Apr 2022 09:02:40 +0000 (11:02 +0200)]
NEWS: Document some contributions

Document either my contributions or commits I helped review for
the upcoming release.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
3 years agoNEWS: Mention 'manual' snapshots and FD passing for 'virsh qemu-monitor-command'
Peter Krempa [Fri, 1 Apr 2022 08:44:22 +0000 (10:44 +0200)]
NEWS: Mention 'manual' snapshots and FD passing for 'virsh qemu-monitor-command'

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
3 years agocheckpoint: Fix a typo of comments
Han Han [Fri, 1 Apr 2022 03:03:26 +0000 (11:03 +0800)]
checkpoint: Fix a typo of comments

Signed-off-by: Han Han <hhan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
3 years agovirsh: Fix integer overflow in allocpages
Michal Privoznik [Wed, 30 Mar 2022 11:54:50 +0000 (13:54 +0200)]
virsh: Fix integer overflow in allocpages

I've came across an aarch64 system which supports hugepages up to
16GiB of size. However, I was unable to allocate them using
virsh allocpages. This is because cmdAllocpages() uses
vshCommandOptScaledInt(), which scales passed value into bytes,
but since the virNodeAllocPages() expects size in KiB the
variable holding bytes is then divided by 1024. However, the
limit for the biggest value passed to vshCommandOptScaledInt() is
UINT_MAX which is now obviously wrong, as it needs to be UINT_MAX
* 1024.

The same bug is in completer. But here, let's use ULLONG_MAX so
that we don't have to care about it anymore.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoFix spelling
Tim Wiederhake [Wed, 30 Mar 2022 14:45:04 +0000 (16:45 +0200)]
Fix spelling

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
3 years agoqemu: fix hotplug for multiqueue vdpa net device
Jonathon Jongsma [Tue, 29 Mar 2022 19:24:36 +0000 (14:24 -0500)]
qemu: fix hotplug for multiqueue vdpa net device

While commit a5e659f0 removed the restriction against multiple queues
for the vdpa net device, there were some missing pieces. Configuring a
device statically and then starting the domain worked as expected, but
hotplugging a device didn't have the expected multiqueue support
enabled. Add the missing bits.

Consider the following device xml:
    <interface type="vdpa">
      <mac address="00:11:22:33:44:03" />
      <source dev="/dev/vhost-vdpa-0" />
      <model type="virtio" />
      <driver queues='2' />
    </interface>

Without this patch, hotplugging the above XML description resulted in
the following:
    {"execute":"netdev_add","arguments":{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","id":"hostnet1"},"id":"libvirt-392"}
    {"execute":"device_add","arguments":{"driver":"virtio-net-pci","netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:03","bus":"pci.5","addr":"0x0"},"id":"libvirt-393"}

With the patch, hotplugging results in the following:
    {"execute":"netdev_add","arguments":{"type":"vhost-vdpa","vhostdev":"/dev/fdset/0","queues":2,"id":"hostnet1"},"id":"libvirt-392"}
    {"execute":"device_add","arguments":{"driver":"virtio-net-pci","mq":true,"vectors":6,"netdev":"hostnet1","id":"net1","mac":"00:11:22:33:44:03","bus":"pci.5","addr":"0x0"},"id":"libvirt-393"}

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

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agofix documentation for sockets topology
John Levon [Tue, 29 Mar 2022 17:38:11 +0000 (18:38 +0100)]
fix documentation for sockets topology

In 0895a0e, it was noted that the "sockets" value in the topology
section of capabilities reflects not the number of sockets per NUMA
node, not the total number.

Unfortunately, the fix was applied to the wrong place: the domain XML
format documentation, not that for the capabilities output. And, in
fact, the domain XML interprets "sockets" as the total number, not a
per-node value.

Back out this change in favour of a note in the capabilities
documentation instead.

Fixes: 0895a0e75d13874254218e16dc66dcad673671d3
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: John Levon <john.levon@nutanix.com>
3 years agoTranslated using Weblate (Korean)
김인수 [Wed, 30 Mar 2022 08:23:44 +0000 (10:23 +0200)]
Translated using Weblate (Korean)

Currently translated at 100.0% (10411 of 10411 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/ko/

Co-authored-by: 김인수 <simmon@nplob.com>
Signed-off-by: 김인수 <simmon@nplob.com>
3 years agoTranslated using Weblate (Ukrainian)
Yuri Chornoivan [Wed, 30 Mar 2022 08:23:44 +0000 (10:23 +0200)]
Translated using Weblate (Ukrainian)

Currently translated at 100.0% (10411 of 10411 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/uk/

Co-authored-by: Yuri Chornoivan <yurchor@ukr.net>
Signed-off-by: Yuri Chornoivan <yurchor@ukr.net>
3 years agoUpdate translation files
Weblate [Wed, 30 Mar 2022 08:23:42 +0000 (10:23 +0200)]
Update translation files

Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/

Co-authored-by: Weblate <noreply@weblate.org>
Signed-off-by: Fedora Weblate Translation <i18n@lists.fedoraproject.org>
3 years agovirConnectDomainEventRegisterAny: correct docs
John Levon [Fri, 25 Mar 2022 16:03:35 +0000 (16:03 +0000)]
virConnectDomainEventRegisterAny: correct docs

The callback ID can be zero, not necessarily positive; correct the
comment to reflect this.

Signed-off-by: John Levon <levon@movementarian.org>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agovirfile: Report error when changing pipe size fails
Michal Privoznik [Mon, 28 Mar 2022 11:29:19 +0000 (13:29 +0200)]
virfile: Report error when changing pipe size fails

When changing the size of pipe that virFileWrapperFdNew() creates
we start at 1MiB and if that fails because it's above the system
wide limit we get EPERM and continue with half of the size.

However, we might get another error in which case we should
report proper system error and return failure from
virFileWrapperFdNew().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
3 years agopo: Refresh potfile for v8.2.0
Jiri Denemark [Mon, 28 Mar 2022 11:53:45 +0000 (13:53 +0200)]
po: Refresh potfile for v8.2.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
3 years agoNEWS: Mention the qemu device property override feature
Peter Krempa [Mon, 21 Mar 2022 15:08:45 +0000 (16:08 +0100)]
NEWS: Mention the qemu device property override feature

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoqemu: command: Override device definition according to the namespace config
Peter Krempa [Mon, 21 Mar 2022 14:17:47 +0000 (15:17 +0100)]
qemu: command: Override device definition according to the namespace config

Apply the user-requested changes to the device definition as requested
by the <qemu:deviceOverride> element from the custom qemu XML namespace.

Closes: https://gitlab.com/libvirt/libvirt/-/issues/287
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoqemuBuildDeviceCommandlineFromJSON: Pass 'virDomainDef' into the function
Peter Krempa [Mon, 21 Mar 2022 13:33:08 +0000 (14:33 +0100)]
qemuBuildDeviceCommandlineFromJSON: Pass 'virDomainDef' into the function

The definition object will be later used to access the qemu namespace
definition used to override device properties.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoconf: Introduce VIR_DOMAIN_TAINT_CUSTOM_DEVICE and use it in qemu
Peter Krempa [Mon, 21 Mar 2022 14:48:17 +0000 (15:48 +0100)]
conf: Introduce VIR_DOMAIN_TAINT_CUSTOM_DEVICE and use it in qemu

Taint the domain object when the user requests custom device properties.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoqemu: domain: Add XML namespace code for overriding device config
Peter Krempa [Wed, 16 Mar 2022 10:27:48 +0000 (11:27 +0100)]
qemu: domain: Add XML namespace code for overriding device config

Implement the XML parser and formatter for overriding of device
properties such as:

  <qemu:override>
    <qemu:device alias='ua-disk'>
      <qemu:frontend>
        <qemu:property name='prop1' type='string' value='propval1'/>
        <qemu:property name='prop2' type='signed' value='-321'/>
        <qemu:property name='prop3' type='unsigned' value='123'/>
        <qemu:property name='prop4' type='bool' value='true'/>
        <qemu:property name='prop5' type='bool' value='false'/>
        <qemu:property name='prop6' type='bool' value='false'/>
        <qemu:property name='prop6' type='remove'/>
      </qemu:frontend>
    </qemu:device>
  </qemu:override>

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agodocs: drvqemu: Document overriding of device properties
Peter Krempa [Mon, 21 Mar 2022 11:02:53 +0000 (12:02 +0100)]
docs: drvqemu: Document overriding of device properties

Upcoming patches will add possibility to override configuration of a
device with custom properties as a more versatile replacement to using
QEMU's '-set' parameter, which doesn't work when we use JSON to
instantiate devices.

Describe the XML used for the override as well as expectations of
upstream support in case something breaks.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoutil: virfile: Fix indentation of preprocessor directives
Peter Krempa [Mon, 28 Mar 2022 11:13:20 +0000 (13:13 +0200)]
util: virfile: Fix indentation of preprocessor directives

stderr:
cppi: /home/pipo/libvirt/src/util/virfile.c: line 205: not properly indented
cppi: /home/pipo/libvirt/src/util/virfile.c: line 243: not properly indented
cppi: /home/pipo/libvirt/src/util/virfile.c: line 249: not properly indented
build-aux/syntax-check.mk: incorrect preprocessor indentation
make: *** [/home/pipo/libvirt/build-aux/syntax-check.mk:565: sc_preprocessor_indentation] Error 1

Fixes: c61d1e9ba0a0bec18fdb0bdd485060dc27a4e5cc
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
3 years agovirfile: set pipe size in virFileWrapperFdNew to improve throughput
Claudio Fontana [Fri, 25 Mar 2022 15:10:19 +0000 (16:10 +0100)]
virfile: set pipe size in virFileWrapperFdNew to improve throughput

currently the only user of virFileWrapperFdNew is the qemu driver;
virsh save is very slow with a default pipe size.
This change improves throughput by ~400% on fast nvme or ramdisk.

Best value currently measured is 1MB, which happens to be also
the kernel default for the pipe-max-size.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoqemu_tpm: Do async IO when starting swtpm emulator
Michal Privoznik [Mon, 21 Mar 2022 12:33:06 +0000 (13:33 +0100)]
qemu_tpm: Do async IO when starting swtpm emulator

When vTPM is secured via virSecret libvirt passes the secret
value via an FD when swtpm is started (arguments --key and
--migration-key). The writing of the secret into the FDs is
handled via virCommand, specifically qemu_tpm calls
virCommandSetSendBuffer()) and then virCommandRunAsync() spawns a
thread to handle writing into the FD via
virCommandDoAsyncIOHelper. But the thread is not created unless
VIR_EXEC_ASYNC_IO flag is set, which it isn't. In order to fix
it, virCommandDoAsyncIO() must be called.

The credit goes to Marc-André Lureau
<marcandre.lureau@redhat.com> who has done all the debugging and
proposed fix in the bugzilla.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2064115
Fixes: a9c500d2b50c5c041a1bb6ae9724402cf1cec8fe
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
3 years agoRevert "qemu: add support for tsc.on_reboot element"
Michal Privoznik [Mon, 28 Mar 2022 07:26:42 +0000 (09:26 +0200)]
Revert "qemu: add support for tsc.on_reboot element"

This reverts commit 06c960e477de4561c7ba956f82994fa120226397.

Turns out, this feature is not needed and QEMU will fix TSC
without any intervention from outside.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>P
3 years agoRevert "domain: add tsc.on_reboot element"
Michal Privoznik [Mon, 28 Mar 2022 07:25:31 +0000 (09:25 +0200)]
Revert "domain: add tsc.on_reboot element"

This reverts commit 150540394ddaa515f6857616a2bcf792748f162c.

Turns out, this feature is not needed and QEMU will fix TSC
without any intervention from outside.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>P
3 years agoqemu: add support for tsc.on_reboot element
Paolo Bonzini [Thu, 24 Mar 2022 09:48:39 +0000 (10:48 +0100)]
qemu: add support for tsc.on_reboot element

QEMU 7.0.0 adds a new property tsc-clear-on-reset to x86 CPU, corresponding
to Libvirt's <tsc on_reboot="clear"/> element.  Plumb it in the validation,
command line handling and tests.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agodomain: add tsc.on_reboot element
Paolo Bonzini [Thu, 24 Mar 2022 09:48:38 +0000 (10:48 +0100)]
domain: add tsc.on_reboot element

Some versions of Windows hang on reboot if their TSC value is greater
than 2^54.  The workaround is to reset the TSC to a small value.  Add
to the domain configuration an attribute for this.  It can be used
by QEMU and in principle also by ESXi, which has a property called
monitor_control.enable_softResetClearTSC as well.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agotests: add dependencies to meson declaration
Paolo Bonzini [Thu, 24 Mar 2022 09:36:56 +0000 (10:36 +0100)]
tests: add dependencies to meson declaration

Make sure that all tests are run after the helpers and mocks are
(re)built.  This enables for example using "meson test" as the
command line passed to "git bisect run".

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agomeson: do not look for libparted if not requested
Paolo Bonzini [Thu, 24 Mar 2022 10:53:04 +0000 (11:53 +0100)]
meson: do not look for libparted if not requested

libparted_dep is not used if -Dstorage_disk=disabled. Do not
bother looking for this library if the disk storage backend was
not requested.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
3 years agomeson: do not look for librbd/librados if not requested
Paolo Bonzini [Thu, 24 Mar 2022 10:53:03 +0000 (11:53 +0100)]
meson: do not look for librbd/librados if not requested

rbd_dep is not used if -Dstorage_rbd=disabled.  Do not bother looking for
the libraries that compose it if the rbd storage backend was not requested.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoch: use virDomainJob enum instead of virCHDomainJob
Kristina Hanicova [Thu, 24 Mar 2022 15:32:46 +0000 (16:32 +0100)]
ch: use virDomainJob enum instead of virCHDomainJob

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agolibxl: use virDomainJob enum instead of libxlDomainJob
Kristina Hanicova [Thu, 24 Mar 2022 15:32:45 +0000 (16:32 +0100)]
libxl: use virDomainJob enum instead of libxlDomainJob

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agolxc: use virDomainJob enum instead of virLXCDomainJob
Kristina Hanicova [Thu, 24 Mar 2022 15:32:44 +0000 (16:32 +0100)]
lxc: use virDomainJob enum instead of virLXCDomainJob

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoqemu: move macros QEMU_X into hypervisor as VIR_X
Kristina Hanicova [Thu, 24 Mar 2022 15:32:43 +0000 (16:32 +0100)]
qemu: move macros QEMU_X into hypervisor as VIR_X

It makes sense to have these in the same file as the definitions
of enums.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agomove jobs enums QEMU_X into hypervisor as VIR_X
Kristina Hanicova [Thu, 24 Mar 2022 15:32:42 +0000 (16:32 +0100)]
move jobs enums QEMU_X into hypervisor as VIR_X

These enums are essentially the same and always sorted in the
same order in every hypervisor with jobs. They can be generalized
by using the qemu enums as the main ones as they are the most
extensive.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoTranslated using Weblate (German)
Tom Wieczorek [Sat, 19 Mar 2022 09:16:55 +0000 (10:16 +0100)]
Translated using Weblate (German)

Currently translated at 48.4% (5045 of 10404 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/de/

Co-authored-by: Tom Wieczorek <tom@bibbu.net>
Signed-off-by: Tom Wieczorek <tom@bibbu.net>
3 years agoqemu: remove else branches after return in qemuMigrationSrcPerform()
Kristina Hanicova [Thu, 24 Mar 2022 14:34:08 +0000 (15:34 +0100)]
qemu: remove else branches after return in qemuMigrationSrcPerform()

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoqemu: remove unnecessary else branches after return / goto
Kristina Hanicova [Thu, 24 Mar 2022 14:34:07 +0000 (15:34 +0100)]
qemu: remove unnecessary else branches after return / goto

I think the code looks cleaner without else branches.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agokbase: Fix the syntax of the snapshot link in index.rst
Han Han [Fri, 25 Mar 2022 06:48:36 +0000 (14:48 +0800)]
kbase: Fix the syntax of the snapshot link in index.rst

Signed-off-by: Han Han <hhan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
3 years agoqemu_command: Generate prealloc-threads property
Michal Privoznik [Mon, 21 Mar 2022 16:10:15 +0000 (17:10 +0100)]
qemu_command: Generate prealloc-threads property

Let's generate prealloc-threads property onto the cmd line if
domain configuration requests so.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
3 years agoqemu_validate: Validate prealloc threads against qemuCpas
Michal Privoznik [Mon, 21 Mar 2022 16:09:40 +0000 (17:09 +0100)]
qemu_validate: Validate prealloc threads against qemuCpas

Only fairly new QEMUs are capable of user provided number of
preallocation threads. Validate this assumption.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
3 years agoqemu_capabilities: Detect memory-backend-*.prealloc-threads property
Michal Privoznik [Mon, 21 Mar 2022 15:55:05 +0000 (16:55 +0100)]
qemu_capabilities: Detect memory-backend-*.prealloc-threads property

The prealloc-threads is property of memory-backend class which is
parent to the other three classes memory-backend-{ram,file,memfd}.
Therefore the property is present for all, or none if QEMU is
older than v5.0.0-rc0~75^2~1^2~3 which introduced the property.

Anyway, the .reserve property is the same story, and we chose
memory-backend-file to detect it, so stick with our earlier
decision and use the same backend to detect this new property.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
3 years agoconf: Introduce memory allocation threads
Michal Privoznik [Mon, 21 Mar 2022 15:49:25 +0000 (16:49 +0100)]
conf: Introduce memory allocation threads

Since its v5.0.0 release QEMU is capable of specifying number of
threads used to allocate memory. It defaults to 1, which may be
too low for humongous guests with gigantic pages.

In general, on QEMU cmd line level it is possible to use
different number of threads per each memory-backend-* object, in
practical terms it's not useful. Therefore, use <memoryBacking/>
to set guest wide value and let all memory devices 'inherit' it,
silently. IOW, don't introduce per device knob because that would
only complicate things for a little or no benefit.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
3 years agokeycodemapdb: Update git submodule
Andrea Bolognani [Tue, 22 Mar 2022 13:12:16 +0000 (14:12 +0100)]
keycodemapdb: Update git submodule

This brings in all the fixes made since April 2020.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoci: integration: Rename all Avocado standard stream log files to *.log
Erik Skultety [Tue, 22 Mar 2022 11:31:49 +0000 (12:31 +0100)]
ci: integration: Rename all Avocado standard stream log files to *.log

By default, stdout/stderr Avocado test log files do not have any file
extension which confuses GitLab's web UI to mangle the MIME type for
these and so the browser will never offer the option to open such file
from in a text editor rather than dowloading it.
Since GitLab sets a proper MIME for .txt and .log file extensions,
rename all Avocado log files without an extension to *.log . This pairs
nicely with the coredumpctl info file which we already name as
'coredumpctl.txt' because of this.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
3 years agoci: integration: Collect stack traces with coredumpctl
Erik Skultety [Mon, 21 Mar 2022 17:05:16 +0000 (18:05 +0100)]
ci: integration: Collect stack traces with coredumpctl

Some Red Hat-like distros have cores limited with a soft limit of 0
which means that neither a stack trace nor a core file will be
available. Since we want the stack trace we need to set the core limit
with systemd globally to unlimited/infinity.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoci: Define the integration job tag dynamically via a variable
Erik Skultety [Mon, 21 Mar 2022 12:51:53 +0000 (13:51 +0100)]
ci: Define the integration job tag dynamically via a variable

Custom runners are private to a project, so naturally forks cannot run
any workloads on these. The integration test suite which requires
access to our custom runner is naturally disabled on forks and can be
enabled by setting LIBVIRT_CI_INTEGRATION=1.
The problem is that the current integration jobs definitions have tags
statically defined as 'redhat-vm-host'. If users are going to supply
their own private runners for their forks, they can define whatever
tags they want with it and so unless they add 'redhat-vm-host' to their
own runner's tags, the pipeline won't run.
To solve this, define the integration job tag using a variable. The
repo config will use the value defined in the job for the variable
while users can override the value easily on a project/pipeline level
thanks to GitLab's CI variable precedence [1].

[1] https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter: merge updateMutex and updateLock
Daniel P. Berrangé [Mon, 7 Mar 2022 11:11:48 +0000 (11:11 +0000)]
nwfilter: merge updateMutex and updateLock

The updateLock is a R/W lock held by anything which needs to read or
modify the rules associated with an NWFilter.

APIs for defining/undefining NW filters rules hold a write lock on
updateLock.

APIs for creating/deleting NW filter bindings hold a read lock on
updateLock, which prevents define/undefine taking place concurrently.

The problems arise when we attempt to creating two NW filter bindings in
parallel.

Thread 1 can acquire the mutex for filter A

Thread 2 can acquire the mutex for filter B

Consider if filters A and B both reference filters C and D, but in
different orders:

  Filter A
     -> filter C
     -> filter D

  Filter B
     -> filter D
     -> filter C

Thread 1 will try to acquire locks in order A, C, D while thread 1 will
try to acquire in order A, D, C. Deadlock can still occur.

Think we can sort the list of filters before acquiring locks on all of
them ? Nope, we allow arbitrary recursion:

  Filter A
     -> filter C
          -> filter E
             -> filter F
                -> filter H
                -> filter K
     -> filter D
         -> filter G
         -> filter I

So we can't tell from looking at 'A' which filters we're going to
need to lock. We can only see the first level of filters references
and we need to lock those before we can see the second level of
filters, etc.

We could probably come up with some cleverness to address this but
it isn't worth the time investment. It is simpler to just keep the
process of creating NW filter bindings totally serialized.

Using two separate locks for this serialization though is pointless.

Every code path which gets a read(updateLock) will go on to hold
updateMutex. It is simpler to just hold write(updateLock) and
get rid of updateMutex. At that point we don't need updateLock
to be a R/W lock, it can be a plain mutex.

Thus this patch gets rid of the current updateLock and updateMutex
and introduces a new top level updateMutex.

This has a secondary benefit of introducing fairness into the
locking.  With a POSIX R/W lock, you get writer starvation if
you have lots of readers. IOW, if we call virNWFilterBIndingCreate
and virNWFilterBindingDelete in a tight loop from a couple of
threads, we can prevent virNWFilterDefine from ever acquiring
a write lock.

Getting rid of the R/W lock gives us FIFO lock acquisition
preventing starvation of any API call servicing.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
3 years agodocs: Update obsolete reference to formatdomain.html.in
Andrea Bolognani [Tue, 22 Mar 2022 10:01:38 +0000 (11:01 +0100)]
docs: Update obsolete reference to formatdomain.html.in

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
3 years agoschemas: move out of docs, fix no-docs build
Claudio Fontana [Tue, 22 Mar 2022 08:18:57 +0000 (09:18 +0100)]
schemas: move out of docs, fix no-docs build

schemas are used for more than just documentation,
virsh edit fails if schemas are not available.

Therefore, fix the no-docs build by moving schemas/
to the parsing code inside src/conf/.

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
3 years agokbase: Introduce 'snapshots' page and describe the new 'manual' snapshot
Peter Krempa [Wed, 9 Mar 2022 16:05:14 +0000 (17:05 +0100)]
kbase: Introduce 'snapshots' page and describe the new 'manual' snapshot

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoqemuSnapshotCreateActiveExternal: Implement manual snapshot mode
Peter Krempa [Fri, 4 Mar 2022 13:37:13 +0000 (14:37 +0100)]
qemuSnapshotCreateActiveExternal: Implement manual snapshot mode

In case we are snapshotting at least one 'manual' disk we will pause the
VM and keep it paused.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1866400
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoconf: snapshot: Introduce 'manual' mode for snapshot of a disk
Peter Krempa [Fri, 4 Mar 2022 14:50:19 +0000 (15:50 +0100)]
conf: snapshot: Introduce 'manual' mode for snapshot of a disk

The idea of the manual mode is to allow a synchronized snapshot in cases
when the storage is outsourced to an unmanaged storage provider which
requires cooperation with snapshotting.

The mode will instruct the hypervisor to pause along when the other
components are snapshotted and the 'manual' disk can be snapshotted
along. This increases latency of the snapshot but allows them in
otherwise impossible situations.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoqemuDomainDefNamespaceFormatXML*: Convert to virXMLFormatElement
Peter Krempa [Wed, 16 Mar 2022 10:15:15 +0000 (11:15 +0100)]
qemuDomainDefNamespaceFormatXML*: Convert to virXMLFormatElement

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoqemu: fix recording of CPU deprecations
Daniel P. Berrangé [Thu, 17 Mar 2022 17:50:43 +0000 (17:50 +0000)]
qemu: fix recording of CPU deprecations

The code parsing thue query-cpu-definitions response will short-circuit
the for loop in the case where usable=yes, resulting in us failing to
parse the CPU deprecation flag.

IOW, we only reported deprecations in domain capabilities for CPU models
which were not runnable on the host.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
3 years agovirNWFilterLockIface: Preserve correct lock ordering
Michal Privoznik [Fri, 18 Mar 2022 16:14:54 +0000 (17:14 +0100)]
virNWFilterLockIface: Preserve correct lock ordering

In the not so distant past, the lock ordering in
virNWFilterLockIface() was as follows: global mutex ifaceMapLock
was acquired, then internal representation of given interface was
looked up in a hash table (or created brand new if none was
found), the global lock was released and the lock of the
interface was acquired.

But this was mistakenly changed as the function was rewritten to
use automatic mutexes, because now the global lock is held
throughout the whole run of the function and thus the interface
specific lock is acquired with the global lock held. This results
in a deadlock.

Fixes: dd8150c48dcf94e8d3b0481be08eeef822b98b02
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Tested-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agoqemu_process: Be nicer to killing QEMU when probing caps
Michal Privoznik [Fri, 4 Feb 2022 09:33:20 +0000 (10:33 +0100)]
qemu_process: Be nicer to killing QEMU when probing caps

The qemuProcessQMPStop() function is intended to kill this dummy
QEMU process we started only for querying capabilities.
Nevertheless, it may be not plain QEMU binary we executed, but
in fact it may be a memcheck tool (e.g. valgrind) that executes
QEMU later. By switching to virProcessKillPainfully() we allow
this wrapper tool to exit gracefully.

Another up side is that virProcessKillPainfully() reports an
error so no need for us to VIR_ERROR() ourselves.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
3 years agoci: only run integration tests if $LIBVIRT_CI_INTEGRATION=1 is set
Daniel P. Berrangé [Thu, 17 Mar 2022 16:29:52 +0000 (16:29 +0000)]
ci: only run integration tests if $LIBVIRT_CI_INTEGRATION=1 is set

Right now the jobs have no rules so they will always be created in
a pipeline. If the user's fork has no runner configured, then the
jobs will never be able to execute and the pipeline will not finish.

Even on upstream, there might be times the runner has to be taken
offline for maint work, or unexpectedly fail. We need a quick way
to disable the integration tests if we decide we don't want to
have pipelines queued until the runner comes back online.

Both these problems can be addressed by requiring a environment
variable to be set

   LIBVIRT_CI_INTEGRATION=1

This can be done in the GitLab repo CI settings for permanent
enablement. Alternatively it can be set for individual
scheduled jobs, or using a push option

  git push -o ci.variable=LIBVIRT_CI_INTEGRATION=1

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agoci: rename integration test template
Daniel P. Berrangé [Thu, 17 Mar 2022 16:29:51 +0000 (16:29 +0000)]
ci: rename integration test template

Although we split out jobs across many files, the template / job
namespace is global, so we should use something more specific
than '.tests' as the template name.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agovirnwfilterobj: Don't use virObjectLockGuard() with virNWFilterObj
Michal Privoznik [Fri, 18 Mar 2022 10:36:47 +0000 (11:36 +0100)]
virnwfilterobj: Don't use virObjectLockGuard() with virNWFilterObj

While its name would suggest that virNWFilterObj is an actual
virObject it is not. It's a plain structure (with virMutex as its
first member). Therefore, when locking the struct
virObjectLockGuard() can' be used and virLockGuardLock() must be
used instead.

Spotted-by: Martin Kletzander <mkletzan@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
3 years agoqemu: use qemuDomainSaveStatus() and remove qemuDomainObjSaveStatus()
Kristina Hanicova [Fri, 18 Mar 2022 10:17:28 +0000 (11:17 +0100)]
qemu: use qemuDomainSaveStatus() and remove qemuDomainObjSaveStatus()

It does not make sense to have both of these, since one of them
is only a wrapper for the other one. I decided to preserve the
more general one, which requires only virDomainObj and rewrote it
a bit, so that it pulls the qemu driver from privateData.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
3 years agoqemu_conf: Use automatic memory management
Tim Wiederhake [Tue, 8 Mar 2022 14:59:06 +0000 (15:59 +0100)]
qemu_conf: Use automatic memory management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_driver: Use automatic mutex management
Tim Wiederhake [Tue, 8 Mar 2022 09:54:23 +0000 (10:54 +0100)]
nwfilter_driver: Use automatic mutex management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoremote_daemon_stream: Use automatic memory management
Tim Wiederhake [Tue, 8 Mar 2022 14:34:50 +0000 (15:34 +0100)]
remote_daemon_stream: Use automatic memory management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agovirnetlink: Use automatic memory management
Tim Wiederhake [Wed, 16 Mar 2022 17:54:32 +0000 (18:54 +0100)]
virnetlink: Use automatic memory management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agovirNetlinkEventAddClient: Remove goto
Tim Wiederhake [Mon, 14 Mar 2022 14:03:23 +0000 (15:03 +0100)]
virNetlinkEventAddClient: Remove goto

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_ipaddrmap: Use automatic mutex management
Tim Wiederhake [Tue, 8 Mar 2022 13:37:47 +0000 (14:37 +0100)]
nwfilter_ipaddrmap: Use automatic mutex management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_learnipaddr: Use automatic mutex management
Tim Wiederhake [Tue, 8 Mar 2022 13:11:02 +0000 (14:11 +0100)]
nwfilter_learnipaddr: Use automatic mutex management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_dhcpsnoop: Replace virNWFilterSnoopReqLock functions
Tim Wiederhake [Wed, 16 Mar 2022 22:00:45 +0000 (23:00 +0100)]
nwfilter_dhcpsnoop: Replace virNWFilterSnoopReqLock functions

Use automatic mutex management instead.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_dhcpsnoop: Replace virNWFilterSnoopLock macros
Tim Wiederhake [Wed, 16 Mar 2022 22:08:47 +0000 (23:08 +0100)]
nwfilter_dhcpsnoop: Replace virNWFilterSnoopLock macros

Use automatic mutex management instead.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_dhcpsnoop: Replace virNWFilterSnoopActiveLock macros
Tim Wiederhake [Tue, 8 Mar 2022 11:45:38 +0000 (12:45 +0100)]
nwfilter_dhcpsnoop: Replace virNWFilterSnoopActiveLock macros

Use automatic mutex management instead.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_gentech: Use automatic mutex management
Tim Wiederhake [Mon, 7 Mar 2022 16:45:05 +0000 (17:45 +0100)]
nwfilter_gentech: Use automatic mutex management

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_driver: Split up nwfilterStateCleanup
Tim Wiederhake [Tue, 8 Mar 2022 09:49:09 +0000 (10:49 +0100)]
nwfilter_driver: Split up nwfilterStateCleanup

This allows nwfilterStateCleanupLocked to be used in
nwfilterStateInitialize in a later patch.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agonwfilter_driver: Statically initialize mutex
Tim Wiederhake [Tue, 15 Feb 2022 12:17:21 +0000 (13:17 +0100)]
nwfilter_driver: Statically initialize mutex

This enables a later patch to simplify locking during initialization
and cleanup of virNWFilterDriverState.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoconf: fix inverted parameters in hash iterator callbacks
Daniel P. Berrangé [Thu, 17 Mar 2022 12:14:13 +0000 (12:14 +0000)]
conf: fix inverted parameters in hash iterator callbacks

virHashTableForEach unhelpfully has payload/key args in
its callback reversed compared to g_hash_table_foreach.
When converting from one to the other the semantics
change but you don't get a compile error

Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
3 years agoesx_stream: Fix NULL dereferences
Tim Wiederhake [Thu, 17 Mar 2022 10:30:16 +0000 (11:30 +0100)]
esx_stream: Fix NULL dereferences

A wrong reordering caused "priv" to be derefenced before the NULL-check
in esxStreamSend and esxStreamRecvFlags.

Fixes: 12e19f172d2a908eec2a4557202ff764cdbb951e
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agogitlab-ci: Introduce new 'integration_tests' pipeline stage
Erik Skultety [Tue, 5 Oct 2021 09:02:24 +0000 (11:02 +0200)]
gitlab-ci: Introduce new 'integration_tests' pipeline stage

This stage will download build artifacts from both the libvirt and
libvirt-perl (multi-project CI) builds, install all them on the custom
runners and configures libvirt debug logging on the runners prior to
executing the actual test suite. In case of a failure, libvirt and
Avocado logs will be saved and published as pipeline artifacts.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoci: manifest: Publish RPMs as artifacts on CentOS Stream and Fedoras
Erik Skultety [Tue, 5 Oct 2021 09:01:34 +0000 (11:01 +0200)]
ci: manifest: Publish RPMs as artifacts on CentOS Stream and Fedoras

We're already building libvirt in the containers already, if we publish
the build in form of, say, RPMs, later stages of the pipeline can
consume the RPMs instead of re-building libvirt from scratch.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agoci: gitlab: Refresh gitlab.yml
Erik Skultety [Thu, 3 Mar 2022 12:53:40 +0000 (13:53 +0100)]
ci: gitlab: Refresh gitlab.yml

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agomeson: Check for os-release's ID_LIKE in addition to ID
Andrea Bolognani [Wed, 26 Jan 2022 14:09:52 +0000 (15:09 +0100)]
meson: Check for os-release's ID_LIKE in addition to ID

This makes it possible to reduce the number of cases we have to
consider, because 'sles' declares itself to be like 'suse' and
both 'rhel' and 'centos' declare themselves to be like 'fedora'.

We have to move the check for Ubuntu before the one for Debian,
however, because 'ubuntu' declares itself to be like 'debian'
and it would end up with the wrong defaults otherwise.

Suggested-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3 years agospec: Move virkey* manual pages from -daemon to -client
Andrea Bolognani [Thu, 27 Jan 2022 14:20:31 +0000 (15:20 +0100)]
spec: Move virkey* manual pages from -daemon to -client

The documentation included in these manual pages is mostly useful
to users of the 'send-key' virsh command, and the virsh manual
page refers to them, so it makes more sense to install them along
with virsh instead of libvirtd.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
3 years agoDrop YouCompleteMe and color_coded integration
Andrea Bolognani [Mon, 7 Mar 2022 09:41:56 +0000 (10:41 +0100)]
Drop YouCompleteMe and color_coded integration

I introduced support for these vim plugins several years ago
but have since moved away from them. These days developers
are likely better served by lsp-based tooling, which doesn't
require additional per-project configuration.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoAdd .gitattributes file
Andrea Bolognani [Mon, 7 Mar 2022 08:20:35 +0000 (09:20 +0100)]
Add .gitattributes file

The files marked as export-ignore here are not going to be
included in the tarball produced by 'meson dist' when using
meson >= 0.60.

Older versions of meson excluded a small subset of these files
automatically, but since we have more control now we can be
more aggressive and leave out anything that doesn't make sense
in a release tarball.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
3 years agoconf: use a hash table for storing nwfilter object list
Daniel P. Berrangé [Tue, 8 Mar 2022 17:01:36 +0000 (17:01 +0000)]
conf: use a hash table for storing nwfilter object list

The current use of an array for nwfilter objects requires
the caller to iterate over all elements to find a filter,
and also requires locking each filter.

Switching to a pair of hash tables enables O(1) lookups
both by name and uuid, with no locking required.

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>