[libvirt] [PATCH v2] tools/virt-host-validate: Fix IOMMU check on s390x
by Thomas Huth
When running virt-host-validate on an s390x host, the tool currently warns
that it is "Unknown if this platform has IOMMU support". We can use the
common check for entries in /sys/kernel/iommu_groups here, too, but it only
makes sense to check it if there are also PCI devices available. It's also
common on s390x that there are no PCI devices assigned to the LPAR, and in
that case there is no need for the PCI-related IOMMU, so without PCI devices
we should simply skip this test.
Signed-off-by: Thomas Huth <thuth(a)redhat.com>
---
v2:
- Use virDirOpen() + virDirRead() instead of stat() - this should hopefully
work now as expected.
tools/virt-host-validate-common.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/tools/virt-host-validate-common.c b/tools/virt-host-validate-common.c
index 73e3bdb..e27b558 100644
--- a/tools/virt-host-validate-common.c
+++ b/tools/virt-host-validate-common.c
@@ -337,7 +337,12 @@ int virHostValidateIOMMU(const char *hvname,
virBitmapPtr flags;
struct stat sb;
const char *bootarg = NULL;
- bool isAMD = false, isIntel = false, isPPC = false;
+ bool isAMD = false, isIntel = false;
+ virArch arch = virArchFromHost();
+ struct dirent *dent;
+ DIR *dir;
+ int rc;
+
flags = virHostValidateGetCPUFlags();
if (flags && virBitmapIsBitSet(flags, VIR_HOST_VALIDATE_CPU_FLAG_VMX))
@@ -347,8 +352,6 @@ int virHostValidateIOMMU(const char *hvname,
virBitmapFree(flags);
- isPPC = ARCH_IS_PPC64(virArchFromHost());
-
if (isIntel) {
virHostMsgCheck(hvname, "%s", _("for device assignment IOMMU support"));
if (access("/sys/firmware/acpi/tables/DMAR", F_OK) == 0) {
@@ -373,8 +376,17 @@ int virHostValidateIOMMU(const char *hvname,
"hardware platform");
return -1;
}
- } else if (isPPC) {
+ } else if (ARCH_IS_PPC64(arch)) {
/* Empty Block */
+ } else if (ARCH_IS_S390(arch)) {
+ /* On s390x, we skip the IOMMU check if there are no PCI devices
+ * (which is quite usual on s390x) */
+ if (!virDirOpen(&dir, "/sys/bus/pci/devices"))
+ return 0;
+ rc = virDirRead(dir, &dent, NULL);
+ VIR_DIR_CLOSE(dir);
+ if (rc <= 0)
+ return 0;
} else {
virHostMsgFail(level,
"Unknown if this platform has IOMMU support");
@@ -391,7 +403,7 @@ int virHostValidateIOMMU(const char *hvname,
virHostMsgCheck(hvname, "%s", _("if IOMMU is enabled by kernel"));
if (sb.st_nlink <= 2) {
- if (!isPPC)
+ if (bootarg)
virHostMsgFail(level,
"IOMMU appears to be disabled in kernel. "
"Add %s to kernel cmdline arguments", bootarg);
--
1.8.3.1
5 years, 7 months
[libvirt] [PATCH] snapshots: Trivial doc improvements
by Eric Blake
Fix an incorrect @xmlDesc comment, as well as adding more details
about which XML element should be root.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
Pushing this one as trivial; noticed it while working on Jan's suggestion
of a new API for bulk dumpxml/redefine.
src/libvirt-domain-snapshot.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/libvirt-domain-snapshot.c b/src/libvirt-domain-snapshot.c
index a647a500d6..11d84289f8 100644
--- a/src/libvirt-domain-snapshot.c
+++ b/src/libvirt-domain-snapshot.c
@@ -98,11 +98,11 @@ virDomainSnapshotGetConnect(virDomainSnapshotPtr snapshot)
/**
* virDomainSnapshotCreateXML:
* @domain: a domain object
- * @xmlDesc: string containing an XML description of the domain
+ * @xmlDesc: string containing an XML description of the domain snapshot
* @flags: bitwise-OR of virDomainSnapshotCreateFlags
*
* Creates a new snapshot of a domain based on the snapshot xml
- * contained in xmlDesc.
+ * contained in xmlDesc, with a top-level element <domainsnapshot>.
*
* If @flags is 0, the domain can be active, in which case the
* snapshot will be a full system snapshot (capturing both disk state,
@@ -247,7 +247,8 @@ virDomainSnapshotCreateXML(virDomainPtr domain,
* @snapshot: a domain snapshot object
* @flags: bitwise-OR of supported virDomainSnapshotXMLFlags
*
- * Provide an XML description of the domain snapshot.
+ * Provide an XML description of the domain snapshot, with a top-level
+ * element of <domainsnapshot>.
*
* No security-sensitive data will be included unless @flags contains
* VIR_DOMAIN_SNAPSHOT_XML_SECURE; this flag is rejected on read-only
--
2.20.1
5 years, 7 months
[libvirt] [PATCH v3 00/18] bulk snapshot list/redefine (incremental backup saga)
by Eric Blake
While looking at my work on incremental backups, Nir raised a good
point: if we want to recreate a set of known checkpoints on one
machine that will be taking over a domain from another machine,
my initial proposal required making multiple API calls to list the
XML for each checkpoint on the source, and then more API calls to
redefine each checkpoint on the destination; it also had the drawback
that the list has to be presented in topological order (the API won't
let you define a child checkpoint if the parent is not defined first).
He asked if I could instead add bulk APIs, for getting the XML for
all checkpoints at once, and then for redefining all checkpoints at
once.
Since my checkpoint code borrows heavily from concepts in the snapshot
code, I chose to tackle the problem by starting with this series, which
does the same thing for snapshots as what I plan to do for checkpoints.
That is, since this patch series adds virDomainGetXMLDesc(,
VIR_DOMAIN_XML_SNAPSHOTS) and virDomainSnapshotCreateXML(,
VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE_LIST), the checkpoint series
will add virDOmainGetXMLDesc(, VIR_DOMAIN_XML_CHECKPOINTS) and
virDomainCheckpointCreateXML(, VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE_LIST)
with very similar code.
Also available at:
https://repo.or.cz/libvirt/ericb.git/shortlog/refs/tags/snapshot-bulk-v3
Changes since v2:
- address lots of comments from John
- split and rearrange some patches
- incorporate remaining patches from my series fixing --redefine bugs
- rebase to master
001/18:[down] 'qemu: Refactor snapshot check for _LIVE vs. _REDEFINE'
002/18:[down] 'snapshot: Rework virDomainSnapshotState enum'
003/18:[down] 'qemu: Use virDomainSnapshotState for switch statements'
004/18:[0017] [FC] 'snapshot: Give virDomainSnapshotDefFormat its own flags'
005/18:[0003] [FC] 'snapshot: Refactor virDomainSnapshotDefFormat'
006/18:[0029] [FC] 'snapshot: Add virDomainSnapshotObjListFormat'
007/18:[down] 'domain: Add struct for future domain format parameters'
008/18:[down] 'snapshot: Avoid latent use-after-free when cleaning snapshots'
009/18:[0071] [FC] 'domain: Expand virDomainDefFormatInternal with snapshots'
010/18:[down] 'snapshot: Split out virDomainSnapshotRedefineValidate helper'
011/18:[down] 'snapshot: Add virDomainSnapshotObjListParse'
012/18:[0005] [FC] 'domain: Add VIR_DOMAIN_XML_SNAPSHOTS flag'
013/18:[0002] [FC] 'snapshot: Add VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE_LIST flag'
014/18:[0018] [FC] 'virsh: Expose bulk snapshot dumpxml/redefine'
015/18:[0010] [FC] 'test: Implement bulk snapshot operations'
016/18:[down] 'qemu: Factor out qemuDomainSnapshotValidate() helper'
017/18:[down] 'qemu: Const-correct snapshot directory name'
018/18:[0033] [FC] 'qemu: Implement bulk snapshot operations'
Eric Blake (18):
qemu: Refactor snapshot check for _LIVE vs. _REDEFINE
snapshot: Rework virDomainSnapshotState enum
qemu: Use virDomainSnapshotState for switch statements
snapshot: Give virDomainSnapshotDefFormat its own flags
snapshot: Refactor virDomainSnapshotDefFormat
snapshot: Add virDomainSnapshotObjListFormat
domain: Add struct for future domain format parameters
snapshot: Avoid latent use-after-free when cleaning snapshots
domain: Expand virDomainDefFormatInternal with snapshots
snapshot: Split out virDomainSnapshotRedefineValidate helper
snapshot: Add virDomainSnapshotObjListParse
domain: Add VIR_DOMAIN_XML_SNAPSHOTS flag
snapshot: Add VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE_LIST flag
virsh: Expose bulk snapshot dumpxml/redefine
test: Implement bulk snapshot operations
qemu: Factor out qemuDomainSnapshotValidate() helper
qemu: Const-correct snapshot directory name
qemu: Implement bulk snapshot operations
include/libvirt/libvirt-domain-snapshot.h | 3 +
include/libvirt/libvirt-domain.h | 1 +
src/conf/domain_conf.h | 21 +-
src/conf/snapshot_conf.h | 47 +-
src/qemu/qemu_domain.h | 2 +-
src/conf/domain_conf.c | 69 ++-
src/conf/snapshot_conf.c | 513 ++++++++++++++++------
src/esx/esx_driver.c | 1 -
src/libvirt-domain-snapshot.c | 23 +-
src/libvirt-domain.c | 8 +-
src/libvirt_private.syms | 3 +
src/network/bridge_driver.c | 2 +-
src/qemu/qemu_domain.c | 47 +-
src/qemu/qemu_driver.c | 234 ++++++----
src/test/test_driver.c | 52 ++-
src/vbox/vbox_common.c | 13 +-
src/vz/vz_driver.c | 3 +-
tests/domainsnapshotxml2xmltest.c | 16 +-
tools/virsh-domain.c | 7 +
tools/virsh-snapshot.c | 14 +
tools/virsh.pod | 18 +-
21 files changed, 790 insertions(+), 307 deletions(-)
--
2.20.1
5 years, 7 months
[libvirt] [PATCH] LXC containers don't stopped under some conditions
by Maxim Kozin
LXC containers can be started, but time to time can't be stopped.
1) virsh shutdown with option "--mode initctl" always stop container, but
virsh report error:
"Container does not provide an initctl pipe"
In container present /dev/initctl
2) virsh shutdown with option "--mode signal" never stop lxc container, at
least for centos 7.5/7.6
In container log:
systemd: Received SIGTERM.
systemd: Reexecuting.
systemd: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA
-APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS
+ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
systemd: Detected virtualization lxc-libvirt.
systemd: Detected architecture x86-64.
3) virsh shutdown without option "--mode" can stop lxc container, but in 2 cases:
- cointainer not under heavy load
- in gdb when perform step-by-setp debug
But most often not, with simptoms as with --mode signal.
Patch tested only with host centos 7.6 and guests centos 7.5/7.6
Short comments to patch.
lxcDomainShutdownFlags() return rc=0 and container begin stopped.
We not go to endjob label, but later we pass check:
if (rc == 0 &&
(flags == 0 ||
(flags & VIR_DOMAIN_SHUTDOWN_SIGNAL))) {
And trying next shutdown method with sigterm to PID 1.
If container heavy loaded, it not stopped. IF not or if you wait in gdb, then
first method succefully perform shutdown.
Signed-off-by: Maxim Kozin <kolomaxes(a)gmail.com>
---
src/lxc/lxc_driver.c | 40 ++++++++++++++++++----------------------
1 file changed, 18 insertions(+), 22 deletions(-)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index b1ef221..760f9f8 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -3269,7 +3269,7 @@ lxcDomainShutdownFlags(virDomainPtr dom,
virLXCDomainObjPrivatePtr priv;
virDomainObjPtr vm;
int ret = -1;
- int rc;
+ int rc = -1;
virCheckFlags(VIR_DOMAIN_SHUTDOWN_INITCTL |
VIR_DOMAIN_SHUTDOWN_SIGNAL, -1);
@@ -3298,19 +3298,17 @@ lxcDomainShutdownFlags(virDomainPtr dom,
(flags & VIR_DOMAIN_SHUTDOWN_INITCTL)) {
int command = VIR_INITCTL_RUNLEVEL_POWEROFF;
- if ((rc = virLXCDomainSetRunlevel(vm, command)) < 0)
- goto endjob;
- if (rc == 0 && flags != 0 &&
- ((flags & ~VIR_DOMAIN_SHUTDOWN_INITCTL) == 0)) {
- virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
- _("Container does not provide an initctl pipe"));
- goto endjob;
+ if ((rc = virLXCDomainSetRunlevel(vm, command)) < 0) {
+ if (flags != 0 &&
+ (flags & VIR_DOMAIN_SHUTDOWN_INITCTL)) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("Container does not provide an initctl pipe"));
+ goto endjob;
+ }
}
- } else {
- rc = 0;
}
- if (rc == 0 &&
+ if (rc < 0 &&
(flags == 0 ||
(flags & VIR_DOMAIN_SHUTDOWN_SIGNAL))) {
if (kill(priv->initpid, SIGTERM) < 0 &&
@@ -3347,7 +3345,7 @@ lxcDomainReboot(virDomainPtr dom,
virLXCDomainObjPrivatePtr priv;
virDomainObjPtr vm;
int ret = -1;
- int rc;
+ int rc = -1;
virCheckFlags(VIR_DOMAIN_REBOOT_INITCTL |
VIR_DOMAIN_REBOOT_SIGNAL, -1);
@@ -3376,19 +3374,17 @@ lxcDomainReboot(virDomainPtr dom,
(flags & VIR_DOMAIN_REBOOT_INITCTL)) {
int command = VIR_INITCTL_RUNLEVEL_REBOOT;
- if ((rc = virLXCDomainSetRunlevel(vm, command)) < 0)
- goto endjob;
- if (rc == 0 && flags != 0 &&
- ((flags & ~VIR_DOMAIN_SHUTDOWN_INITCTL) == 0)) {
- virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
- _("Container does not provide an initctl pipe"));
- goto endjob;
+ if ((rc = virLXCDomainSetRunlevel(vm, command)) < 0) {
+ if (flags != 0 &&
+ (flags & VIR_DOMAIN_REBOOT_INITCTL)) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("Container does not provide an initctl pipe"));
+ goto endjob;
+ }
}
- } else {
- rc = 0;
}
- if (rc == 0 &&
+ if (rc < 0 &&
(flags == 0 ||
(flags & VIR_DOMAIN_REBOOT_SIGNAL))) {
if (kill(priv->initpid, SIGHUP) < 0 &&
--
1.8.3.1
5 years, 7 months
[libvirt] [PATCH] conf: Remove unnecessary @ctxt check in virSecurityLabelDefsParseXML
by John Ferlan
Failure would have occurred before in callers other virXPath calls.
Found by Coverity due to commit 66a508d2 using VIR_XPATH_NODE_AUTORESTORE
to access @ctxt before the if condition.
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
src/conf/domain_conf.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index eb660f5764..dc57b23084 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8516,8 +8516,7 @@ virSecurityLabelDefsParseXML(virDomainDefPtr def,
virCapsHostPtr host = &caps->host;
VIR_AUTOFREE(xmlNodePtr *) list = NULL;
- /* Check args and save context */
- if (def == NULL || ctxt == NULL)
+ if (def == NULL)
return 0;
/* Allocate a security labels based on XML */
--
2.20.1
5 years, 7 months
[libvirt] [PATCH 0/7] util: Further tweaks to virstring
by Andrea Bolognani
Some changes where suggested during review of
https://www.redhat.com/archives/libvir-list/2019-March/msg00342.html
and some weren't :)
Andrea Bolognani (7):
util: Make virStringHasCaseSuffix() return bool
util: Make virStringStripSuffix() return bool
util: Make virStringMatchesNameSuffix() return bool
util: Tweak virStringHasSuffix()
util: Tweak virStringHasCaseSuffix()
util: Tweak virStringMatchesNameSuffix()
util: Tweak virStringMatchesNameSuffix() some more
src/util/virstring.c | 40 +++++++++++++++++++++++++---------------
src/util/virstring.h | 14 +++++++-------
tests/testutilsqemu.c | 2 +-
3 files changed, 33 insertions(+), 23 deletions(-)
--
2.20.1
5 years, 7 months
[libvirt] [PATCH] numa: warn if numa 'mem' option or default RAM splitting between nodes is used.
by Igor Mammedov
Ammend -numa option docs and print warnings if 'mem' option or default RAM
splitting between nodes is used. It's intended to discourage users from using
configuration that allows only to fake NUMA on guest side while leading
to reduced performance of the guest due to inability to properly configure
VM's RAM on the host.
In NUMA case, it's recommended to always explicitly configure guest RAM
using -numa node,memdev={backend-id} option.
Signed-off-by: Igor Mammedov <imammedo(a)redhat.com>
---
numa.c | 5 +++++
qemu-options.hx | 12 ++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/numa.c b/numa.c
index 3875e1e..c6c2a6f 100644
--- a/numa.c
+++ b/numa.c
@@ -121,6 +121,8 @@ static void parse_numa_node(MachineState *ms, NumaNodeOptions *node,
if (node->has_mem) {
numa_info[nodenr].node_mem = node->mem;
+ warn_report("Parameter -numa node,mem is obsolete,"
+ " use -numa node,memdev instead");
}
if (node->has_memdev) {
Object *o;
@@ -407,6 +409,9 @@ void numa_complete_configuration(MachineState *ms)
if (i == nb_numa_nodes) {
assert(mc->numa_auto_assign_ram);
mc->numa_auto_assign_ram(mc, numa_info, nb_numa_nodes, ram_size);
+ warn_report("Default splitting of RAM between nodes is obsolete,"
+ " Use '-numa node,memdev' to explictly define RAM"
+ " allocation per node");
}
numa_total = 0;
diff --git a/qemu-options.hx b/qemu-options.hx
index 1cf9aac..033e311 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -206,10 +206,14 @@ For example:
-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
@end example
-@samp{mem} assigns a given RAM amount to a node. @samp{memdev}
-assigns RAM from a given memory backend device to a node. If
-@samp{mem} and @samp{memdev} are omitted in all nodes, RAM is
-split equally between them.
+@samp{memdev} assigns RAM from a given memory backend device to a node.
+
+Legacy options/behaviour: @samp{mem} assigns a given RAM amount to a node.
+If @samp{mem} and @samp{memdev} are omitted in all nodes, RAM is split equally
+between them. Option @samp{mem} and default RAM splitting are obsolete as they
+do not provide means to manage RAM on host side and only allow QEMU to fake
+NUMA support which in practice could degrade VM performance.
+It's advised to always explicitly configure NUMA RAM using @samp{memdev} option.
@samp{mem} and @samp{memdev} are mutually exclusive. Furthermore,
if one node uses @samp{memdev}, all of them have to use it.
--
2.7.4
5 years, 7 months
[libvirt] [PATCH] cpu: Don't access invalid memory in virCPUx86Translate
by Michal Privoznik
Problem is that if there are no signatures for a CPU, then we
still allocate cpu->signatures (even though with size 0). Later,
we access cpu->signatures[0] if cpu->signatures is not NULL.
Invalid read of size 4
at 0x5F439D7: virCPUx86Translate (cpu_x86.c:2930)
by 0x5F3C239: virCPUTranslate (cpu.c:927)
by 0x57CE7A1: qemuProcessUpdateGuestCPU (qemu_process.c:5870)
...
Address 0xf752d40 is 0 bytes after a block of size 0 alloc'd
at 0x4C30EC6: calloc (vg_replace_malloc.c:711)
by 0x5DBDE4E: virAllocN (viralloc.c:190)
by 0x5F3E4FA: x86ModelCopySignatures (cpu_x86.c:990)
by 0x5F3E60F: x86ModelCopy (cpu_x86.c:1008)
by 0x5F3E7CB: x86ModelFromCPU (cpu_x86.c:1068)
by 0x5F4397E: virCPUx86Translate (cpu_x86.c:2922)
by 0x5F3C239: virCPUTranslate (cpu.c:927)
by 0x57CE7A1: qemuProcessUpdateGuestCPU (qemu_process.c:5870)
...
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/cpu/cpu_x86.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index 92941d1287..c8697819ab 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -987,6 +987,9 @@ x86ModelCopySignatures(virCPUx86ModelPtr dst,
{
size_t i;
+ if (src->nsignatures == 0)
+ return 0;
+
if (VIR_ALLOC_N(dst->signatures, src->nsignatures) < 0)
return -1;
@@ -2926,7 +2929,7 @@ virCPUx86Translate(virCPUDefPtr cpu,
virCPUx86DataAddCPUIDInt(&model->data, &model->vendor->cpuid) < 0)
goto cleanup;
- if (model->signatures &&
+ if (model->nsignatures &&
x86DataAddSignature(&model->data, model->signatures[0]) < 0)
goto cleanup;
--
2.19.2
5 years, 7 months
[libvirt] [PATCH 0/2] ui: support for authorization control on TLS connections
by Daniel P. Berrangé
This series provides the VNC parts of the authorization control series
previously posted as:
v1: https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg04482.html
v2: https://lists.gnu.org/archive/html/qemu-devel/2018-06/msg05727.html
v3: https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg01639.html
v4: https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg04319.html
The core authz framework is now merged & these patches have all had
positive review. Thus these VNC parts are ready to go into the VNC
maintainer's tree, should the maintainer consider them acceptable.
Note the 2nd patch is modifying the HMP, but I considered it part
of ui/vnc, since that's the only bit of QEMU which ever used these
HMP commands, and it has a dependancy on the first patch merging
first.
Daniel P. Berrangé (2):
vnc: allow specifying a custom authorization object name
monitor: deprecate acl_show, acl_reset, acl_policy, acl_add,
acl_remove
monitor.c | 23 ++++++++++++++++++
qemu-deprecated.texi | 11 +++++++++
qemu-options.hx | 35 ++++++++++++++++++--------
ui/vnc.c | 58 +++++++++++++++++++++++++++++++++++++-------
4 files changed, 108 insertions(+), 19 deletions(-)
--
2.20.1
5 years, 7 months
[libvirt] [PATCH 0/8] qemu: separate out deprecated capabilities
by Ján Tomko
Ján Tomko (8):
DO NOT PUSH: allow skipping selected lines in group-qemu-caps.pl
Introduce virQEMUCapsDeprecated array
Split out virQEMUCapsSetFromNodes
Use virQEMUCapsSetFromNodes where possible
qemustatusxml2xmltests: remove deprecated qemu capabilities
virQEMUCapsSetFromNodes: Skip setting deprecated flags
Delete deprecated qemu capabilities from the enum
DO NOT PUSH: fix capabilities grouping
src/qemu/qemu_capabilities.c | 452 +++++++++---------
src/qemu/qemu_capabilities.h | 305 ++++--------
src/qemu/qemu_domain.c | 16 +-
tests/group-qemu-caps.pl | 21 +
tests/qemucaps2xmltest.c | 17 +-
.../blockjob-mirror-in.xml | 1 -
.../disk-secinfo-upgrade-out.xml | 51 --
.../migration-in-params-in.xml | 53 --
.../migration-out-nbd-out.xml | 51 --
.../migration-out-nbd-tls-in.xml | 51 --
.../migration-out-params-in.xml | 53 --
tests/qemustatusxml2xmldata/modern-in.xml | 51 --
.../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 -
13 files changed, 339 insertions(+), 784 deletions(-)
--
2.19.2
5 years, 7 months