]> git.ipfire.org Git - thirdparty/libvirt.git/log
thirdparty/libvirt.git
23 months agoqemu: capabilities: Retire QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS
Peter Krempa [Mon, 28 Aug 2023 12:40:54 +0000 (14:40 +0200)] 
qemu: capabilities: Retire QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS

All qemu versions have that command and cpu hotplug code now directly
probes the machine type.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemuDomainSupportsVcpuHotplug: Base return value on virQEMUCapsGetMachineHotplugCpus
Peter Krempa [Mon, 28 Aug 2023 12:14:32 +0000 (14:14 +0200)] 
qemuDomainSupportsVcpuHotplug: Base return value on virQEMUCapsGetMachineHotplugCpus

The QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS flag is always asserted as all
qemu versions support the command and selectively cleared when copying
the capabilities for VM use if given machine type does not support cpu
hotplug.

Rework this to directly probe the machine as we now populate the data
also when re-connecting to a qemu instance after daemon restart, so that
the capability can be removed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemuhotplugtest: Remove 'modern' field for cpu hotplug tests
Peter Krempa [Mon, 28 Aug 2023 12:34:36 +0000 (14:34 +0200)] 
qemuhotplugtest: Remove 'modern' field for cpu hotplug tests

Nowadays all tests were considered 'modern' so it makes no longer sense
to have that field.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agotests: qemuhotplugtest: Fix arch-specific parts of 'ppc64' test XMLs
Peter Krempa [Mon, 28 Aug 2023 12:24:52 +0000 (14:24 +0200)] 
tests: qemuhotplugtest: Fix arch-specific parts of 'ppc64' test XMLs

The tests were using a copy of a x86_64 based XML and thus
'qemuhotplugtest' was selecting wrong capabilities to use for that
specific test.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemuxml2argvtest: Modernize 'cpu-hotplug-startup' case
Peter Krempa [Mon, 28 Aug 2023 12:11:52 +0000 (14:11 +0200)] 
qemuxml2argvtest: Modernize 'cpu-hotplug-startup' case

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemu: process: Probe machine type data on reconnect to qemu
Peter Krempa [Mon, 28 Aug 2023 09:35:07 +0000 (11:35 +0200)] 
qemu: process: Probe machine type data on reconnect to qemu

When reconnecting we populate only the capability flags from the XML as
we need to know the exact flags that were present when starting the VM.

On the other hand the machine type data is not stored as it wasn't
really used after startup. While storing all of the data into the status
XML would be theoretically possible, with machine-type specific data it
makes no sense to do so, and thus the data can be re-probed from the
current instance.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemu: capabilities: Export functions necessary for probing machine types
Peter Krempa [Mon, 28 Aug 2023 10:56:40 +0000 (12:56 +0200)] 
qemu: capabilities: Export functions necessary for probing machine types

Upcoming patch will re-probe machines from the current qemu instance to
populate the private copy of qemuCaps after reconnecting to a running
instance. This is needed to be able to access the machine type data,
while storing them in the status XML seems to be an overkill, for
information which can be easily reprobed.

Export 'virQEMUCapsInitQMPArch' needed to populate the 'arch' field and
'virQEMUCapsProbeQMPMachineTypes'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemu: Rename qemuDomainSupportsNewVcpuHotplug to qemuDomainSupportsVcpuHotplug
Peter Krempa [Thu, 20 Jul 2023 15:55:33 +0000 (17:55 +0200)] 
qemu: Rename qemuDomainSupportsNewVcpuHotplug to qemuDomainSupportsVcpuHotplug

Support for legacy cpu hotplug was removed a long time ago. At this
point this function only checks whether the current machine type
supports cpu hotplug.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoconf, schema: Switch iothread/poll values to unsignedLong
Martin Kletzander [Fri, 1 Sep 2023 21:28:01 +0000 (23:28 +0200)] 
conf, schema: Switch iothread/poll values to unsignedLong

They represent nanoseconds, and we accept such values already.  Not that
anyone would use such values in the wild, but even one person testing
QEMU could put in a bigger value and will be bothered with validation
errors after every `virsh edit`.  Also add a test for it.

Resolves: https://issues.redhat.com/browse/RHEL-1717

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
23 months agotools: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:04:34 +0000 (17:04 +0200)] 
tools: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agosrc: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:04:13 +0000 (17:04 +0200)] 
src: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agovz: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
vz: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agovmx: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
vmx: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agovmware: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
vmware: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agovbox: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
vbox: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoutil: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
util: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agotest: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
test: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agostorage_file: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
storage_file: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agostorage: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
storage: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agosecurity: Move error messages onto a single line
Michal Privoznik [Fri, 25 Aug 2023 07:18:18 +0000 (09:18 +0200)] 
security: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agorpc: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
rpc: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoremote: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:59 +0000 (17:03 +0200)] 
remote: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoqemu: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
qemu: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoopenvz: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
openvz: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agonwfilter: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
nwfilter: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agonode_device: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
node_device: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agonetwork: Move error messages onto a single line
Michal Privoznik [Fri, 25 Aug 2023 07:15:37 +0000 (09:15 +0200)] 
network: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agolxc: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
lxc: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agolocking: Move error messages onto a single line
Michal Privoznik [Fri, 25 Aug 2023 07:13:15 +0000 (09:13 +0200)] 
locking: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agolibxl: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
libxl: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agohypervisor: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
hypervisor: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoesx: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
esx: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agocpu: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
cpu: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoconf: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
conf: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoch: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 15:03:58 +0000 (17:03 +0200)] 
ch: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agobhyve: Move error messages onto a single line
Michal Privoznik [Thu, 24 Aug 2023 14:52:33 +0000 (16:52 +0200)] 
bhyve: Move error messages onto a single line

Error messages are exempt from the 80 columns rule. Move them
onto one line.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
23 months agoTranslated using Weblate (Korean)
김인수 [Mon, 4 Sep 2023 04:21:13 +0000 (06:21 +0200)] 
Translated using Weblate (Korean)

Currently translated at 99.9% (10402 of 10411 strings)

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

Translated using Weblate (Korean)

Currently translated at 99.8% (10397 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>
23 months agotests: Remove unused symlink
Martin Kletzander [Fri, 1 Sep 2023 14:50:23 +0000 (16:50 +0200)] 
tests: Remove unused symlink

The test does not use VIR_TEST_DIFFERENT anyway, so it's probably a
leftover.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
23 months agoNEWS: Announcing Network Metadata APIs
K Shiva Kiran [Wed, 30 Aug 2023 05:17:39 +0000 (10:47 +0530)] 
NEWS: Announcing Network Metadata APIs

Ref to patchset implementing the above:
https://listman.redhat.com/archives/libvir-list/2023-August/241250.html

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Ján Tomko <jtomko@redhat.com>
23 months agoci: lcitool: Add libvirt-tck+runtime deps list
Erik Skultety [Mon, 28 Aug 2023 08:47:32 +0000 (10:47 +0200)] 
ci: lcitool: Add libvirt-tck+runtime deps list

This change was supposed to be part of commit 120a674f , but was
proposed against the libvirt TCK project instead. Since we're running
the TCK test suite as part of this project, this is the right place for
the TCK runtime deps list config.

Signed-off-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
23 months agoPost-release version bump to 9.8.0
Jiri Denemark [Fri, 1 Sep 2023 11:04:19 +0000 (13:04 +0200)] 
Post-release version bump to 9.8.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
23 months agoRelease of libvirt-9.7.0 v9.7.0
Jiri Denemark [Fri, 1 Sep 2023 10:59:24 +0000 (12:59 +0200)] 
Release of libvirt-9.7.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
23 months agovirsh: Fix net-desc --config output
K Shiva Kiran [Thu, 31 Aug 2023 18:16:57 +0000 (23:46 +0530)] 
virsh: Fix net-desc --config output

Fixes the following bug:
Command:          `net-desc --config [--title] my_network`
Expected Output:  Title/Description of persistent config
Output:           Title/Description of live config

This was caused due to the usage of a single `flags` variable in
`virshGetNetworkDescription()` which ended up in a wrong enum being
passed to `virNetworkGetMetadata()` (enum being that of LIVE instead of
CONFIG).

Although the domain object has the same code, this didn't cause a problem
there because the enum values of `VIR_DOMAIN_INACTIVE_XML` and
`VIR_DOMAIN_METADATA_CONFIG` turn out to be the same (1 << 1), whereas
they are not for network equivalent ones (1 << 0, 1 << 1).

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
23 months agoRevert "capabilities: report full external snapshot support"
Pavel Hrdina [Fri, 1 Sep 2023 08:32:17 +0000 (10:32 +0200)] 
Revert "capabilities: report full external snapshot support"

Reverting external snapshot for running VM doesn't work correctly so we
should not report this capability until it is fixed.

This reverts commit de71573bfec7f3acd22ec74794318de121716e21.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
23 months agorpm: Recommend libvirt-daemon for with_modular_daemons distros
Andrea Bolognani [Wed, 30 Aug 2023 15:45:47 +0000 (17:45 +0200)] 
rpm: Recommend libvirt-daemon for with_modular_daemons distros

A default deployment on modern distros uses modular daemons but
switching back to the monolithic daemon, while not recommended,
is still considered a perfectly valid option.

For a monolithic daemon deployment, the upgrade to libvirt 9.2.0
or newer works as expected; a subsequent call to dnf autoremove,
however, results in the libvirt-daemon package being removed and
the deployment no longer working.

In order to avoid that situation, mark the libvirt-daemon as
recommended.

This will unfortunately result in it being included in most
installations despite not being necessary, but considering that
the alternative is breaking existing setups on upgrade it feels
like a reasonable tradeoff.

Moreover, since the dependency on libvirt-daemon is just a weak
one, it's still possible for people looking to minimize the
footprint of their installation to manually remove the package
after installation, mitigating the drawbacks of this approach.

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

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
23 months agorpm: Fix typo in daemon name
Andrea Bolognani [Wed, 30 Aug 2023 15:41:14 +0000 (17:41 +0200)] 
rpm: Fix typo in daemon name

The name of the virtsecretd daemon was misspelled, resulting
in multiple errors during installation:

  Running scriptlet: libvirt-daemon-driver-secret-9.5.0-6.el9.x86_64
  Failed to preset unit: Unit file virsecretd.socket does not exist.
  Failed to preset unit: Unit file virsecretd-ro.socket does not exist.
  Failed to preset unit: Unit file virsecretd-admin.socket does not exist.
  Failed to preset unit: Unit file virsecretd.service does not exist.

Spell the name correctly.

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

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
23 months agoTranslated using Weblate (Ukrainian) v9.7.0-rc2
Yuri Chornoivan [Wed, 30 Aug 2023 12:21:13 +0000 (14:21 +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>
23 months agoTranslated using Weblate (Korean)
김인수 [Wed, 30 Aug 2023 12:21:13 +0000 (14:21 +0200)] 
Translated using Weblate (Korean)

Currently translated at 99.6% (10379 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>
23 months agoDon't set cur=inf RLIM_NOFILE on macOS
Laura Hild [Tue, 15 Aug 2023 14:54:20 +0000 (10:54 -0400)] 
Don't set cur=inf RLIM_NOFILE on macOS

virProcessActivateMaxFiles sets rlim_cur to rlim_max.
If rlim_max is RLIM_INFINITY,

2023-08-15 15:17:51.944+0000: 4456752640: debug :
virProcessActivateMaxFiles:1067 : Initial max files was 2560
2023-08-15 15:17:51.944+0000: 4456752640: debug :
virProcessActivateMaxFiles:1077 : Raised max files to
9223372036854775807

then when virCommandMassClose does `int openmax = sysconf(
_SC_OPEN_MAX)`, `openmax < 0` is true and virCommandMassClose
reports an error and bails.  Setting rlim_cur instead to at most
OPEN_MAX, as macOS' documentation suggests, both avoids this problem

2023-08-18 16:01:44.366+0000: 4359562752: debug :
virProcessActivateMaxFiles:1072 : Initial max files was 256
2023-08-18 16:01:44.366+0000: 4359562752: debug :
virProcessActivateMaxFiles:1086 : Raised max files to 10240

and eliminates a case of what the documentation declares
to be invalid input to setrlimit anyway.

Signed-off-by: Laura Hild <lsh@jlab.org>
23 months agotools: fix VMSA construction with explicit CPU family/model/stepping
Daniel P. Berrangé [Fri, 25 Aug 2023 08:32:25 +0000 (09:32 +0100)] 
tools: fix VMSA construction with explicit CPU family/model/stepping

If the CPU family/model/stepping are provided on the command line, but
the firmware is being automatically extracted from the libvirt guest,
we try to build the VMSA too early. This leads to an exception trying
to parse the firmware that has not been loaded yet. We must delay
building the VMSA in that scenario.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
23 months agotools: fix handling of CPU family/model/stepping in SEV validation
Daniel P. Berrangé [Fri, 25 Aug 2023 08:32:25 +0000 (09:32 +0100)] 
tools: fix handling of CPU family/model/stepping in SEV validation

The SEV-ES boot measurement includes the initial CPU register state
(VMSA) and one of the fields includes the CPU identification. When
building a VMSA blob we get the CPU family/model/stepping from the
host capabilities, however, the VMSA must reflect the guest CPU not
host CPU. Thus using host capabilities is only when whe the guest
has the 'host-passthrough' CPU mode active. With 'host-model' it is
cannot be assumed host and guest match, because QEMU may not (yet)
have a named CPU model for a given host CPU.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
23 months agoci: Fix quoting and option name
Andrea Bolognani [Thu, 24 Aug 2023 15:41:39 +0000 (17:41 +0200)] 
ci: Fix quoting and option name

Multiple values passed to --meson-args need to be quoted so that
the shell will interpret them correctly. The option's name was
also reported incorrectly, so fix that as well.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoci: Fix precedence between arguments passed to meson
Andrea Bolognani [Thu, 24 Aug 2023 15:35:53 +0000 (17:35 +0200)] 
ci: Fix precedence between arguments passed to meson

Commit 9c9848f955fd merged $MESON_OPTS into $MESON_ARGS, and
while doing so changed their behavior: while until then the
contents of $MESON_ARGS had precedence over those of $MESON_OPTS,
now the opposite is true. Restore the original behavior and
document it.

The argument for merging the two variables in the first place
was that having both present on the meson command line could be
confusing; however, that should no longer be the case now that
we have reasonably extensive comments explaining the role of
each of the variables and how they interact with each other, so
return the meson command line to its original form.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoUpdate translation files
Weblate [Mon, 28 Aug 2023 07:56:11 +0000 (09:56 +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>
23 months agopo: Refresh potfile for v9.7.0 v9.7.0-rc1
Jiri Denemark [Mon, 28 Aug 2023 07:47:14 +0000 (09:47 +0200)] 
po: Refresh potfile for v9.7.0

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
23 months agoNEWS: document support for VFIO variant drivers
Laine Stump [Fri, 25 Aug 2023 04:19:50 +0000 (00:19 -0400)] 
NEWS: document support for VFIO variant drivers

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agodocs: update description of virsh nodedev-detach --driver option
Laine Stump [Fri, 25 Aug 2023 04:09:54 +0000 (00:09 -0400)] 
docs: update description of virsh nodedev-detach --driver option

--driver can now be used to specify a specific driver to bind to the
device being detached from the host driver (e.g. vfio-pci-igbvf), not
just the *type* of driver (e.g. "vfio" or "xen", which are unnecessary
anyway, since they are implicit in which hypervisor driver is in use)

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemu: add support for discard_granularity
Kristina Hanicova [Fri, 25 Aug 2023 12:50:32 +0000 (14:50 +0200)] 
qemu: add support for discard_granularity

This commit adds building of `discard_granularity` disk option
for qemu commandline.

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

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
23 months agoconf: add support for discard_granularity
Kristina Hanicova [Fri, 25 Aug 2023 12:50:31 +0000 (14:50 +0200)] 
conf: add support for discard_granularity

This introduces the ability to set the discard granularity option
for a disk.  It defines the smallest amount of data that can be
discarded in a single operation (useful for managing and
optimizing storage).

However, most hypervisors automatically set the proper discard
granularity and users usually do not need to change the default
setting.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
23 months agodocs: Improve documentation of <disk type='dir'>
Peter Krempa [Fri, 25 Aug 2023 12:16:12 +0000 (14:16 +0200)] 
docs: Improve documentation of <disk type='dir'>

Note the implications and caveats of <disk type='dir'>.

Closes: https://gitlab.com/libvirt/libvirt/-/issues/519
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoqemucapabilitiesdata: Final update of capability test data for qemu-8.1.0 release
Peter Krempa [Fri, 25 Aug 2023 11:53:05 +0000 (13:53 +0200)] 
qemucapabilitiesdata: Final update of capability test data for qemu-8.1.0 release

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
23 months agovirsh-network: Drop unused variables in cmdNetworkMetadata()
Michal Privoznik [Fri, 25 Aug 2023 11:22:59 +0000 (13:22 +0200)] 
virsh-network: Drop unused variables in cmdNetworkMetadata()

In one of recent commits two variable were introduced (@ctxt and
@doc) that are not used. This breaks a build with clang who's
able to identify that.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoAdded bridge driver implementation
K Shiva Kiran [Wed, 16 Aug 2023 18:47:15 +0000 (00:17 +0530)] 
Added bridge driver implementation

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoAdd Test driver and testcase for Network Metadata change APIs
K Shiva Kiran [Wed, 16 Aug 2023 18:47:14 +0000 (00:17 +0530)] 
Add Test driver and testcase for Network Metadata change APIs

This commit implements the newly defined Network Metadata Get and
Set APIs into the test driver.
It also adds a new testcase "networkmetadatatest" to test the APIs.

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoAdd virNetworkObj Get and Set Methods for Metadata
K Shiva Kiran [Wed, 16 Aug 2023 18:47:13 +0000 (00:17 +0530)] 
Add virNetworkObj Get and Set Methods for Metadata

- Introduces virNetworkObjGetMetadata() and
  virNetworkObjSetMetadata().
- These functions implement common behaviour that can be reused by
  network drivers.
- Introduces virNetworkObjUpdateModificationImpact() among other
  helper functions that resolve the live/persistent state of
  the network before setting metadata.
- Eliminates redundant call of virNetworkObjSetDefTransient() in
  virNetworkConfigChangeSetup() among others.
- Substituted redundant logic in networkUpdate() with a call to
  virNetworkObjUpdateModificationImpact().

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agovirsh exposure of Network Metadata APIs
K Shiva Kiran [Wed, 16 Aug 2023 18:47:12 +0000 (00:17 +0530)] 
virsh exposure of Network Metadata APIs

Adds two new commands and a new option:
- 'net-desc' to show/modify network title and description.
- 'net-metadata' to show/modify network metadata.
- Option '--title' for 'net-list' to print corresponding
  network titles in an additional column.
- Documentation for all the above.
- XML Fallback function `virshNetworkGetXMLFromNet` for title and
  description for compatibility with hosts running older versions
  of libvirtd.

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoImplementing Remote Protocol for Network Metadata
K Shiva Kiran [Wed, 16 Aug 2023 18:47:11 +0000 (00:17 +0530)] 
Implementing Remote Protocol for Network Metadata

- Defines wire protocol format.
- Implements remote driver.

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoAdding Public Get and Set APIs for Network Metadata
K Shiva Kiran [Wed, 16 Aug 2023 18:47:10 +0000 (00:17 +0530)] 
Adding Public Get and Set APIs for Network Metadata

This patch introduces public Get and Set APIs for modifying <title>,
<description> and <metadata> elements of the Network object.

- Added enum virNetworkMetadataType to select one of the above
  elements to operate on.
- Added error code and messages for missing metadata.
- Added public API implementation.
- Added driver support.

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoAdd <title> and <description> for Network Objects
K Shiva Kiran [Wed, 16 Aug 2023 18:47:09 +0000 (00:17 +0530)] 
Add <title> and <description> for Network Objects

This patch adds new elements <title> and <description> to the Network XML.
- The <title> attribute holds a short title defined by the user and
  cannot contain newlines.
- The <description> attribute holds any documentation that the user
  wants to store.
- Schema definitions of <title> and <description> have been moved from
  domaincommon.rng to basictypes.rng for use by network and future objects.
- Added Network XML parser logic for the above.

Signed-off-by: K Shiva Kiran <shiva_kr@riseup.net>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoqemuxml2xmltest: Merge DO_TEST macro into DO_TEST_CAPS_INTERNAL
Peter Krempa [Thu, 24 Aug 2023 14:58:01 +0000 (16:58 +0200)] 
qemuxml2xmltest: Merge DO_TEST macro into DO_TEST_CAPS_INTERNAL

Now all tests invoke a real-capability version. Remove DO_TEST.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoqemuxml2xmltest: Modernize rest of 'seclabel-*' tests
Peter Krempa [Thu, 24 Aug 2023 13:01:28 +0000 (15:01 +0200)] 
qemuxml2xmltest: Modernize rest of 'seclabel-*' tests

Use real capabilities for these last few tests that were not modernized
due to use of 'WHEN_INACTIVE'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoqemuxml2argvtest: Pass expected state via struct testQemuInfo's 'flags' member
Peter Krempa [Thu, 24 Aug 2023 13:54:26 +0000 (15:54 +0200)] 
qemuxml2argvtest: Pass expected state via struct testQemuInfo's 'flags' member

Rather than having a separate argument to DO_TEST pass the state via
newly added flags 'FLAG_SKIP_CONFIG_ACTIVE'. The '_INACTIVE' equivalent
was not added as there's no test which'd use it.

Remove the old 'WHEN_' flags and move the decision logic out of the
DO_TEST macro as any addition to the logic makes the compiler take much
longer to compile qemuxml2xmltest.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoqemuxml2xmltest: Use DO_TEST_CAPS_ARCH_LATEST_FULL for arm GIC tests
Peter Krempa [Thu, 24 Aug 2023 13:34:07 +0000 (15:34 +0200)] 
qemuxml2xmltest: Use DO_TEST_CAPS_ARCH_LATEST_FULL for arm GIC tests

Use the new macro instead of open coding it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoqemuxml2xmltest: Rework file name generation in 'testInfoSetPaths'
Peter Krempa [Thu, 24 Aug 2023 13:27:26 +0000 (15:27 +0200)] 
qemuxml2xmltest: Rework file name generation in 'testInfoSetPaths'

Pass the state-based suffix directly as string.

Document the logic how the filename is chosen.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agovirschematest: Validate files in 'chxml2xmlin' and 'chxml2xmlout' directories
Peter Krempa [Thu, 24 Aug 2023 12:40:47 +0000 (14:40 +0200)] 
virschematest: Validate files in 'chxml2xmlin' and 'chxml2xmlout' directories

The test files for the 'ch' driver were not validated against the schema
and thus also didn't conform to the schema.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agotests: chxml2xmlin: Fix path format for fake paths
Peter Krempa [Thu, 24 Aug 2023 12:44:39 +0000 (14:44 +0200)] 
tests: chxml2xmlin: Fix path format for fake paths

Our XML schema requires absolute paths for the <kernel> and disk source
values. Fix the 'ch' test to have absolute paths.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
23 months agoqemu: turn two multiline log messages into single line
Laine Stump [Fri, 18 Aug 2023 20:13:16 +0000 (16:13 -0400)] 
qemu: turn two multiline log messages into single line

Normally I wouldn't bother with a change like this, but I was touching
the function anyway, and wanted to leave it looking nice and tidy.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agonode_device: support binding other drivers with virNodeDeviceDetachFlags()
Laine Stump [Sun, 9 Jul 2023 04:37:45 +0000 (00:37 -0400)] 
node_device: support binding other drivers with virNodeDeviceDetachFlags()

In the past, the only allowable values for the "driver" field of
virNodeDeviceDetachFlags() were "kvm" or "vfio" for the QEMU driver,
and "xen" for the libxl driver. Then "kvm" was deprecated and removed,
so the driver name became essentially irrelevant (because it is always
called via a particular hypervisor driver, and so the "xen" or "vfio"
can be (and almost always is) implied.

With the advent of VFIO variant drivers, the ability to explicitly
specify a driver name once again becomes useful - it can be used to
name the exact VFIO driver that we want bound to the device in place
of vfio-pci, so this patch allows those other names to be passed down
the call chain, where the code in virpci.c can make use of them.

The names "vfio", "kvm", and "xen" retain their special meaning, though:

  1) because there may be some application or configuration that still
     calls virNodeDeviceDetachFlags() with driverName="vfio", this
     single value is substituted with the synonym of NULL, which means
     "bind the default driver for this device and hypervisor". This
     will currently result in the vfio-pci driver being bound to the
     device.

  2) in the case of the libxl driver, "xen" means to use the standard
     driver used in the case of Xen ("pciback").

  3) "kvm" as a driver name always results in an error, as legacy KVM
     device assignment was removed from the kernel around 10 years ago.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoutil: honor stubDriverName when probing/binding stub driver for a device
Laine Stump [Sun, 9 Jul 2023 03:05:44 +0000 (23:05 -0400)] 
util: honor stubDriverName when probing/binding stub driver for a device

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoutil: probe stub driver from within function that binds to stub driver
Laine Stump [Sun, 9 Jul 2023 19:00:26 +0000 (15:00 -0400)] 
util: probe stub driver from within function that binds to stub driver

virPCIProbeStubDriver() and virPCIDeviceBindToStub() both have
very similar code that locally sets a driver name (based on
stubDriverType). These two functions are each also called in just one
place (virPCIDeviceDetach()), with just a small bit of validation code
in between.

To eliminate the "duplicated" code (which is going to be expanded
slightly in upcoming patches to support manually or automatically
picking a VFIO variant driver), this patch modifies
virPCIProbeStubDriver() to take the driver name as an argument
(rather than the virPCIDevice object), and calls it from within
virPCIDeviceBindToStub() (rather than from that function's caller),
using the driverName it has just figured out with the
now-not-duplicated code.

(NB: Since it could be used to probe *any* driver module, the name is
changed to virPCIProbeDriver()).

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoutil: permit existing binding to VFIO variant driver
Laine Stump [Fri, 2 Jun 2023 18:34:51 +0000 (14:34 -0400)] 
util: permit existing binding to VFIO variant driver

Before a PCI device can be assigned to a guest with VFIO, that device
must be bound to the vfio-pci driver rather than to the device's
normal host driver. The vfio-pci driver provides APIs that permit QEMU
to perform all the necessary operations to make the device accessible
to the guest.

In the past vfio-pci was the only driver that supplied these APIs, but
there are now vendor/device-specific "VFIO variant" drivers that
provide the basic vfio-pci driver functionality/API while adding
support for device-specific operations (for example these
device-specific drivers may support live migration of certain
devices).  All that is needed to make this functionality available is
to bind the vendor-specific "VFIO variant" driver to the device
(rather than the generic vfio-pci driver, which will continue to work,
just without the extra functionality).

But until now libvirt has required that all PCI devices being assigned
to a guest with VFIO specifically have the "vfio-pci" driver bound to
the device. So even if the user manually binds a shiny new
vendor-specific VFIO variant driver to the device (and puts
"managed='no'" in the config to prevent libvirt from changing the
binding), libvirt will just fail during startup of the guest (or
during hotplug) because the driver bound to the device isn't exactly
"vfio-pci".

Beginning with kernel 6.1, it's possible to determine from the sysfs
directory for a device whether the currently-bound driver is the
vfio-pci driver or a VFIO variant - the device directory will have a
subdirectory called "vfio-dev". We can use that to appropriately widen
the list of drivers that libvirt will allow for VFIO device
assignment.

This patch doesn't remove the explicit check for the exact "vfio-pci"
driver (since that would cause systems with pre-6.1 kernels to behave
incorrectly), but adds an additional check for the vfio-dev directory,
so that any VFIO variant driver is acceptable for libvirt to continue
setting up for VFIO device assignment.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoutil: rename virPCIDeviceGetDriverPathAndName
Laine Stump [Sun, 9 Jul 2023 03:12:09 +0000 (23:12 -0400)] 
util: rename virPCIDeviceGetDriverPathAndName

Instead, call it virPCIDeviceGetCurrentDriverPathAndName() to avoid
confusion with the device name that is stored in the virPCIDevice
object - that one is not necessarily the name of the current driver
for the device, but could instead be the driver that we want to be
bound to the device in the future.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoutil: add stub driver name to virPCIDevice object
Laine Stump [Sun, 9 Jul 2023 02:20:39 +0000 (22:20 -0400)] 
util: add stub driver name to virPCIDevice object

There can be many different drivers that are of the type "VFIO", so
add the driver name to the object and allow getting/setting it.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoutil: use "stubDriverType" instead of just "stubDriver"
Laine Stump [Sun, 9 Jul 2023 02:11:06 +0000 (22:11 -0400)] 
util: use "stubDriverType" instead of just "stubDriver"

In the past we just kept track of the type of the "stub driver" (the
driver that is bound to a device in order to assign it to a
guest). The next commit will add a stubDriverName to go along with
type, so lets use stubDriverType for the existing enum to make it
easier to keep track of whether we're talking about the name or the
type.

Signed-off-by: Laine Stump <laine@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agocapabilities: report full external snapshot support
Pavel Hrdina [Thu, 24 Aug 2023 16:19:52 +0000 (18:19 +0200)] 
capabilities: report full external snapshot support

Now that deleting and reverting external snapshots is implemented we can
report that in capabilities so management applications can use that
information and start using external snapshots.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
23 months agocapabilities: reword disksnapshot feature to mention creating snapshots
Pavel Hrdina [Thu, 24 Aug 2023 16:17:11 +0000 (18:17 +0200)] 
capabilities: reword disksnapshot feature to mention creating snapshots

Libvirt supports creating snapshots for a long time but the wording of
the feature may imply that libvirt supports external snapshots in
general but that is not true as users were not able to use APIs to
delete or revert external snapshots.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
23 months agoqemuValidateDomainVCpuTopology: Remove misconfiguration warning
Peter Krempa [Fri, 21 Jul 2023 07:51:06 +0000 (09:51 +0200)] 
qemuValidateDomainVCpuTopology: Remove misconfiguration warning

Since commit baca59a5384 the NUMA definition is automatically fixed if
the vCPU count mismatches the NUMA cpu count so that this warning will
never be triggered.

Additionally VIR_WARN of a misconfiguration of a VM would not really
be seen in most cases as it's only simply logged.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agoconf: add virDomainDiskBlockIoCheckABIStability()
Kristina Hanicova [Thu, 24 Aug 2023 10:57:00 +0000 (12:57 +0200)] 
conf: add virDomainDiskBlockIoCheckABIStability()

Add missing ABI stability check for blockio properties for disk
devices.

Signed-off-by: Kristina Hanicova <khanicov@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
23 months agovirjsontest: Introduce a test case for an empty array
Michal Privoznik [Thu, 24 Aug 2023 07:56:25 +0000 (09:56 +0200)] 
virjsontest: Introduce a test case for an empty array

Previous commits were all about empty strings and empty JSON
arrays. Introduce a test case for "[]" to make sure we pare it
correctly.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agovirMdevctlList: Don't check for !output
Michal Privoznik [Thu, 24 Aug 2023 08:08:24 +0000 (10:08 +0200)] 
virMdevctlList: Don't check for !output

After 'mdevctl' was ran, its stdout is captured in @output which
is then compared against NULL and if it is NULL a negative value
is returned (to indicate error to the caller). But this is
effectively a dead code, because virCommand (specifically
virCommandProcessIO()) makes sure both stdout and stderr buffers
are properly '\0' terminated. Therefore, this can never evaluate
to true. Also, if there really is no output from 'mdevctl' (which
was handled in one of earlier commits, but let just assume it
wasn't), then we should not error out and treat such scenario as
'no mdevs defined/active'.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agonode_device_driver: Deduplicate mediated devices listing
Michal Privoznik [Thu, 24 Aug 2023 08:23:55 +0000 (10:23 +0200)] 
node_device_driver: Deduplicate mediated devices listing

We have virMdevctlListDefined() to list defined mdevs, and
virMdevctlListActive() to list active mdevs. Both have the same
body except for one boolean argument passed to
nodeDeviceGetMdevctlListCommand(). Join the two functions under
virMdevctlList() name and introduce @defined argument that is
then just passed to the cmd line builder function.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agonodedevmdevctltest: Introduce a test case for empty mdevctl output
Michal Privoznik [Thu, 24 Aug 2023 07:58:33 +0000 (09:58 +0200)] 
nodedevmdevctltest: Introduce a test case for empty mdevctl output

As explained earlier, 'mdevctl' can output nothing. Add a test
case to nodedevmdevctltest which covers this situation.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agonodeDeviceParseMdevctlJSON: Accept empty string
Michal Privoznik [Thu, 24 Aug 2023 08:08:07 +0000 (10:08 +0200)] 
nodeDeviceParseMdevctlJSON: Accept empty string

It is possible for 'mdevctl' to output nothing, an empty string
(e.g. when no mediated devices are defined on the host). What is
weird is that when passing '--defined' then 'mdevctl' outputs an
empty JSON array instead. Nevertheless, we should accept both and
treat them the same, i.e. as no mediated devices.

Resolves: https://gitlab.com/libvirt/libvirt/-/issues/523
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agonodedevmdevctltest: Rename mdevctl-list-empty test case
Michal Privoznik [Thu, 24 Aug 2023 07:57:39 +0000 (09:57 +0200)] 
nodedevmdevctltest: Rename mdevctl-list-empty test case

The mdevctl-list-empty test case is there to test whether an
empty JSON array "[]" is handled correctly by mdevctl handling
code. Well, mdevctl can output both, an empty JSON array or no
output at all.

Therefore, rename "mdevctl-list-empty" test case to
"mdevctl-list-empty-array" which is more descriptive and also
frees up slot for actual empty output (handled in next commits).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agosrc: Detect close_range syscall during virGlobalInit()
Michal Privoznik [Tue, 22 Aug 2023 07:45:47 +0000 (09:45 +0200)] 
src: Detect close_range syscall during virGlobalInit()

The whole purpose of virCloseRangeInit() is to be called
somewhere during initialization (ideally before first virExec()
or virCommandRun()), so that the rest of the code already knows
kernel capabilities. While I can put the call somewhere into
remote_daemon.c (when a daemon initializes), we might call
virCommand*() even from client library (i.e. no daemon).

Therefore, put it into virGlobalInit() with the rest of
initialization code.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agovircommand: Introduce virCommandMassCloseRange()
Michal Privoznik [Tue, 22 Aug 2023 07:41:32 +0000 (09:41 +0200)] 
vircommand: Introduce virCommandMassCloseRange()

This is brand new way of closing FDs before exec(). We need to
close all FDs except those we want to explicitly pass to avoid
leaking FDs into the child. Historically, we've done this by
either iterating over all opened FDs and closing them one by one
(or preserving them), or by iterating over an FD interval [2 ...
N] and closing them one by one followed by calling closefrom(N +
1). This is a lot of syscalls.

That's why Linux kernel developers introduced new close_from
syscall. It closes all FDs within given range, in a single
syscall. Since we keep list of FDs we want to preserve and pass
to the child process, we can use this syscall to close all FDs
in between. We don't even need to care about opened FDs.

Of course, we have to check whether the syscall is available and
fall back to the old implementation if it isn't.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agovircommand: Unify mass FD closing
Michal Privoznik [Mon, 21 Aug 2023 13:10:39 +0000 (15:10 +0200)] 
vircommand: Unify mass FD closing

We have two version of mass FD closing: one for FreeBSD (because
it has closefrom()) and the other for everything else. But now
that we have closefrom() wrapper even for Linux, we can unify
these two.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agovirfile: Introduce virCloseFrom()
Michal Privoznik [Mon, 21 Aug 2023 13:10:25 +0000 (15:10 +0200)] 
virfile: Introduce virCloseFrom()

It is handy to close all FDs from given FD to infinity. On
FreeBSD the libc even has a function for that: closefrom(). It
was ported to glibc too, but not musl. At least glibc
implementation falls back to calling:

  close_range(from, ~0U, 0);

Now that we have a wrapper for close_range() we implement
closefrom() trivially.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agovirfile: Introduce virCloseRange()
Michal Privoznik [Tue, 22 Aug 2023 06:49:10 +0000 (08:49 +0200)] 
virfile: Introduce virCloseRange()

Linux gained new close_range() syscall (in v5.9) that allows
closing a range of FDs in a single syscall. Ideally, we would use
it to close FDs when spawning a process (e.g. via virCommand
module).

Glibc has close_range() wrapper over the syscall, which falls
back to iterative closing of all FDs inside the range if running
under older kernel. We don't wane that as in that case we might
just close opened FDs (see Linux version of
virCommandMassClose()). And musl doesn't have close_range() at
all. Therefore, call syscall directly.

Now, mass close of FDs happens in a fork()-ed off child. While it
could detect whether the kernel does support close_range(), it
has no way of passing this info back to the parent and thus each
child would need to query it again and again.

Since this can't change while we are running we can cache the
information - hence virCloseRangeInit().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Kristina Hanicova <khanicov@redhat.com>
23 months agosrc: Rename some members of _virDomainMemoryDef struct
Michal Privoznik [Thu, 17 Aug 2023 12:52:12 +0000 (14:52 +0200)] 
src: Rename some members of _virDomainMemoryDef struct

As advertised earlier, now that the _virDomainMemoryDef struct is
cleaned up, we can shorten some names as their placement within
unions define their use.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>