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 | 123 +++++++++++++----- 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, 234 insertions(+), 72 deletions(-) diff --git a/configure.ac b/configure.ac index c9cdd7b926..31f08351be 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 bf0675e65f..624c6b2cd7 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 646a51b748..b804a7074b 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 e2ed1150fc..f6f8b8ca88 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; + + if (VIR_ALLOC_N(def->numatune.memory.nodemask, + nodemasklen) < 0) { + virReportOOMError(); + 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; + } } - - /* "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; - } - - 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; - } - 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 6da22f4651..0ab3b814fa 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 1f55f5d3fd..d58082a2b5 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 ef311d17de..56cb531d81 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 29f60be551..0a4b1794e9 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 f77d6b0a08..27cf41d7d8 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 1a27773ab4..93c9f39b18 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 7de7245c92..60e853c1a0 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 e4945e9a40..3269793f01 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 e4945e9a40..3269793f01 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 91a973a14b..a94084c8fc 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 960442ae0a..a280842c56 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 626250c6a3..6028a2cf80 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 0eb026ebbd..812e5dde50 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 e3c2b1078b..c741f0d110 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 26790b1dfc..26fdf0dc2e 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 f27dc2eca1..98362a7365 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 233501f5ac..4de435b9d2 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 d9fa37c1e3..78a6b6a8a1 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 ec8e8c77da..1a6878c2b1 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 d1ea84184e..70f9e11a43 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 a792d9b149..31d5f58a69 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 cb345aa18a..c257292f9e 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 93255a9ea1..031f821e62 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 772ad173d8..c3a55cf862 100644 --- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml +++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml @@ -7,7 +7,7 @@ 219100 219100 - 1 + 1 hvm