[PATCH RFC v2 00/12] Support throttle block filters
by wucf@linux.ibm.com
From: Chun Feng Wu <wucf(a)linux.ibm.com>
Hi,
I am thinking to leverage "throttle block filter" in QEMU to support more flexible I/O limits(e.g. tiered I/O groups), one sample provided by QEMU doc is:
https://github.com/qemu/qemu/blob/master/docs/throttle.txt
"For example, let's say that we have three different drives and we want to set I/O limits for
each one of them and an additional set of limits for the combined I/O of all three drives."
The implementation idea is to
- Define throttle groups(limit) in domain
- Define throttle filter to reference throttle group within disk
- Within domain disk, throttle filters references multiple throttle groups to form filter chain to apply multiple limits in QEMU like above sample
- Add new virsh cmds for throttle group management:
throttlegroupset Add or update a throttling group.
throttlegroupdel Delete a throttling group.
throttlegroupinfo Get a throttling group.
throttlegrouplist list all domain throttlegroups
- Update "attach-disk" to add one more option "--throttle-groups" to apply throttle filters e.g. "virsh attach-disk $VM_ID ${DISK_PATH}/vm1_disk_2.qcow2 vdd --driver qemu --subdriver qcow2 --targetbus virtio --throttle-groups limit2,limit012"
- I chose above semantics as I felt they're appropriate, if there are better ones please kindly suggest.
This patchset includes:
- Throttle group and throttle filter definition in patch 1
- New QMP processing to update and get throttle group in patch 2
- New API definition and implementation in patch 3
- QEMU driver implementation in patch 4
- Hotplug and qemuProcessLaunch flow implemenation in patch 5,6
- Domain XML schema and doc(formatdomain.rst) change in patch 7
- Tests in patch 8,9
- Virsh cmd implementation in patch 10
- Other verification implementation in patch 11, 12
v2 changes:
- fix failure caused by "check-remote_protocol" between patch 3 and patch 9 in v1
- make sure coding style is consistent about function declaration
- patch 3 in v1 is splitted into two commits: "remote: New APIs for ThrottleGroup lifecycle management" and "qemu: Implement qemu driver for throttle API"
- replace "// comment" with "/* comment */"
- avoid empty 'cleanup' labels
- use "virJSONValueObjectAdd(&limits, "P:name", value)" to avoid introducing extra helper, and check return value
- preserve spacing between blocks of code which are not related
- remove "VSH_OT_ALIAS" section for new cmds in virsh_domain.c
From QMP perspective, the sample flow works this way:
- Throttle group creation:
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit0","limits":{"iops-total":200,"iops-read":0,"iops-total-max":200,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit1","limits":{"iops-total":250,"iops-read":0,"iops-total-max":250,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit2","limits":{"iops-total":300,"iops-read":0,"iops-total-max":300,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit012","limits":{"iops-total":400,"iops-read":0,"iops-total-max":400,"iops-total-max-length":1}}}'
- Chain up filters during attaching disk to apply two filters(limit0 and limit012):
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments": {"driver":"file","filename":"/virt/disks/vm1_disk_1.qcow2","node-name":"test-3-storage","auto-read-only":true,"discard":"unmap"}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments":{"node-name":"test-3-format","read-only":false,"driver":"qcow2","file":"test-3-storage","backing":null}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments":{"driver":"throttle","node-name":"libvirt-5-filter","throttle-group": "limit0","file":"test-3-format"}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments": {"driver":"throttle","node-name":"libvirt-6-filter","throttle-group":"limit012","file":"libvirt-5-filter"}}'
virsh qemu-monitor-command 1 '{"execute": "device_add", "arguments": {"driver":"virtio-blk-pci","scsi":false,"bus":"pci.0","addr":"0x5","drive":"libvirt-6-filter","id":"virtio-disk1"}}'
Any comments/suggestions will be appriciated!
Chun Feng Wu (10):
config: Introduce ThrottleGroup and ThrottleFilter
qemu: monitor: Add support for ThrottleGroup operations
remote: New APIs for ThrottleGroup lifecycle management
qemu: Implement qemu driver for throttle API
qemu: hotplug: Support hot attach block disk along with throttle
filters
qemu: command: Support throttle groups and filters during
qemuProcessLaunch
schema: Add new domain elements to support multiple throttle filters
test: Test throttle group lifecycle APIs
tests: Test qemuMonitorJSONGetThrottleGroup and
qemuMonitorJSONUpdateThrottleGroup
virsh: Add support for throttle group operations
Hao Ning Xin (1):
config: validate: Verify throttle group fields
Yan Xiu Wu (1):
config: validate: Use "iotune" and "throttlefilters" exclusively for
specific disk
docs/formatdomain.rst | 48 ++
include/libvirt/libvirt-domain.h | 29 +
src/conf/domain_conf.c | 386 +++++++++++++
src/conf/domain_conf.h | 54 ++
src/conf/domain_validate.c | 120 ++--
src/conf/schemas/domaincommon.rng | 164 +++++-
src/conf/virconftypes.h | 4 +
src/driver-hypervisor.h | 22 +
src/libvirt-domain.c | 190 +++++++
src/libvirt_private.syms | 9 +
src/libvirt_public.syms | 7 +
src/qemu/qemu_block.c | 131 +++++
src/qemu/qemu_block.h | 53 ++
src/qemu/qemu_command.c | 158 ++++++
src/qemu/qemu_command.h | 9 +
src/qemu/qemu_domain.c | 85 +++
src/qemu/qemu_domain.h | 15 +
src/qemu/qemu_driver.c | 529 ++++++++++++++++++
src/qemu/qemu_hotplug.c | 24 +
src/qemu/qemu_monitor.c | 34 ++
src/qemu/qemu_monitor.h | 14 +
src/qemu/qemu_monitor_json.c | 151 +++++
src/qemu/qemu_monitor_json.h | 14 +
src/remote/remote_daemon_dispatch.c | 61 ++
src/remote/remote_driver.c | 49 ++
src/remote/remote_protocol.x | 50 +-
src/remote_protocol-structs | 30 +
src/test/test_driver.c | 382 +++++++++++++
tests/qemumonitorjsontest.c | 88 +++
.../qemustatusxml2xmldata/backup-pull-in.xml | 1 +
.../blockjob-blockdev-in.xml | 1 +
.../blockjob-mirror-in.xml | 1 +
.../migration-in-params-in.xml | 1 +
.../migration-out-nbd-bitmaps-in.xml | 1 +
.../migration-out-nbd-out.xml | 1 +
.../migration-out-nbd-tls-out.xml | 1 +
.../migration-out-params-in.xml | 1 +
tests/qemustatusxml2xmldata/modern-in.xml | 1 +
tests/qemustatusxml2xmldata/upgrade-out.xml | 1 +
.../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 +
tools/virsh-completer-domain.c | 64 +++
tools/virsh-completer-domain.h | 10 +
tools/virsh-domain.c | 471 ++++++++++++++++
43 files changed, 3430 insertions(+), 36 deletions(-)
--
2.34.1
6 months
[PATCH] news: document new virt-host-validate impl
by Daniel P. Berrangé
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
NEWS.rst | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/NEWS.rst b/NEWS.rst
index f3ca29443a..bc8acc62d4 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -19,6 +19,13 @@ v10.5.0 (unreleased)
* **Improvements**
+ * tools: virt-pki-validate has been rewritten in C
+
+ The ``virt-pki-validate`` shell script has been rewritten as a C program,
+ providing an output format that matches ``virt-host-validate``, removing
+ the dependency on ``certtool`` and providing more comprehensive checks
+ of the certificate properties.
+
* **Bug fixes**
--
2.45.1
6 months
[PATCH 0/3] qemu: Fix missing validation of 'scsi' property support for 'virtio-blk' and update capabilites dump for qemu-9.1
by Peter Krempa
Peter Krempa (3):
qemuValidateDomainDeviceDefDiskFrontend: Refactor validation of <disk
type='lun'>
qemu_validate: Validate support for SCSI emulation support in
'virtio-blk' devices
qemucapabilitiestest: Update test data for qemu 9.1 dev cycle
src/qemu/qemu_validate.c | 38 +-
.../caps_9.1.0_x86_64.replies | 3210 +++++++++--------
.../caps_9.1.0_x86_64.xml | 16 +-
...test.args => virtio-lun.x86_64-9.0.0.args} | 2 +-
...latest.xml => virtio-lun.x86_64-9.0.0.xml} | 2 +-
.../virtio-lun.x86_64-latest.err | 1 +
tests/qemuxmlconftest.c | 3 +-
7 files changed, 1716 insertions(+), 1556 deletions(-)
rename tests/qemuxmlconfdata/{virtio-lun.x86_64-latest.args => virtio-lun.x86_64-9.0.0.args} (96%)
rename tests/qemuxmlconfdata/{virtio-lun.x86_64-latest.xml => virtio-lun.x86_64-9.0.0.xml} (97%)
create mode 100644 tests/qemuxmlconfdata/virtio-lun.x86_64-latest.err
--
2.45.2
6 months
[PATCH] meson: fix missing use of unitdir for systemd directory
by Daniel P. Berrangé
This conversion was missed in the previous commit:
commit a7eb7de53171b4cdabc3d36524c468abfe2590fa
Author: Daniel P. Berrangé <berrange(a)redhat.com>
Date: Thu Jun 6 12:57:08 2024 +0100
meson: allow systemd unitdir to be changed
Reported-by: Yaakov Selkowitz <yselkowi(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tools/meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/meson.build b/tools/meson.build
index 1bb84be0be..07f8c1bf28 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -322,7 +322,7 @@ if conf.has('WITH_LIBVIRTD')
output: '@BASENAME@',
configuration: tools_conf,
install: true,
- install_dir: prefix / 'lib' / 'systemd' / 'system',
+ install_dir: unitdir,
)
endif
endif
--
2.43.0
6 months
[PATCH 0/9] tools: rewrite virt-pki-validate in C
by Daniel P. Berrangé
This was driven by the complaint that libvirt pulls in gnutls-utils
https://src.fedoraproject.org/rpms/virt-viewer/pull-request/4
but also it lets us remove more usage of Shell code from libvirt,
as well as improving the consistency of certificate checks vs the
runtime checks we do.
Daniel P. Berrangé (9):
rpc: split out helpers for TLS cert path location
rpc: refactor method for checking session certificates
rpc: split TLS cert validation into separate file
docs: fix author credit for virt-pki-validate tool
tools: split off common helpers for host validate tool
tools: drop unused --version argument
tools: stop checking init scripts & iptables config
tools: reimplement virt-pki-validate in C
tools: support validating user/custom PKI certs
docs/manpages/virt-pki-validate.rst | 9 +-
libvirt.spec.in | 2 -
po/POTFILES | 3 +
src/rpc/meson.build | 7 +-
src/rpc/virnettlscert.c | 553 ++++++++++++++++++++++++++
src/rpc/virnettlscert.h | 42 ++
src/rpc/virnettlsconfig.c | 202 ++++++++++
src/rpc/virnettlsconfig.h | 68 ++++
src/rpc/virnettlscontext.c | 586 +---------------------------
tools/meson.build | 31 +-
tools/virt-host-validate-ch.c | 12 +-
tools/virt-host-validate-common.c | 308 ++++++---------
tools/virt-host-validate-common.h | 48 +--
tools/virt-host-validate-lxc.c | 18 +-
tools/virt-host-validate-qemu.c | 30 +-
tools/virt-host-validate.c | 2 +-
tools/virt-login-shell-helper.c | 2 +-
tools/virt-pki-query-dn.c | 2 +-
tools/virt-pki-validate.c | 424 ++++++++++++++++++++
tools/virt-pki-validate.in | 323 ---------------
tools/virt-validate-common.c | 110 ++++++
tools/virt-validate-common.h | 57 +++
22 files changed, 1670 insertions(+), 1169 deletions(-)
create mode 100644 src/rpc/virnettlscert.c
create mode 100644 src/rpc/virnettlscert.h
create mode 100644 src/rpc/virnettlsconfig.c
create mode 100644 src/rpc/virnettlsconfig.h
create mode 100644 tools/virt-pki-validate.c
delete mode 100644 tools/virt-pki-validate.in
create mode 100644 tools/virt-validate-common.c
create mode 100644 tools/virt-validate-common.h
--
2.43.0
6 months
[PATCH] virt-aa-helper: use 'include if exists' on .files
by Georgia Garcia
Change the 'include' in the AppArmor policy to use 'include if exists'
when including <uuid>.files. Note that 'if exists' is only available
after AppArmor 3.0, therefore a #ifdef check must be added.
When the <uuid>.files is not present, there are some failures in the
AppArmor tools like the following, since they expect the file to exist
when using 'include':
ERROR: Include file /etc/apparmor.d/libvirt/libvirt-8534a409-a460-4fab-a2dd-0e1dce4ff273.files not found
Signed-off-by: Georgia Garcia <georgia.garcia(a)canonical.com>
---
src/security/virt-aa-helper.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c
index 0374581f07..402cbd9602 100644
--- a/src/security/virt-aa-helper.c
+++ b/src/security/virt-aa-helper.c
@@ -1564,7 +1564,12 @@ main(int argc, char **argv)
/* create the profile from TEMPLATE */
if (ctl->cmd == 'c' || purged) {
char *tmp = NULL;
- tmp = g_strdup_printf(" #include <libvirt/%s.files>\n", ctl->uuid);
+#if defined(WITH_APPARMOR_3)
+ const char *ifexists = "if exists ";
+#else
+ const char *ifexists = "";
+#endif
+ tmp = g_strdup_printf(" #include %s<libvirt/%s.files>\n", ifexists, ctl->uuid);
if (ctl->dryrun) {
vah_info(profile);
--
2.34.1
6 months
[libvirt PATCH 00/28] native support for nftables in virtual network
driver
by Laine Stump
(After replying to your message, I noticed that you had sent it as a
reply to a much earlier version of the nftables patches sent a year ago
to the old mailing list, rather than the most recent version that was
pushed, which was very different, and sent to deel(a)lists.libvirt.org, so
I'm re-sending my response, but to the new mailing list :-))
On 6/10/24 2:54 PM, Roman Bogorodskiy wrote:
> Laine Stump wrote:
>
>> This patch series enables libvirt to use nftables rules rather than
>> iptables *when setting up virtual networks* (it does *not* add
>> nftables support to the nwfilter driver). It accomplishes this by
>> abstracting several iptables functions (from viriptables.[ch] called
>> by the virtual network driver into a rudimentary "virNetfilter API"
>> (in virnetfilter.[ch], having the virtual network driver call the
>> virNetFilter API rather than calling the existing iptables functions
>> directly, and then finally adding an equivalent virNftables backend
>> that can be used instead of iptables (selected manually via a
>> network.conf setting, or automatically if iptables isn't found on the
>> host).
>
> Hi,
>
> Apparently, I'm late to the discussion.
>
> I noticed that now I cannot use the bridge driver on FreeBSD as it's
> failing to initialize both iptables and nftables backends (which is
> expect).
Yeah, previously we wouldn't check if iptables was available until
someone tried to start a network that would need to use it, and would
then log an error (and just fail starting that network, but the network
driver would remain running). But now we figure out which firewall
backend to use immediately when the driver is loaded, and if we fail to
fin a workable backend we fail the entire driver init.r
How did you use the network driver before? With a <forward mode='open'/>
network? Truthfully I hadn't ever considered the case of someone using
it with only network types that didn't need firewall rules. I wonder if
there are other platforms we support that have a usable network driver
for <forward mode='open'/> (MacOS?)
>
> What would be a good way to address that? I see at least two options:
>
> 1. Add a Noop firewall driver
> 2. Implement a "real" FreeBSD driver based either on pf or ipfw (that's
> been on my TODO list forever, but I somehow got stuck on the very first
> step on choosing between pf and ipfw).
Why not both? :-)
> This obviously will take much
> more time.
>
> Maybe there are other options I'm missing.
Obviously (2) would be nicest, but I guess in the short term some
variation of (1) would be quicker.
Another possibility could be to restore the old behavior of saving the
error and only reporting it when a network requiring a firewall is
loaded, but I think I remember a discussion about this during review of
an earlier revision of the patches, and we agreed that it made the
problem easier to find if it was reported immediately and the driver
load failed.
I suppose in the long run the build-time option
firewall_backend_priority should be used to control which backends are
included in the build (rather than just which ones are checked at
runtime), so that FreeBSD could completely skip all the iptables and
nftables code (and firewalld when that's done), and Linux platforms
could skip pf and ipfw.
>
> What do you think?
I'm about to be offline for 3 weeks, but in the meantime if you'd like
to try making a NULL backend that is only an option if it's listed in
firewall_backend_priority (you'll need to remove the compile-time check
that all possible backends are accounted for - I think that is the first
of the two G_STATIC_ASSERTS at the top of virNetworkLoadDriverConfig()),
always initializes successfully in bridge_driver_conf.c if it is listed
in the options, and then in networkAddFirewallRules add a check to log
an error and fail if backend == NULL (something about attempting to
start a network type that would require firewall rules, but the system
not having any of the supported types of firewallbackend or something -
it's too late now and my brain is too fried and sleepy to think of good
wording :-)). As long as it isn't a valid selection on Linux builds that
are done with firewall_backend_priority=nftables,iptables, but *is* a
valid selection if the setting is "firewall_backend_priority=null" that
shouldn't be *too* controversial.
Later we can talk about pf and ipfw backends :-)
6 months
[PATCH v2] meson: allow systemd sysusersdir to be changed
by Daniel P. Berrangé
We currently hardcode the systemd sysusersdir, but it is desirable to be
able to choose a different location in some cases. For example, Fedora
flatpak builds change the RPM %_sysusersdir macro, but we can't currently
honour that.
Reported-by: Yaakov Selkowitz <yselkowi(a)redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt.spec.in | 1 +
meson.build | 5 +++++
meson_options.txt | 1 +
src/qemu/meson.build | 2 +-
4 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/libvirt.spec.in b/libvirt.spec.in
index 244e5e824c..347a609add 100644
--- a/libvirt.spec.in
+++ b/libvirt.spec.in
@@ -1328,6 +1328,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec)
-Drunstatedir=%{_rundir} \
-Dinitconfdir=%{_sysconfdir}/sysconfig \
-Dunitdir=%{_unitdir} \
+ -Dsysusersdir=%{_sysusersdir} \
%{?arg_qemu} \
%{?arg_openvz} \
%{?arg_lxc} \
diff --git a/meson.build b/meson.build
index 295613fd93..5c7cd7ec2e 100644
--- a/meson.build
+++ b/meson.build
@@ -100,6 +100,11 @@ if unitdir == ''
unitdir = prefix / 'lib' / 'systemd' / 'system'
endif
+sysusersdir = get_option('sysusersdir')
+if sysusersdir == ''
+ sysusersdir = prefix / 'lib' / 'sysusers.d'
+endif
+
bindir = prefix / get_option('bindir')
datadir = prefix / get_option('datadir')
includedir = prefix / get_option('includedir')
diff --git a/meson_options.txt b/meson_options.txt
index a4f1dd769f..50d71427cb 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,6 +5,7 @@ option('system', type: 'boolean', value: false, description: 'Set install paths
option('runstatedir', type: 'string', value: '', description: 'State directory for temporary sockets, pid files, etc')
option('initconfdir', type: 'string', value: '', description: 'directory for init script configuration files')
option('unitdir', type: 'string', value: '', description: 'directory for systemd unit files')
+option('sysusersdir', type: 'string', value: '', description: 'directory for sysusers files')
# dep:tests
option('expensive_tests', type: 'feature', value: 'auto', description: 'set the default for enabling expensive tests (long timeouts)')
option('test_coverage', type: 'boolean', value: false, description: 'turn on code coverage instrumentation')
diff --git a/src/qemu/meson.build b/src/qemu/meson.build
index 907893d431..57356451e4 100644
--- a/src/qemu/meson.build
+++ b/src/qemu/meson.build
@@ -163,7 +163,7 @@ if conf.has('WITH_QEMU')
# Install the sysuser config for the qemu driver
install_data(
'libvirt-qemu.sysusers.conf',
- install_dir: prefix / 'lib' / 'sysusers.d',
+ install_dir: sysusersdir,
rename: [ 'libvirt-qemu.conf' ],
)
--
2.43.0
6 months
[PATCH 0/5] Introduce pstore device
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (5):
qemu_capabilities: Introduce QEMU_CAPS_DEVICE_ACPI_ERST
conf: Introduce pstore device
qemu: Build cmd line for pstore device
security: Set seclabels for pstore device
NEWS: Document pstore device addition
NEWS.rst | 7 +
docs/formatdomain.rst | 32 ++++
src/ch/ch_domain.c | 1 +
src/conf/domain_conf.c | 153 ++++++++++++++++++
src/conf/domain_conf.h | 19 +++
src/conf/domain_postparse.c | 1 +
src/conf/domain_validate.c | 30 ++++
src/conf/schemas/domaincommon.rng | 25 +++
src/conf/virconftypes.h | 2 +
src/hyperv/hyperv_driver.c | 1 +
src/libvirt_private.syms | 2 +
src/libxl/libxl_driver.c | 6 +
src/lxc/lxc_driver.c | 6 +
src/qemu/qemu_alias.c | 10 ++
src/qemu/qemu_capabilities.c | 4 +
src/qemu/qemu_capabilities.h | 3 +
src/qemu/qemu_command.c | 52 ++++++
src/qemu/qemu_domain.c | 3 +
src/qemu/qemu_domain_address.c | 11 ++
src/qemu/qemu_driver.c | 3 +
src/qemu/qemu_hotplug.c | 5 +
src/qemu/qemu_validate.c | 26 +++
src/security/security_dac.c | 10 ++
src/security/security_selinux.c | 9 ++
src/security/virt-aa-helper.c | 4 +
.../caps_7.0.0_aarch64+hvf.xml | 1 +
.../caps_7.0.0_aarch64.xml | 1 +
.../qemucapabilitiesdata/caps_7.0.0_ppc64.xml | 1 +
.../caps_7.0.0_x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_7.1.0_ppc64.xml | 1 +
.../caps_7.1.0_x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml | 1 +
.../caps_7.2.0_x86_64+hvf.xml | 1 +
.../caps_7.2.0_x86_64.xml | 1 +
.../caps_8.0.0_x86_64.xml | 1 +
.../caps_8.1.0_x86_64.xml | 1 +
.../caps_8.2.0_aarch64.xml | 1 +
.../caps_8.2.0_armv7l.xml | 1 +
.../caps_8.2.0_loongarch64.xml | 1 +
.../caps_8.2.0_x86_64.xml | 1 +
.../caps_9.0.0_x86_64.xml | 1 +
.../caps_9.1.0_x86_64.xml | 1 +
.../pstore-acpi-erst.x86_64-latest.args | 38 +++++
.../pstore-acpi-erst.x86_64-latest.xml | 1 +
tests/qemuxmlconfdata/pstore-acpi-erst.xml | 53 ++++++
tests/qemuxmlconftest.c | 1 +
46 files changed, 535 insertions(+)
create mode 100644 tests/qemuxmlconfdata/pstore-acpi-erst.x86_64-latest.args
create mode 120000 tests/qemuxmlconfdata/pstore-acpi-erst.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/pstore-acpi-erst.xml
--
2.44.2
6 months