From 0f8e7ae33ace269af3b4e781d1e1248046be1979 Mon Sep 17 00:00:00 2001 From: Osier Yang Date: Thu, 8 Mar 2012 21:36:26 +0800 Subject: [PATCH] qemu: Support numad numad is an user-level daemon that monitors NUMA topology and processes resource consumption to facilitate good NUMA resource alignment of applications/virtual machines to improve performance and minimize cost of remote memory latencies. It provides a pre-placement advisory interface, so significant processes can be pre-bound to nodes with sufficient available resources. More details: http://fedoraproject.org/wiki/Features/numad "numad -w ncpus:memory_amount" is the advisory interface numad provides currently. This patch add the support by introducing a new XML attribute for . e.g. 4 4 The returned advisory nodeset from numad will be printed in domain's dumped XML. e.g. 4 If placement is "auto", the number of vcpus and the current memory amount specified in domain XML will be used for numad command line (numad uses MB for memory amount): numad -w $num_of_vcpus:$current_memory_amount / 1024 The advisory nodeset returned from numad will be used to set domain process CPU affinity then. (e.g. qemuProcessInitCpuAffinity). If the user specifies both CPU affinity policy (e.g. (4) and placement == "auto" the specified CPU affinity will be overridden. Only QEMU/KVM drivers support it now. See docs update in patch for more details. --- configure.ac | 8 ++ docs/formatdomain.html.in | 17 ++- docs/schemas/domaincommon.rng | 8 ++ src/conf/domain_conf.c | 119 +++++++++++++----- src/conf/domain_conf.h | 10 ++ src/libvirt_private.syms | 2 + src/qemu/qemu_process.c | 96 ++++++++++++-- .../disk_snapshot.xml | 2 +- .../domainsnapshotxml2xmlout/full_domain.xml | 2 +- tests/domainsnapshotxml2xmlout/metadata.xml | 2 +- .../qemuxml2argv-channel-guestfwd.xml | 2 +- .../qemuxml2argv-channel-spicevmc-old.xml | 2 +- .../qemuxml2argv-channel-spicevmc.xml | 2 +- .../qemuxml2argv-channel-virtio-auto.xml | 2 +- .../qemuxml2argv-channel-virtio.xml | 2 +- .../qemuxml2argv-console-virtio-many.xml | 2 +- .../qemuxml2argv-console-virtio.xml | 2 +- .../qemuxml2argv-metadata.xml | 2 +- .../qemuxml2argvdata/qemuxml2argv-minimal.xml | 2 +- ...emuxml2argv-seclabel-dynamic-baselabel.xml | 2 +- ...qemuxml2argv-seclabel-dynamic-override.xml | 2 +- .../qemuxml2argv-seclabel-dynamic.xml | 2 +- .../qemuxml2argv-seclabel-none.xml | 2 +- .../qemuxml2argv-seclabel-static-relabel.xml | 2 +- .../qemuxml2argv-seclabel-static.xml | 2 +- .../qemuxml2xmlout-channel-virtio-auto.xml | 2 +- .../qemuxml2xmlout-console-virtio.xml | 2 +- .../qemuxml2xmlout-metadata.xml | 2 +- 28 files changed, 232 insertions(+), 70 deletions(-) diff --git a/configure.ac b/configure.ac index c9cdd7b92..31f08351b 100644 --- a/configure.ac +++ b/configure.ac @@ -1445,6 +1445,14 @@ AM_CONDITIONAL([HAVE_NUMACTL], [test "$with_numactl" != "no"]) AC_SUBST([NUMACTL_CFLAGS]) AC_SUBST([NUMACTL_LIBS]) +dnl Do we have numad? +if test "$with_qemu" = "yes"; then + AC_PATH_PROG([NUMAD], [numad], [], [/bin:/usr/bin:/usr/local/bin:$PATH]) + + if test -n "$NUMAD"; then + AC_DEFINE_UNQUOTED([NUMAD],["$NUMAD"], [Location or name of the numad program]) + fi +fi dnl pcap lib LIBPCAP_CONFIG="pcap-config" diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index bf0675e65..624c6b2cd 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -318,7 +318,7 @@
 <domain>
   ...
-  <vcpu cpuset="1-4,^3,6" current="1">2</vcpu>
+  <vcpu placement='static' cpuset="1-4,^3,6" current="1">2</vcpu>
   ...
 </domain>
 
@@ -336,7 +336,18 @@ be excluded from a previous range. Since 0.8.5, the optional attribute current can be used to specify whether fewer than the maximum number of - virtual CPUs should be enabled. + virtual CPUs should be enabled. Since + 0.9.11 (QEMU and KVM only), the optional attribute + placement can be used to indicate the CPU placement + mode for domain process, its value can be either "static" or + "auto", defaults to "static" if cpuset is specified, + "auto" indicates the domain process will be pinned to the advisory + nodeset from querying numad, and the value of attribute + cpuset will be overridden by the advisory nodeset + from numad if it's specified. If both cpuset and + placement are not specified, or if placement + is "static", but no cpuset is specified, the domain + process will be pinned to all the available physical CPUs. @@ -544,7 +555,7 @@ Since 0.9.3
memory
- The optional memory element specify how to allocate memory + The optional memory element specifies how to allocate memory for the domain process on a NUMA host. It contains two attributes, attribute mode is either 'interleave', 'strict', or 'preferred', diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 646a51b74..b804a7074 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -487,6 +487,14 @@ + + + + static + auto + + + diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index e2ed1150f..f6f8b8ca8 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -624,6 +624,11 @@ VIR_ENUM_IMPL(virDomainStartupPolicy, VIR_DOMAIN_STARTUP_POLICY_LAST, "requisite", "optional"); +VIR_ENUM_IMPL(virDomainCpuPlacementMode, VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST, + "default", + "static", + "auto"); + #define virDomainReportError(code, ...) \ virReportErrorHelper(VIR_FROM_DOMAIN, code, __FILE__, \ __FUNCTION__, __LINE__, __VA_ARGS__) @@ -7497,7 +7502,6 @@ error: goto cleanup; } - static int virDomainDefMaybeAddController(virDomainDefPtr def, int type, int idx) @@ -7611,6 +7615,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, bool uuid_generated = false; virBitmapPtr bootMap = NULL; unsigned long bootMapSize = 0; + xmlNodePtr cur; if (VIR_ALLOC(def) < 0) { virReportOOMError(); @@ -7839,6 +7844,22 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, VIR_FREE(tmp); } + tmp = virXPathString("string(./vcpu[1]/@placement)", ctxt); + if (tmp) { + if ((def->placement_mode = + virDomainCpuPlacementModeTypeFromString(tmp)) < 0) { + virDomainReportError(VIR_ERR_XML_ERROR, + _("Unsupported CPU placement mode '%s'"), + tmp); + VIR_FREE(tmp); + goto error; + } + VIR_FREE(tmp); + } else { + if (def->cpumasklen) + def->placement_mode = VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC; + } + /* Extract cpu tunables. */ if (virXPathULong("string(./cputune/shares[1])", ctxt, &def->cputune.shares) < 0) @@ -7886,47 +7907,74 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, VIR_FREE(nodes); /* Extract numatune if exists. */ - if ((n = virXPathNodeSet("./numatune", ctxt, NULL)) < 0) { + if ((n = virXPathNodeSet("./numatune", ctxt, &nodes)) < 0) { virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("cannot extract numatune nodes")); goto error; } + if (n > 1) { + virDomainReportError(VIR_ERR_XML_ERROR, "%s", + _("only one numatune is supported")); + VIR_FREE(nodes); + goto error; + } + if (n) { - tmp = virXPathString("string(./numatune/memory/@nodeset)", ctxt); - if (tmp) { - char *set = tmp; - int nodemasklen = VIR_DOMAIN_CPUMASK_LEN; + cur = nodes[0]->children; + while (cur != NULL) { + if (cur->type == XML_ELEMENT_NODE) { + if ((xmlStrEqual(cur->name, BAD_CAST "memory"))) { + tmp = virXMLPropString(cur, "nodeset"); - if (VIR_ALLOC_N(def->numatune.memory.nodemask, nodemasklen) < 0) { - goto no_memory; - } + if (tmp) { + char *set = tmp; + int nodemasklen = VIR_DOMAIN_CPUMASK_LEN; - /* "nodeset" leads same syntax with "cpuset". */ - if (virDomainCpuSetParse(set, 0, def->numatune.memory.nodemask, - nodemasklen) < 0) - goto error; - VIR_FREE(tmp); - } else { - virDomainReportError(VIR_ERR_INTERNAL_ERROR, - "%s", _("nodeset for NUMA memory tuning must be set")); - goto error; - } + if (VIR_ALLOC_N(def->numatune.memory.nodemask, + nodemasklen) < 0) { + virReportOOMError(); + goto error; + } - tmp = virXPathString("string(./numatune/memory/@mode)", ctxt); - if (tmp) { - if ((def->numatune.memory.mode = - virDomainNumatuneMemModeTypeFromString(tmp)) < 0) { - virDomainReportError(VIR_ERR_INTERNAL_ERROR, - _("Unsupported NUMA memory tuning mode '%s'"), - tmp); - goto error; + /* "nodeset" leads same syntax with "cpuset". */ + if (virDomainCpuSetParse(set, 0, + def->numatune.memory.nodemask, + nodemasklen) < 0) + goto error; + VIR_FREE(tmp); + } else { + virDomainReportError(VIR_ERR_XML_ERROR, "%s", + _("nodeset for NUMA memory " + "tuning must be set")); + goto error; + } + + tmp = virXMLPropString(cur, "mode"); + if (tmp) { + if ((def->numatune.memory.mode = + virDomainNumatuneMemModeTypeFromString(tmp)) < 0) { + virDomainReportError(VIR_ERR_XML_ERROR, + _("Unsupported NUMA memory " + "tuning mode '%s'"), + tmp); + goto error; + } + VIR_FREE(tmp); + } else { + def->numatune.memory.mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; + } + } else { + virDomainReportError(VIR_ERR_XML_ERROR, + _("unsupported XML element %s"), + (const char *)cur->name); + goto error; + } } - VIR_FREE(tmp); - } else { - def->numatune.memory.mode = VIR_DOMAIN_NUMATUNE_MEM_STRICT; + cur = cur->next; } } + VIR_FREE(nodes); n = virXPathNodeSet("./features/*", ctxt, &nodes); if (n < 0) @@ -12214,6 +12262,9 @@ virDomainDefFormatInternal(virDomainDefPtr def, allones = 0; virBufferAddLit(buf, " placement_mode) + virBufferAsprintf(buf, " placement='%s'", + virDomainCpuPlacementModeTypeToString(def->placement_mode)); if (!allones) { char *cpumask = NULL; if ((cpumask = @@ -12265,22 +12316,24 @@ virDomainDefFormatInternal(virDomainDefPtr def, virBufferAddLit(buf, " \n"); if (def->numatune.memory.nodemask) { + virBufferAddLit(buf, " \n"); const char *mode; char *nodemask = NULL; - virBufferAddLit(buf, " \n"); nodemask = virDomainCpuSetFormat(def->numatune.memory.nodemask, VIR_DOMAIN_CPUMASK_LEN); if (nodemask == NULL) { virDomainReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("failed to format nodeset for NUMA memory tuning")); + _("failed to format nodeset for " + "NUMA memory tuning")); goto cleanup; } mode = virDomainNumatuneMemModeTypeToString(def->numatune.memory.mode); virBufferAsprintf(buf, " \n", - mode, nodemask); + mode, nodemask); VIR_FREE(nodemask); + virBufferAddLit(buf, " \n"); } diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6da22f465..0ab3b814f 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1394,6 +1394,14 @@ enum virDomainTimerModeType { VIR_DOMAIN_TIMER_MODE_LAST, }; +enum virDomainCpuPlacementMode { + VIR_DOMAIN_CPU_PLACEMENT_MODE_DEFAULT = 0, + VIR_DOMAIN_CPU_PLACEMENT_MODE_STATIC, + VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO, + + VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST, +}; + typedef struct _virDomainTimerCatchupDef virDomainTimerCatchupDef; typedef virDomainTimerCatchupDef *virDomainTimerCatchupDefPtr; struct _virDomainTimerCatchupDef { @@ -1520,6 +1528,7 @@ struct _virDomainDef { } mem; unsigned short vcpus; unsigned short maxvcpus; + int placement_mode; int cpumasklen; char *cpumask; @@ -2161,6 +2170,7 @@ VIR_ENUM_DECL(virDomainTimerName) VIR_ENUM_DECL(virDomainTimerTrack) VIR_ENUM_DECL(virDomainTimerTickpolicy) VIR_ENUM_DECL(virDomainTimerMode) +VIR_ENUM_DECL(virDomainCpuPlacementMode) VIR_ENUM_DECL(virDomainStartupPolicy) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 1f55f5d3f..d58082a2b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -271,6 +271,8 @@ virDomainControllerModelSCSITypeToString; virDomainControllerModelUSBTypeFromString; virDomainControllerModelUSBTypeToString; virDomainControllerTypeToString; +virDomainCpuPlacementTypeFromString; +virDomainCpuPlacementTypeToString; virDomainCpuSetFormat; virDomainCpuSetParse; virDomainDefAddImplicitControllers; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index ef311d17d..56cb531d8 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1633,11 +1633,47 @@ qemuProcessInitNumaMemoryPolicy(virDomainObjPtr vm) } #endif +#if defined(NUMAD) +static char * +qemuGetNumadAdvice(virDomainDefPtr def) +{ + virCommandPtr cmd = NULL; + char *args = NULL; + char *output = NULL; + + if (virAsprintf(&args, "%d:%lu", def->vcpus, def->mem.cur_balloon) < 0) { + virReportOOMError(); + goto out; + } + cmd = virCommandNewArgList(NUMAD, "-w", args, NULL); + + virCommandSetOutputBuffer(cmd, &output); + + if (virCommandRun(cmd, NULL) < 0) + qemuReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Failed to query numad for the advisory nodeset")); + +out: + VIR_FREE(args); + virCommandFree(cmd); + return output; +} +#else +static char * +qemuGetNumadAdvice(virDomainDefPtr def ATTRIBUTE_UNUSED) +{ + qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("numad is not available on this host")); + return NULL; +} +#endif + /* * To be run between fork/exec of QEMU only */ static int -qemuProcessInitCpuAffinity(virDomainObjPtr vm) +qemuProcessInitCpuAffinity(struct qemud_driver *driver, + virDomainObjPtr vm) { int i, hostcpus, maxcpu = QEMUD_CPUMASK_LEN; virNodeInfo nodeinfo; @@ -1661,19 +1697,53 @@ qemuProcessInitCpuAffinity(virDomainObjPtr vm) return -1; } - if (vm->def->cpumask) { - /* XXX why don't we keep 'cpumask' in the libvirt cpumap - * format to start with ?!?! */ - for (i = 0 ; i < maxcpu && i < vm->def->cpumasklen ; i++) - if (vm->def->cpumask[i]) + if (vm->def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO) { + char *tmp_cpumask = NULL; + char *nodeset = NULL; + + nodeset = qemuGetNumadAdvice(vm->def); + if (!nodeset) + return -1; + + if (VIR_ALLOC_N(tmp_cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0) { + virReportOOMError(); + return -1; + } + + if (virDomainCpuSetParse(nodeset, 0, tmp_cpumask, + VIR_DOMAIN_CPUMASK_LEN) < 0) { + VIR_FREE(tmp_cpumask); + VIR_FREE(nodeset); + return -1; + } + + for (i = 0; i < maxcpu && i < VIR_DOMAIN_CPUMASK_LEN; i++) { + if (tmp_cpumask[i]) VIR_USE_CPU(cpumap, i); + } + + VIR_FREE(vm->def->cpumask); + vm->def->cpumask = tmp_cpumask; + if (virDomainSaveStatus(driver->caps, driver->stateDir, vm) < 0) { + VIR_WARN("Unable to save status on vm %s after state change", + vm->def->name); + } + VIR_FREE(nodeset); } else { - /* You may think this is redundant, but we can't assume libvirtd - * itself is running on all pCPUs, so we need to explicitly set - * the spawned QEMU instance to all pCPUs if no map is given in - * its config file */ - for (i = 0 ; i < maxcpu ; i++) - VIR_USE_CPU(cpumap, i); + if (vm->def->cpumask) { + /* XXX why don't we keep 'cpumask' in the libvirt cpumap + * format to start with ?!?! */ + for (i = 0 ; i < maxcpu && i < vm->def->cpumasklen ; i++) + if (vm->def->cpumask[i]) + VIR_USE_CPU(cpumap, i); + } else { + /* You may think this is redundant, but we can't assume libvirtd + * itself is running on all pCPUs, so we need to explicitly set + * the spawned QEMU instance to all pCPUs if no map is given in + * its config file */ + for (i = 0 ; i < maxcpu ; i++) + VIR_USE_CPU(cpumap, i); + } } /* We are pressuming we are running between fork/exec of QEMU @@ -2404,7 +2474,7 @@ static int qemuProcessHook(void *data) /* This must be done after cgroup placement to avoid resetting CPU * affinity */ VIR_DEBUG("Setup CPU affinity"); - if (qemuProcessInitCpuAffinity(h->vm) < 0) + if (qemuProcessInitCpuAffinity(h->driver, h->vm) < 0) goto cleanup; if (qemuProcessInitNumaMemoryPolicy(h->vm) < 0) diff --git a/tests/domainsnapshotxml2xmlout/disk_snapshot.xml b/tests/domainsnapshotxml2xmlout/disk_snapshot.xml index 29f60be55..0a4b1794e 100644 --- a/tests/domainsnapshotxml2xmlout/disk_snapshot.xml +++ b/tests/domainsnapshotxml2xmlout/disk_snapshot.xml @@ -28,7 +28,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/domainsnapshotxml2xmlout/full_domain.xml b/tests/domainsnapshotxml2xmlout/full_domain.xml index f77d6b0a0..27cf41d7d 100644 --- a/tests/domainsnapshotxml2xmlout/full_domain.xml +++ b/tests/domainsnapshotxml2xmlout/full_domain.xml @@ -11,7 +11,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/domainsnapshotxml2xmlout/metadata.xml b/tests/domainsnapshotxml2xmlout/metadata.xml index 1a27773ab..93c9f39b1 100644 --- a/tests/domainsnapshotxml2xmlout/metadata.xml +++ b/tests/domainsnapshotxml2xmlout/metadata.xml @@ -15,7 +15,7 @@ 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-guestfwd.xml b/tests/qemuxml2argvdata/qemuxml2argv-channel-guestfwd.xml index 7de7245c9..60e853c1a 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-channel-guestfwd.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-guestfwd.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc-old.xml b/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc-old.xml index e4945e9a4..3269793f0 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc-old.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc-old.xml @@ -2,7 +2,7 @@ QEMUGuest1 c7a5fdbd-edaf-9455-926a-d65c16db1809 219136 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc.xml b/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc.xml index e4945e9a4..3269793f0 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-spicevmc.xml @@ -2,7 +2,7 @@ QEMUGuest1 c7a5fdbd-edaf-9455-926a-d65c16db1809 219136 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-auto.xml b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-auto.xml index 91a973a14..a94084c8f 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-auto.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio-auto.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio.xml b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio.xml index 960442ae0..a280842c5 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-channel-virtio.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-many.xml b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-many.xml index 626250c6a..6028a2cf8 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-many.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio-many.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio.xml b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio.xml index 0eb026ebb..812e5dde5 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-console-virtio.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-console-virtio.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-metadata.xml b/tests/qemuxml2argvdata/qemuxml2argv-metadata.xml index e3c2b1078..c741f0d11 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-metadata.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-metadata.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml b/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml index 26790b1df..26fdf0dc2 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-minimal.xml @@ -8,7 +8,7 @@ 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-baselabel.xml b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-baselabel.xml index f27dc2eca..98362a736 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-baselabel.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-baselabel.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-override.xml b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-override.xml index 233501f5a..4de435b9d 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-override.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic-override.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic.xml b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic.xml index d9fa37c1e..78a6b6a8a 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-dynamic.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-none.xml b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-none.xml index ec8e8c77d..1a6878c2b 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-none.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-none.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static-relabel.xml b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static-relabel.xml index d1ea84184..70f9e11a4 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static-relabel.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static-relabel.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static.xml b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static.xml index a792d9b14..31d5f58a6 100644 --- a/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static.xml +++ b/tests/qemuxml2argvdata/qemuxml2argv-seclabel-static.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-channel-virtio-auto.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-channel-virtio-auto.xml index cb345aa18..c257292f9 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-channel-virtio-auto.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-channel-virtio-auto.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-console-virtio.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-console-virtio.xml index 93255a9ea..031f821e6 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-console-virtio.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-console-virtio.xml @@ -3,7 +3,7 @@ c7a5fdbd-edaf-9455-926a-d65c16db1809 219100 219100 - 1 + 1 hvm diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml index 772ad173d..c3a55cf86 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml @@ -7,7 +7,7 @@ 219100 219100 - 1 + 1 hvm -- 2.39.5