Devel
Threads by month
- ----- 2026 -----
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
January 2016
- 72 participants
- 262 discussions
[libvirt] [PATCH] migration: add option to set target ndb server port
by Nikolay Shirokovskiy 12 Feb '16
by Nikolay Shirokovskiy 12 Feb '16
12 Feb '16
Current libvirt + qemu pair lacks secure migrations in case of
VMs with non-shared disks. The only option to migrate securely
natively is to use tunneled mode and some kind of secure
destination URI. But tunelled mode does not support non-shared
disks.
The other way to make migration secure is to organize a tunnel
by external means. This is possible in case of shared disks
migration thru use of proper combination of destination URI,
migration URI and VIR_MIGRATE_PARAM_LISTEN_ADDRESS migration
param. But again this is not possible in case of non shared disks
migration as we have no option to control target nbd server port.
But fixing this much more simplier that supporting non-shared
disks in tunneled mode.
So this patch adds option to set target ndb port.
Finally all qemu migration connections will be secured AFAIK but
even in this case this patch could be convinient if one wants
all migration traffic be put in a single connection.
---
include/libvirt/libvirt-domain.h | 10 +++
src/qemu/qemu_driver.c | 25 ++++---
src/qemu/qemu_migration.c | 138 +++++++++++++++++++++++++++------------
src/qemu/qemu_migration.h | 3 +
tools/virsh-domain.c | 12 ++++
tools/virsh.pod | 5 +-
6 files changed, 141 insertions(+), 52 deletions(-)
diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index d26faa5..e577f26 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -757,6 +757,16 @@ typedef enum {
*/
# define VIR_MIGRATE_PARAM_MIGRATE_DISKS "migrate_disks"
+/**
+ * VIR_MIGRATE_PARAM_NBD_PORT:
+ *
+ * virDomainMigrate* params field: port that destination nbd server should use
+ * for incoming disks migration. Type is VIR_TYPED_PARAM_INT. If set to 0 or
+ * omitted, libvirt will choose a suitable default. At the moment this is only
+ * supported by the QEMU driver.
+ */
+# define VIR_MIGRATE_PARAM_NBD_PORT "nbd_port"
+
/* Domain migration. */
virDomainPtr virDomainMigrate (virDomainPtr domain, virConnectPtr dconn,
unsigned long flags, const char *dname,
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 8ccf68b..4d00ba4 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12082,7 +12082,7 @@ qemuDomainMigratePrepare2(virConnectPtr dconn,
ret = qemuMigrationPrepareDirect(driver, dconn,
NULL, 0, NULL, NULL, /* No cookies */
uri_in, uri_out,
- &def, origname, NULL, 0, NULL, flags);
+ &def, origname, NULL, 0, NULL, 0, flags);
cleanup:
VIR_FREE(origname);
@@ -12135,7 +12135,7 @@ qemuDomainMigratePerform(virDomainPtr dom,
* Consume any cookie we were able to decode though
*/
ret = qemuMigrationPerform(driver, dom->conn, vm,
- NULL, dconnuri, uri, NULL, NULL, 0, NULL,
+ NULL, dconnuri, uri, NULL, NULL, 0, NULL, 0,
cookie, cookielen,
NULL, NULL, /* No output cookies in v2 */
flags, dname, resource, false);
@@ -12308,7 +12308,7 @@ qemuDomainMigratePrepare3(virConnectPtr dconn,
cookiein, cookieinlen,
cookieout, cookieoutlen,
uri_in, uri_out,
- &def, origname, NULL, 0, NULL, flags);
+ &def, origname, NULL, 0, NULL, 0, flags);
cleanup:
VIR_FREE(origname);
@@ -12334,6 +12334,7 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
const char *dname = NULL;
const char *uri_in = NULL;
const char *listenAddress = cfg->migrationAddress;
+ int nbdPort = 0;
int nmigrate_disks;
const char **migrate_disks = NULL;
char *origname = NULL;
@@ -12354,7 +12355,10 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
&uri_in) < 0 ||
virTypedParamsGetString(params, nparams,
VIR_MIGRATE_PARAM_LISTEN_ADDRESS,
- &listenAddress) < 0)
+ &listenAddress) < 0 ||
+ virTypedParamsGetInt(params, nparams,
+ VIR_MIGRATE_PARAM_NBD_PORT,
+ &nbdPort) < 0)
goto cleanup;
nmigrate_disks = virTypedParamsGetStringList(params, nparams,
@@ -12385,7 +12389,8 @@ qemuDomainMigratePrepare3Params(virConnectPtr dconn,
cookieout, cookieoutlen,
uri_in, uri_out,
&def, origname, listenAddress,
- nmigrate_disks, migrate_disks, flags);
+ nmigrate_disks, migrate_disks,
+ nbdPort, flags);
cleanup:
VIR_FREE(migrate_disks);
@@ -12519,7 +12524,7 @@ qemuDomainMigratePerform3(virDomainPtr dom,
}
return qemuMigrationPerform(driver, dom->conn, vm, xmlin,
- dconnuri, uri, NULL, NULL, 0, NULL,
+ dconnuri, uri, NULL, NULL, 0, NULL, 0,
cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, dname, resource, true);
@@ -12546,6 +12551,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
int nmigrate_disks;
const char **migrate_disks = NULL;
unsigned long long bandwidth = 0;
+ int nbdPort;
int ret = -1;
virCheckFlags(QEMU_MIGRATION_FLAGS, -1);
@@ -12569,7 +12575,10 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
&graphicsuri) < 0 ||
virTypedParamsGetString(params, nparams,
VIR_MIGRATE_PARAM_LISTEN_ADDRESS,
- &listenAddress) < 0)
+ &listenAddress) < 0 ||
+ virTypedParamsGetInt(params, nparams,
+ VIR_MIGRATE_PARAM_NBD_PORT,
+ &nbdPort) < 0)
goto cleanup;
nmigrate_disks = virTypedParamsGetStringList(params, nparams,
@@ -12589,7 +12598,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom,
ret = qemuMigrationPerform(driver, dom->conn, vm, dom_xml,
dconnuri, uri, graphicsuri, listenAddress,
- nmigrate_disks, migrate_disks,
+ nmigrate_disks, migrate_disks, nbdPort,
cookiein, cookieinlen, cookieout, cookieoutlen,
flags, dname, bandwidth, true);
cleanup:
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 51e7125..362da0f 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1709,7 +1709,8 @@ qemuMigrationStartNBDServer(virQEMUDriverPtr driver,
virDomainObjPtr vm,
const char *listenAddr,
size_t nmigrate_disks,
- const char **migrate_disks)
+ const char **migrate_disks,
+ int nbdPort)
{
int ret = -1;
qemuDomainObjPrivatePtr priv = vm->privateData;
@@ -1717,6 +1718,12 @@ qemuMigrationStartNBDServer(virQEMUDriverPtr driver,
char *diskAlias = NULL;
size_t i;
+ if (nbdPort < 0 || nbdPort > USHRT_MAX) {
+ virReportError(VIR_ERR_INVALID_ARG, "%s",
+ _("nbd port must be in range 0-65535"));
+ return -1;
+ }
+
for (i = 0; i < vm->def->ndisks; i++) {
virDomainDiskDefPtr disk = vm->def->disks[i];
@@ -1733,10 +1740,15 @@ qemuMigrationStartNBDServer(virQEMUDriverPtr driver,
QEMU_ASYNC_JOB_MIGRATION_IN) < 0)
goto cleanup;
- if (!port &&
- ((virPortAllocatorAcquire(driver->migrationPorts, &port) < 0) ||
- (qemuMonitorNBDServerStart(priv->mon, listenAddr, port) < 0))) {
- goto exit_monitor;
+ if (port == 0) {
+ if (nbdPort)
+ port = nbdPort;
+ else
+ if (virPortAllocatorAcquire(driver->migrationPorts, &port) < 0)
+ goto exit_monitor;
+
+ if (qemuMonitorNBDServerStart(priv->mon, listenAddr, port) < 0)
+ goto exit_monitor;
}
if (qemuMonitorNBDServerAdd(priv->mon, diskAlias, true) < 0)
@@ -1750,7 +1762,8 @@ qemuMigrationStartNBDServer(virQEMUDriverPtr driver,
cleanup:
VIR_FREE(diskAlias);
- if (ret < 0)
+ // second clause means port is autoselected
+ if (ret < 0 && nbdPort == 0)
virPortAllocatorRelease(driver->migrationPorts, port);
return ret;
@@ -2062,6 +2075,7 @@ qemuMigrationDriveMirror(virQEMUDriverPtr driver,
virDomainObjPtr vm,
qemuMigrationCookiePtr mig,
const char *host,
+ int nbdPort,
unsigned long speed,
unsigned int *migrate_flags,
size_t nmigrate_disks,
@@ -2081,6 +2095,12 @@ qemuMigrationDriveMirror(virQEMUDriverPtr driver,
VIR_DEBUG("Starting drive mirrors for domain %s", vm->def->name);
+ if (nbdPort != mig->nbd->port) {
+ virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
+ _("target qemu does not support setting nbd port"));
+ return -1;
+ }
+
/* steal NBD port and thus prevent its propagation back to destination */
port = mig->nbd->port;
mig->nbd->port = 0;
@@ -3402,6 +3422,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
unsigned long flags)
{
virDomainObjPtr vm = NULL;
@@ -3601,7 +3622,8 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) &&
virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) {
if (qemuMigrationStartNBDServer(driver, vm, incoming->address,
- nmigrate_disks, migrate_disks) < 0) {
+ nmigrate_disks, migrate_disks,
+ nbdPort) < 0) {
goto stopjob;
}
cookieFlags |= QEMU_MIGRATION_COOKIE_NBD;
@@ -3653,6 +3675,10 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
if (autoPort)
priv->migrationPort = port;
+ // in this case port is autoselected and we don't need to manage it anymore
+ // after cookie is baked
+ if (nbdPort != 0)
+ priv->nbdPort = 0;
ret = 0;
cleanup:
@@ -3664,7 +3690,10 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
/* priv is set right after vm is added to the list of domains
* and there is no 'goto cleanup;' in the middle of those */
VIR_FREE(priv->origname);
- virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort);
+ // release if port is auto selected which is not the case if
+ // it is given in parameters
+ if (nbdPort == 0)
+ virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort);
priv->nbdPort = 0;
qemuDomainRemoveInactive(driver, vm);
}
@@ -3721,7 +3750,7 @@ qemuMigrationPrepareTunnel(virQEMUDriverPtr driver,
ret = qemuMigrationPrepareAny(driver, dconn, cookiein, cookieinlen,
cookieout, cookieoutlen, def, origname,
- st, NULL, 0, false, NULL, 0, NULL, flags);
+ st, NULL, 0, false, NULL, 0, NULL, 0, flags);
return ret;
}
@@ -3763,6 +3792,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
unsigned long flags)
{
unsigned short port = 0;
@@ -3776,11 +3806,11 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
VIR_DEBUG("driver=%p, dconn=%p, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, uri_in=%s, uri_out=%p, "
"def=%p, origname=%s, listenAddress=%s, "
- "nmigrate_disks=%zu, migrate_disks=%p, flags=%lx",
+ "nmigrate_disks=%zu, migrate_disks=%p, nbdPort=%d, flags=%lx",
driver, dconn, NULLSTR(cookiein), cookieinlen,
cookieout, cookieoutlen, NULLSTR(uri_in), uri_out,
*def, origname, NULLSTR(listenAddress),
- nmigrate_disks, migrate_disks, flags);
+ nmigrate_disks, migrate_disks, nbdPort, flags);
*uri_out = NULL;
@@ -3885,7 +3915,7 @@ qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
cookieout, cookieoutlen, def, origname,
NULL, uri ? uri->scheme : "tcp",
port, autoPort, listenAddress,
- nmigrate_disks, migrate_disks, flags);
+ nmigrate_disks, migrate_disks, nbdPort, flags);
cleanup:
virURIFree(uri);
VIR_FREE(hostname);
@@ -4365,7 +4395,8 @@ qemuMigrationRun(virQEMUDriverPtr driver,
virConnectPtr dconn,
const char *graphicsuri,
size_t nmigrate_disks,
- const char **migrate_disks)
+ const char **migrate_disks,
+ int nbdPort)
{
int ret = -1;
unsigned int migrate_flags = QEMU_MONITOR_MIGRATE_BACKGROUND;
@@ -4383,11 +4414,11 @@ qemuMigrationRun(virQEMUDriverPtr driver,
VIR_DEBUG("driver=%p, vm=%p, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
"spec=%p (dest=%d, fwd=%d), dconn=%p, graphicsuri=%s, "
- "nmigrate_disks=%zu, migrate_disks=%p",
+ "nmigrate_disks=%zu, migrate_disks=%p, nbdPort=%d",
driver, vm, NULLSTR(cookiein), cookieinlen,
cookieout, cookieoutlen, flags, resource,
spec, spec->destType, spec->fwdType, dconn,
- NULLSTR(graphicsuri), nmigrate_disks, migrate_disks);
+ NULLSTR(graphicsuri), nmigrate_disks, migrate_disks, nbdPort);
if (flags & VIR_MIGRATE_NON_SHARED_DISK) {
migrate_flags |= QEMU_MONITOR_MIGRATE_NON_SHARED_DISK;
@@ -4425,6 +4456,7 @@ qemuMigrationRun(virQEMUDriverPtr driver,
/* This will update migrate_flags on success */
if (qemuMigrationDriveMirror(driver, vm, mig,
spec->dest.host.name,
+ nbdPort,
migrate_speed,
&migrate_flags,
nmigrate_disks,
@@ -4661,7 +4693,8 @@ static int doNativeMigrate(virQEMUDriverPtr driver,
virConnectPtr dconn,
const char *graphicsuri,
size_t nmigrate_disks,
- const char **migrate_disks)
+ const char **migrate_disks,
+ int nbdPort)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
virURIPtr uribits = NULL;
@@ -4670,10 +4703,11 @@ static int doNativeMigrate(virQEMUDriverPtr driver,
VIR_DEBUG("driver=%p, vm=%p, uri=%s, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
- "graphicsuri=%s, nmigrate_disks=%zu migrate_disks=%p",
+ "graphicsuri=%s, nmigrate_disks=%zu, migrate_disks=%p, "
+ "nbdPort=%d",
driver, vm, uri, NULLSTR(cookiein), cookieinlen,
cookieout, cookieoutlen, flags, resource,
- NULLSTR(graphicsuri), nmigrate_disks, migrate_disks);
+ NULLSTR(graphicsuri), nmigrate_disks, migrate_disks, nbdPort);
if (!(uribits = qemuMigrationParseURI(uri, NULL)))
return -1;
@@ -4711,7 +4745,8 @@ static int doNativeMigrate(virQEMUDriverPtr driver,
ret = qemuMigrationRun(driver, vm, cookiein, cookieinlen, cookieout,
cookieoutlen, flags, resource, &spec, dconn,
- graphicsuri, nmigrate_disks, migrate_disks);
+ graphicsuri, nmigrate_disks, migrate_disks,
+ nbdPort);
if (spec.destType == MIGRATION_DEST_FD)
VIR_FORCE_CLOSE(spec.dest.fd.qemu);
@@ -4735,7 +4770,8 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
virConnectPtr dconn,
const char *graphicsuri,
size_t nmigrate_disks,
- const char **migrate_disks)
+ const char **migrate_disks,
+ int nbdPort)
{
virNetSocketPtr sock = NULL;
int ret = -1;
@@ -4745,10 +4781,12 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
VIR_DEBUG("driver=%p, vm=%p, st=%p, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
- "graphicsuri=%s, nmigrate_disks=%zu, migrate_disks=%p",
+ "graphicsuri=%s, nmigrate_disks=%zu, migrate_disks=%p, "
+ "nbdPort=%d",
driver, vm, st, NULLSTR(cookiein), cookieinlen,
cookieout, cookieoutlen, flags, resource,
- NULLSTR(graphicsuri), nmigrate_disks, migrate_disks);
+ NULLSTR(graphicsuri), nmigrate_disks, migrate_disks,
+ nbdPort);
spec.fwdType = MIGRATION_FWD_STREAM;
spec.fwd.stream = st;
@@ -4772,7 +4810,8 @@ static int doTunnelMigrate(virQEMUDriverPtr driver,
ret = qemuMigrationRun(driver, vm, cookiein, cookieinlen, cookieout,
cookieoutlen, flags, resource, &spec, dconn,
- graphicsuri, nmigrate_disks, migrate_disks);
+ graphicsuri, nmigrate_disks, migrate_disks,
+ nbdPort);
cleanup:
if (spec.destType == MIGRATION_DEST_FD) {
@@ -4883,12 +4922,12 @@ static int doPeer2PeerMigrate2(virQEMUDriverPtr driver,
ret = doTunnelMigrate(driver, vm, st,
NULL, 0, NULL, NULL,
flags, resource, dconn,
- NULL, 0, NULL);
+ NULL, 0, NULL, 0);
else
ret = doNativeMigrate(driver, vm, uri_out,
cookie, cookielen,
NULL, NULL, /* No out cookie with v2 migration */
- flags, resource, dconn, NULL, 0, NULL);
+ flags, resource, dconn, NULL, 0, NULL, 0);
/* Perform failed. Make sure Finish doesn't overwrite the error */
if (ret < 0)
@@ -4952,6 +4991,7 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
unsigned long long bandwidth,
bool useParams,
unsigned long flags)
@@ -4975,11 +5015,11 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver,
VIR_DEBUG("driver=%p, sconn=%p, dconn=%p, dconnuri=%s, vm=%p, xmlin=%s, "
"dname=%s, uri=%s, graphicsuri=%s, listenAddress=%s, "
- "nmigrate_disks=%zu, migrate_disks=%p, bandwidth=%llu, "
- "useParams=%d, flags=%lx",
+ "nmigrate_disks=%zu, migrate_disks=%p, nbdPort=%d, "
+ "bandwidth=%llu, useParams=%d, flags=%lx",
driver, sconn, dconn, NULLSTR(dconnuri), vm, NULLSTR(xmlin),
NULLSTR(dname), NULLSTR(uri), NULLSTR(graphicsuri),
- NULLSTR(listenAddress), nmigrate_disks, migrate_disks,
+ NULLSTR(listenAddress), nmigrate_disks, migrate_disks, nbdPort,
bandwidth, useParams, flags);
/* Unlike the virDomainMigrateVersion3 counterpart, we don't need
@@ -5029,6 +5069,11 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver,
VIR_MIGRATE_PARAM_MIGRATE_DISKS,
migrate_disks[i]) < 0)
goto cleanup;
+ if (nbdPort &&
+ virTypedParamsAddInt(¶ms, &nparams, &maxparams,
+ VIR_MIGRATE_PARAM_NBD_PORT,
+ nbdPort) < 0)
+ goto cleanup;
}
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED)
@@ -5114,13 +5159,13 @@ doPeer2PeerMigrate3(virQEMUDriverPtr driver,
cookiein, cookieinlen,
&cookieout, &cookieoutlen,
flags, bandwidth, dconn, graphicsuri,
- nmigrate_disks, migrate_disks);
+ nmigrate_disks, migrate_disks, nbdPort);
} else {
ret = doNativeMigrate(driver, vm, uri,
cookiein, cookieinlen,
&cookieout, &cookieoutlen,
flags, bandwidth, dconn, graphicsuri,
- nmigrate_disks, migrate_disks);
+ nmigrate_disks, migrate_disks, nbdPort);
}
/* Perform failed. Make sure Finish doesn't overwrite the error */
@@ -5295,6 +5340,7 @@ static int doPeer2PeerMigrate(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
unsigned long flags,
const char *dname,
unsigned long resource,
@@ -5310,10 +5356,12 @@ static int doPeer2PeerMigrate(virQEMUDriverPtr driver,
VIR_DEBUG("driver=%p, sconn=%p, vm=%p, xmlin=%s, dconnuri=%s, uri=%s, "
"graphicsuri=%s, listenAddress=%s, nmigrate_disks=%zu, "
- "migrate_disks=%p, flags=%lx, dname=%s, resource=%lu",
+ "migrate_disks=%p, nbdPort=%d, flags=%lx, dname=%s, "
+ "resource=%lu",
driver, sconn, vm, NULLSTR(xmlin), NULLSTR(dconnuri),
NULLSTR(uri), NULLSTR(graphicsuri), NULLSTR(listenAddress),
- nmigrate_disks, migrate_disks, flags, NULLSTR(dname), resource);
+ nmigrate_disks, migrate_disks, nbdPort, flags, NULLSTR(dname),
+ resource);
if (flags & VIR_MIGRATE_TUNNELLED && uri) {
virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
@@ -5408,8 +5456,8 @@ static int doPeer2PeerMigrate(virQEMUDriverPtr driver,
if (*v3proto) {
ret = doPeer2PeerMigrate3(driver, sconn, dconn, dconnuri, vm, xmlin,
dname, uri, graphicsuri, listenAddress,
- nmigrate_disks, migrate_disks, resource,
- useParams, flags);
+ nmigrate_disks, migrate_disks, nbdPort,
+ resource, useParams, flags);
} else {
ret = doPeer2PeerMigrate2(driver, sconn, dconn, vm,
dconnuri, flags, dname, resource);
@@ -5446,6 +5494,7 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
const char *cookiein,
int cookieinlen,
char **cookieout,
@@ -5481,13 +5530,13 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver,
if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
ret = doPeer2PeerMigrate(driver, conn, vm, xmlin,
dconnuri, uri, graphicsuri, listenAddress,
- nmigrate_disks, migrate_disks,
+ nmigrate_disks, migrate_disks, nbdPort,
flags, dname, resource, &v3proto);
} else {
qemuMigrationJobSetPhase(driver, vm, QEMU_MIGRATION_PHASE_PERFORM2);
ret = doNativeMigrate(driver, vm, uri, cookiein, cookieinlen,
cookieout, cookieoutlen,
- flags, resource, NULL, NULL, 0, NULL);
+ flags, resource, NULL, NULL, 0, NULL, 0);
}
if (ret < 0)
goto endjob;
@@ -5547,6 +5596,7 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver,
const char *graphicsuri,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
const char *cookiein,
int cookieinlen,
char **cookieout,
@@ -5572,7 +5622,7 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver,
ret = doNativeMigrate(driver, vm, uri, cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, resource, NULL, graphicsuri,
- nmigrate_disks, migrate_disks);
+ nmigrate_disks, migrate_disks, nbdPort);
if (ret < 0) {
if (qemuMigrationRestoreDomainState(conn, vm)) {
@@ -5614,6 +5664,7 @@ qemuMigrationPerform(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
const char *cookiein,
int cookieinlen,
char **cookieout,
@@ -5625,13 +5676,14 @@ qemuMigrationPerform(virQEMUDriverPtr driver,
{
VIR_DEBUG("driver=%p, conn=%p, vm=%p, xmlin=%s, dconnuri=%s, "
"uri=%s, graphicsuri=%s, listenAddress=%s, "
- "nmigrate_disks=%zu, migrate_disks=%p, "
+ "nmigrate_disks=%zu, migrate_disks=%p, nbdPort=%d, "
"cookiein=%s, cookieinlen=%d, cookieout=%p, cookieoutlen=%p, "
"flags=%lx, dname=%s, resource=%lu, v3proto=%d",
driver, conn, vm, NULLSTR(xmlin), NULLSTR(dconnuri),
NULLSTR(uri), NULLSTR(graphicsuri), NULLSTR(listenAddress),
- nmigrate_disks, migrate_disks, NULLSTR(cookiein), cookieinlen,
- cookieout, cookieoutlen, flags, NULLSTR(dname), resource, v3proto);
+ nmigrate_disks, migrate_disks, nbdPort,
+ NULLSTR(cookiein), cookieinlen, cookieout, cookieoutlen,
+ flags, NULLSTR(dname), resource, v3proto);
if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
if (cookieinlen) {
@@ -5642,7 +5694,7 @@ qemuMigrationPerform(virQEMUDriverPtr driver,
return qemuMigrationPerformJob(driver, conn, vm, xmlin, dconnuri, uri,
graphicsuri, listenAddress,
- nmigrate_disks, migrate_disks,
+ nmigrate_disks, migrate_disks, nbdPort,
cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, dname, resource, v3proto);
@@ -5656,14 +5708,14 @@ qemuMigrationPerform(virQEMUDriverPtr driver,
if (v3proto) {
return qemuMigrationPerformPhase(driver, conn, vm, uri,
graphicsuri,
- nmigrate_disks, migrate_disks,
+ nmigrate_disks, migrate_disks, nbdPort,
cookiein, cookieinlen,
cookieout, cookieoutlen,
flags, resource);
} else {
return qemuMigrationPerformJob(driver, conn, vm, xmlin, NULL,
uri, graphicsuri, listenAddress,
- nmigrate_disks, migrate_disks,
+ nmigrate_disks, migrate_disks, nbdPort,
cookiein, cookieinlen,
cookieout, cookieoutlen, flags,
dname, resource, v3proto);
diff --git a/src/qemu/qemu_migration.h b/src/qemu/qemu_migration.h
index 2445e13..2796361 100644
--- a/src/qemu/qemu_migration.h
+++ b/src/qemu/qemu_migration.h
@@ -51,6 +51,7 @@
VIR_MIGRATE_PARAM_BANDWIDTH, VIR_TYPED_PARAM_ULLONG, \
VIR_MIGRATE_PARAM_GRAPHICS_URI, VIR_TYPED_PARAM_STRING, \
VIR_MIGRATE_PARAM_LISTEN_ADDRESS, VIR_TYPED_PARAM_STRING, \
+ VIR_MIGRATE_PARAM_NBD_PORT, VIR_TYPED_PARAM_INT, \
VIR_MIGRATE_PARAM_MIGRATE_DISKS, VIR_TYPED_PARAM_STRING | \
VIR_TYPED_PARAM_MULTIPLE, \
NULL
@@ -134,6 +135,7 @@ int qemuMigrationPrepareDirect(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
unsigned long flags);
int qemuMigrationPerform(virQEMUDriverPtr driver,
@@ -146,6 +148,7 @@ int qemuMigrationPerform(virQEMUDriverPtr driver,
const char *listenAddress,
size_t nmigrate_disks,
const char **migrate_disks,
+ int nbdPort,
const char *cookiein,
int cookieinlen,
char **cookieout,
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index d239ba8..54c9fd0 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -9651,6 +9651,10 @@ static const vshCmdOptDef opts_migrate[] = {
.type = VSH_OT_STRING,
.help = N_("comma separated list of disks to be migrated")
},
+ {.name = "nbd-port",
+ .type = VSH_OT_INT,
+ .help = N_("port to use by target nbd server")
+ },
{.name = NULL}
};
@@ -9661,6 +9665,7 @@ doMigrate(void *opaque)
virDomainPtr dom = NULL;
const char *desturi = NULL;
const char *opt = NULL;
+ int optInt = 0;
unsigned int flags = 0;
virshCtrlData *data = opaque;
vshControl *ctl = data->ctl;
@@ -9703,6 +9708,13 @@ doMigrate(void *opaque)
VIR_MIGRATE_PARAM_LISTEN_ADDRESS, opt) < 0)
goto save_error;
+ if (vshCommandOptInt(ctl, cmd, "nbd-port", &optInt) < 0)
+ goto out;
+ if (optInt &&
+ virTypedParamsAddInt(¶ms, &nparams, &maxparams,
+ VIR_MIGRATE_PARAM_NBD_PORT, optInt) < 0)
+ goto save_error;
+
if (vshCommandOptStringReq(ctl, cmd, "dname", &opt) < 0)
goto out;
if (opt &&
diff --git a/tools/virsh.pod b/tools/virsh.pod
index e830c59..c0c4e81 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -1532,7 +1532,7 @@ to the I<uri> namespace is displayed instead of being modified.
[I<--compressed>] [I<--abort-on-error>] [I<--auto-converge>]
I<domain> I<desturi> [I<migrateuri>] [I<graphicsuri>] [I<listen-address>]
[I<dname>] [I<--timeout> B<seconds>] [I<--xml> B<file>]
-[I<--migrate-disks> B<disk-list>]
+[I<--migrate-disks> B<disk-list>] [I<--nbd-port> B<port>]
Migrate domain to another host. Add I<--live> for live migration; <--p2p>
for peer-2-peer migration; I<--direct> for direct migration; or I<--tunnelled>
@@ -1659,6 +1659,9 @@ addresses are accepted as well as hostnames (the resolving is done on
destination). Some hypervisors do not support this feature and will return an
error if this parameter is used.
+Optional I<nbd-port> sets the port that hypervisor on destination side should
+bind to for incoming nbd traffic. Currently it is supported only by qemu.
+
=item B<migrate-setmaxdowntime> I<domain> I<downtime>
Set maximum tolerable downtime for a domain which is being live-migrated to
--
1.8.3.1
2
4
Hi.
There is a mem leak in libvirt, when doing external snapshot (for backup
purposes). My KVM domain uses raw storage images via libgfapi. I'm using
latest 1.2.21 libvirt (although previous versions act the same).
My bash script for snapshot backup uses series of shell commands (virsh
connect to a remote libvirt host):
* virsh domblklist KVM
* qemu-img create -f qcow2 -o backing_file=gluster(...) - precreate
backing file
* virsh snapshot-create KVM SNAP.xml (...) - create snapshot from
precreated XML snapshot file
* cp main img file
* virsh blockcommit KVM disk (...)
Backup script works fine, however libvirtd process gets bigger and
bigger each time I run this script.
Some proof of memleak:
32017 - libvirtd pid
When libvirt started:
# ps p 32017 o vsz,rss
VSZ RSS
585736 15220
When I start KVM via virsh start KVM
# ps p 32017 o vsz,rss
VSZ RSS
1327968 125956
When i start backup script, after snapshot is created (lots of mem
allocated)
# ps p 32017 o vsz,rss
VSZ RSS
3264544 537632
After backup script finished
# ps p 32017 o vsz,rss
VSZ RSS
3715920 644940
When i start backup script for a second time, after snapshot is created
# ps p 32017 o vsz,rss
VSZ RSS
5521424 1056352
And so on, until libvirt spills 'Out of memory' when connecting, ane
being really huge process.
Now, I would like to diagnose it further, to provide detailed
information about memleak. I tried to use valgrind, but unfortunatelly
I'm on Opteron 6380 platform, and valgrind doesn't support XOP quitting
witch SIGILL.
If someone could provide me with detailed information on how to get some
usefull debug info about this memleak, i'll be more than happy to do it,
and share results here.
Thanks in advance and best regards
Piotr Rybicki
3
13
[libvirt] [PATCH 0/9] tests: qemu: unconditionally enable QEMU_CAPS_DEVICE
by Cole Robinson 09 Feb '16
by Cole Robinson 09 Feb '16
09 Feb '16
Okay, my recent patch series' are kinda all over the place. I'm tableing
the src/qemu/ QEMU_CAPS_DEVICE bits for now. This is just the test
suite changes, which I need as a basis for other patches anyways.
This series does two main things: it conditionally enables QEMU_CAPS_DEVICE
in the test suite (since that's all we support nowadays), and it
unconditionally calls qemuDomainAssignAddresses for qemuxml2xml testing,
since that's the only realistic XML parsing scenario in the qemu driver.
This causes a lot of test output churn, so there's some other relevant
bits mixed in:
* An improvement to VIR_TEST_REGENERATE_OUTPUT
* Separating qemuargv2xml test output from qemuxml2argv, since the
latter's output churn will massively break the former.
* More work to wire up qemuxml2xml test cases to allow passing in
QEMU_CAPS_* lists, similar to qemuargv2xml, since
qemuDomainAssignAddresses has many code paths dependent on QEMU_CAPS
* Have qemuxml2xml always use a separate output file. Martin commented
on this here:
https://www.redhat.com/archives/libvir-list/2016-January/msg01041.html
Right now most of those tests expect the output to match the input, and
have it baked into the test framework. In order to maintain that paradigm,
we would either have to update a large chunk of qemuxml2argv input data to
contain static PCI addressing, or do a fine grained auditing of all the
test cases to decide which ones we should be testing for different output
vs ensure the same output.
In my response to the above mail, I layed out my opinion that the
qemuxml2xml tests are overloaded and it needs a much larger scale cleanup
to be more practical. In the interim I think this change is in the right
direction, since at least it's giving us XML output testing of qemu's
specific address assignment functionality, which is always used in practice.
Long term we should separate the generic XML testing from the qemu XML
testing, and for the generic XML testing it likely makes sense to have
many tests with matching input and output, so maybe we reintroduce
that paradigm for genericxml2xml.
Note most of these patches have been on the list for over 2 weeks with
no review and rebasing them is conflict prone so I appreciate any timely
review. Thanks in advance
Cole Robinson (9):
tests: Run test-wrap-argv with REGENERATE_OUTPUT
tests: qemuxml2xml: Always use different output file
tests: qemuargv2xml: separate from qemuxml2argv data
tests: qemuxml2argv: remove some QEMU_CAPS_DEVICE problem cases
tests: Unconditionally enable QEMU_CAPS_DEVICE
tests: qemuxml2xml: Allow test cases to pass in qemuCaps
tests: utils: Add PreFormat callback for CompareXML2XML helper
tests: qemuxml2xml: assign device addresses
tests: qemu: More aarch64 virtio and pci tests
tests/Makefile.am | 1 +
tests/bhyvexml2xmltest.c | 3 +-
tests/domainschematest | 2 +-
tests/genericxml2xmltest.c | 3 +-
tests/lxcxml2xmltest.c | 3 +-
.../qemuargv2xmldata/qemuargv2xml-boot-cdrom.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-boot-cdrom.xml | 31 ++
.../qemuargv2xmldata/qemuargv2xml-boot-floppy.args | 23 +
.../qemuargv2xmldata/qemuargv2xml-boot-floppy.xml | 37 ++
.../qemuargv2xml-boot-network.args | 22 +
.../qemuargv2xmldata/qemuargv2xml-boot-network.xml | 30 ++
.../qemuargv2xml-clock-localtime.args | 23 +
.../qemuargv2xml-clock-localtime.xml | 30 ++
.../qemuargv2xml-clock-utc.args} | 5 +-
tests/qemuargv2xmldata/qemuargv2xml-clock-utc.xml | 30 ++
.../qemuargv2xml-console-compat.args | 22 +
.../qemuargv2xml-console-compat.xml | 36 ++
.../qemuargv2xml-disk-cdrom-empty.args | 23 +
.../qemuargv2xml-disk-cdrom-empty.xml | 36 ++
.../qemuargv2xmldata/qemuargv2xml-disk-cdrom.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-disk-cdrom.xml | 37 ++
.../qemuargv2xml-disk-drive-boot-cdrom.args | 23 +
.../qemuargv2xml-disk-drive-boot-cdrom.xml | 37 ++
.../qemuargv2xml-disk-drive-boot-disk.args | 23 +
.../qemuargv2xml-disk-drive-boot-disk.xml | 37 ++
.../qemuargv2xml-disk-drive-cache-directsync.args | 24 +
.../qemuargv2xml-disk-drive-cache-directsync.xml | 37 ++
.../qemuargv2xml-disk-drive-cache-unsafe.args | 23 +
.../qemuargv2xml-disk-drive-cache-unsafe.xml | 37 ++
.../qemuargv2xml-disk-drive-cache-v2-none.args | 23 +
.../qemuargv2xml-disk-drive-cache-v2-none.xml | 37 ++
.../qemuargv2xml-disk-drive-cache-v2-wb.args | 24 +
.../qemuargv2xml-disk-drive-cache-v2-wb.xml | 37 ++
.../qemuargv2xml-disk-drive-cache-v2-wt.args | 24 +
.../qemuargv2xml-disk-drive-cache-v2-wt.xml | 37 ++
...uargv2xml-disk-drive-error-policy-enospace.args | 24 +
...muargv2xml-disk-drive-error-policy-enospace.xml | 37 ++
.../qemuargv2xml-disk-drive-error-policy-stop.args | 24 +
.../qemuargv2xml-disk-drive-error-policy-stop.xml | 37 ++
...ml-disk-drive-error-policy-wreport-rignore.args | 24 +
...xml-disk-drive-error-policy-wreport-rignore.xml | 37 ++
.../qemuargv2xml-disk-drive-fmt-qcow.args | 23 +
.../qemuargv2xml-disk-drive-fmt-qcow.xml | 37 ++
.../qemuargv2xml-disk-drive-network-gluster.args | 24 +
.../qemuargv2xml-disk-drive-network-gluster.xml | 37 ++
...qemuargv2xml-disk-drive-network-iscsi-auth.args | 25 +
.../qemuargv2xml-disk-drive-network-iscsi-auth.xml | 40 ++
.../qemuargv2xml-disk-drive-network-iscsi.args | 25 +
.../qemuargv2xml-disk-drive-network-iscsi.xml | 37 ++
...qemuargv2xml-disk-drive-network-nbd-export.args | 23 +
.../qemuargv2xml-disk-drive-network-nbd-export.xml | 37 ++
...rgv2xml-disk-drive-network-nbd-ipv6-export.args | 23 +
...argv2xml-disk-drive-network-nbd-ipv6-export.xml | 37 ++
.../qemuargv2xml-disk-drive-network-nbd-ipv6.args | 23 +
.../qemuargv2xml-disk-drive-network-nbd-ipv6.xml | 37 ++
.../qemuargv2xml-disk-drive-network-nbd-unix.args | 23 +
.../qemuargv2xml-disk-drive-network-nbd-unix.xml | 37 ++
.../qemuargv2xml-disk-drive-network-nbd.args | 23 +
.../qemuargv2xml-disk-drive-network-nbd.xml | 37 ++
.../qemuargv2xml-disk-drive-network-rbd-auth.args | 26 +
.../qemuargv2xml-disk-drive-network-rbd-auth.xml | 42 ++
...muargv2xml-disk-drive-network-rbd-ceph-env.args | 25 +
...emuargv2xml-disk-drive-network-rbd-ceph-env.xml | 39 ++
.../qemuargv2xml-disk-drive-network-rbd-ipv6.args | 25 +
.../qemuargv2xml-disk-drive-network-rbd-ipv6.xml | 40 ++
.../qemuargv2xml-disk-drive-network-rbd.args | 29 +
.../qemuargv2xml-disk-drive-network-rbd.xml | 64 +++
.../qemuargv2xml-disk-drive-network-sheepdog.args | 23 +
.../qemuargv2xml-disk-drive-network-sheepdog.xml | 37 ++
.../qemuargv2xmldata/qemuargv2xml-disk-floppy.args | 24 +
.../qemuargv2xmldata/qemuargv2xml-disk-floppy.xml | 43 ++
tests/qemuargv2xmldata/qemuargv2xml-disk-many.args | 25 +
tests/qemuargv2xmldata/qemuargv2xml-disk-many.xml | 48 ++
.../qemuargv2xml-disk-usb.args} | 0
.../qemuargv2xml-disk-usb.xml} | 0
.../qemuargv2xmldata/qemuargv2xml-disk-virtio.args | 25 +
.../qemuargv2xml-disk-virtio.xml} | 6 +-
.../qemuargv2xmldata/qemuargv2xml-disk-xenvbd.args | 25 +
.../qemuargv2xmldata/qemuargv2xml-disk-xenvbd.xml | 47 ++
.../qemuargv2xml-graphics-sdl-fullscreen.args | 25 +
.../qemuargv2xml-graphics-sdl-fullscreen.xml | 34 ++
.../qemuargv2xml-graphics-sdl.args | 24 +
.../qemuargv2xmldata/qemuargv2xml-graphics-sdl.xml | 34 ++
.../qemuargv2xml-graphics-vnc-policy.args | 23 +
.../qemuargv2xml-graphics-vnc-policy.xml | 36 ++
.../qemuargv2xml-graphics-vnc-sasl.args | 24 +
.../qemuargv2xml-graphics-vnc-sasl.xml | 36 ++
.../qemuargv2xml-graphics-vnc-socket.args | 23 +
.../qemuargv2xml-graphics-vnc-socket.xml | 34 ++
.../qemuargv2xml-graphics-vnc-tls.args | 24 +
.../qemuargv2xml-graphics-vnc-tls.xml | 36 ++
.../qemuargv2xml-graphics-vnc-websocket.args | 22 +
.../qemuargv2xml-graphics-vnc-websocket.xml | 29 +
.../qemuargv2xml-graphics-vnc.args | 23 +
.../qemuargv2xmldata/qemuargv2xml-graphics-vnc.xml | 36 ++
.../qemuargv2xml-hostdev-pci-address.args | 23 +
.../qemuargv2xml-hostdev-pci-address.xml | 35 ++
.../qemuargv2xml-hostdev-usb-address.args | 23 +
.../qemuargv2xml-hostdev-usb-address.xml | 35 ++
.../qemuargv2xml-hyperv-panic.args | 21 +
.../qemuargv2xmldata/qemuargv2xml-hyperv-panic.xml | 27 +
tests/qemuargv2xmldata/qemuargv2xml-hyperv.args | 21 +
tests/qemuargv2xmldata/qemuargv2xml-hyperv.xml | 31 ++
.../qemuargv2xml-input-usbmouse.args | 23 +
.../qemuargv2xml-input-usbmouse.xml | 31 ++
.../qemuargv2xml-input-usbtablet.args | 23 +
.../qemuargv2xml-input-usbtablet.xml | 31 ++
.../qemuargv2xml-kvm-features.args | 21 +
.../qemuargv2xmldata/qemuargv2xml-kvm-features.xml | 29 +
tests/qemuargv2xmldata/qemuargv2xml-kvmclock.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-kvmclock.xml | 28 +
.../qemuargv2xml-machine-aeskeywrap-off-argv.args | 20 +
.../qemuargv2xml-machine-aeskeywrap-off-argv.xml | 27 +
.../qemuargv2xml-machine-aeskeywrap-on-argv.args | 20 +
.../qemuargv2xml-machine-aeskeywrap-on-argv.xml | 27 +
.../qemuargv2xml-machine-core-off.args | 22 +
.../qemuargv2xml-machine-core-off.xml | 30 ++
.../qemuargv2xml-machine-core-on.args | 22 +
.../qemuargv2xml-machine-core-on.xml | 30 ++
.../qemuargv2xml-machine-deakeywrap-off-argv.args | 20 +
.../qemuargv2xml-machine-deakeywrap-off-argv.xml | 27 +
.../qemuargv2xml-machine-deakeywrap-on-argv.args | 20 +
.../qemuargv2xml-machine-deakeywrap-on-argv.xml | 27 +
.../qemuargv2xml-machine-keywrap-none-argv.args | 20 +
.../qemuargv2xml-machine-keywrap-none-argv.xml} | 13 +-
tests/qemuargv2xmldata/qemuargv2xml-migrate.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-migrate.xml | 30 ++
tests/qemuargv2xmldata/qemuargv2xml-misc-acpi.args | 21 +
tests/qemuargv2xmldata/qemuargv2xml-misc-acpi.xml | 33 ++
.../qemuargv2xml-misc-disable-s3.args | 23 +
.../qemuargv2xml-misc-disable-s3.xml | 33 ++
.../qemuargv2xml-misc-disable-suspends.args | 24 +
.../qemuargv2xml-misc-disable-suspends.xml | 34 ++
.../qemuargv2xml-misc-enable-s4.args | 23 +
.../qemuargv2xml-misc-enable-s4.xml | 33 ++
.../qemuargv2xml-misc-no-reboot.args | 23 +
.../qemuargv2xml-misc-no-reboot.xml | 30 ++
tests/qemuargv2xmldata/qemuargv2xml-misc-uuid.args | 21 +
tests/qemuargv2xmldata/qemuargv2xml-misc-uuid.xml | 33 ++
.../qemuargv2xml-net-eth-ifname.args | 23 +
.../qemuargv2xml-net-eth-ifname.xml | 36 ++
tests/qemuargv2xmldata/qemuargv2xml-net-eth.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-net-eth.xml | 35 ++
tests/qemuargv2xmldata/qemuargv2xml-net-user.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-net-user.xml | 34 ++
.../qemuargv2xmldata/qemuargv2xml-net-virtio.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-net-virtio.xml | 34 ++
.../qemuargv2xml-nographics-vga.args | 23 +
.../qemuargv2xml-nographics-vga.xml | 30 ++
.../qemuargv2xml-nosharepages.args | 22 +
.../qemuargv2xmldata/qemuargv2xml-nosharepages.xml | 33 ++
.../qemuargv2xml-parallel-tcp.args | 22 +
.../qemuargv2xmldata/qemuargv2xml-parallel-tcp.xml | 35 ++
.../qemuargv2xml-pseries-disk.args | 18 +
.../qemuargv2xmldata/qemuargv2xml-pseries-disk.xml | 42 ++
.../qemuargv2xml-pseries-nvram.args | 22 +
.../qemuargv2xml-pseries-nvram.xml | 25 +
.../qemuargv2xml-qemu-ns-no-env.args | 23 +
.../qemuargv2xml-qemu-ns-no-env.xml | 34 ++
.../qemuargv2xml-reboot-timeout-disabled.args | 21 +
.../qemuargv2xml-reboot-timeout-disabled.xml | 24 +
.../qemuargv2xml-reboot-timeout-enabled.args | 21 +
.../qemuargv2xml-reboot-timeout-enabled.xml | 24 +
.../qemuargv2xmldata/qemuargv2xml-restore-v2.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-restore-v2.xml | 30 ++
.../qemuargv2xmldata/qemuargv2xml-serial-dev.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-serial-dev.xml | 38 ++
.../qemuargv2xmldata/qemuargv2xml-serial-file.args | 22 +
.../qemuargv2xmldata/qemuargv2xml-serial-file.xml | 38 ++
.../qemuargv2xmldata/qemuargv2xml-serial-many.args | 23 +
.../qemuargv2xmldata/qemuargv2xml-serial-many.xml | 40 ++
.../qemuargv2xmldata/qemuargv2xml-serial-pty.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-serial-pty.xml | 36 ++
.../qemuargv2xml-serial-tcp-telnet.args | 22 +
.../qemuargv2xml-serial-tcp-telnet.xml | 40 ++
.../qemuargv2xmldata/qemuargv2xml-serial-tcp.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-serial-tcp.xml | 40 ++
.../qemuargv2xmldata/qemuargv2xml-serial-udp.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-serial-udp.xml | 44 ++
.../qemuargv2xmldata/qemuargv2xml-serial-unix.args | 22 +
.../qemuargv2xmldata/qemuargv2xml-serial-unix.xml | 38 ++
tests/qemuargv2xmldata/qemuargv2xml-serial-vc.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-serial-vc.xml | 36 ++
tests/qemuargv2xmldata/qemuargv2xml-smp.args | 22 +
tests/qemuargv2xmldata/qemuargv2xml-smp.xml | 33 ++
tests/qemuargv2xmldata/qemuargv2xml-sound.args | 23 +
tests/qemuargv2xmldata/qemuargv2xml-sound.xml | 34 ++
tests/qemuargv2xmldata/qemuargv2xml-watchdog.args | 24 +
tests/qemuargv2xmldata/qemuargv2xml-watchdog.xml | 31 ++
tests/qemuargv2xmltest.c | 4 +-
...> qemuxml2argv-aarch64-virtio-pci-default.args} | 0
...=> qemuxml2argv-aarch64-virtio-pci-default.xml} | 0
...2argv-aarch64-virtio-pci-manual-addresses.args} | 0
...l2argv-aarch64-virtio-pci-manual-addresses.xml} | 0
.../qemuxml2argv-blkiotune-device.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-blkiotune.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-boot-cdrom.args | 7 +-
.../qemuxml2argvdata/qemuxml2argv-boot-floppy.args | 10 +-
.../qemuxml2argv-boot-menu-disable.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-boot-multi.args | 8 +-
.../qemuxml2argv-boot-network.args | 7 +-
.../qemuxml2argv-clock-catchup.args | 8 +-
.../qemuxml2argv-clock-france.args | 8 +-
.../qemuxml2argv-clock-hpet-off.args | 8 +-
...muxml2argv-clock-localtime-basis-localtime.args | 8 +-
.../qemuxml2argv-clock-localtime.args | 7 +-
.../qemuxml2argv-clock-timer-hyperv-rtc.args | 5 +-
tests/qemuxml2argvdata/qemuxml2argv-clock-utc.args | 8 +-
.../qemuxml2argv-clock-variable.args | 8 +-
.../qemuxml2argv-console-compat-auto.args | 7 +-
.../qemuxml2argv-console-compat.args | 8 +-
.../qemuxml2argv-cpu-Haswell-noTSX.args | 5 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-Haswell.args | 5 +-
.../qemuxml2argv-cpu-Haswell2.args | 5 +-
.../qemuxml2argv-cpu-Haswell3.args | 5 +-
.../qemuxml2argv-cpu-eoi-disabled.args | 5 +-
.../qemuxml2argv-cpu-eoi-enabled.args | 5 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-exact1.args | 5 +-
.../qemuxml2argv-cpu-exact2-nofallback.args | 5 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-exact2.args | 5 +-
.../qemuxml2argv-cpu-fallback.args | 5 +-
.../qemuxml2argv-cpu-host-kvmclock.args | 5 +-
.../qemuxml2argv-cpu-host-model-fallback.args | 5 +-
.../qemuxml2argv-cpu-host-model-vendor.args | 5 +-
.../qemuxml2argv-cpu-host-model.args | 5 +-
...qemuxml2argv-cpu-host-passthrough-features.args | 8 +-
.../qemuxml2argv-cpu-host-passthrough.args | 5 +-
.../qemuxml2argv-cpu-kvmclock.args | 5 +-
.../qemuxml2argv-cpu-minimum1.args | 5 +-
.../qemuxml2argv-cpu-minimum2.args | 5 +-
.../qemuxml2argv-cpu-numa-disjoint.args | 5 +-
.../qemuxml2argv-cpu-numa-no-memory-element.args | 5 +-
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa1.args | 5 +-
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa2.args | 5 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-strict1.args | 5 +-
.../qemuxml2argv-cpu-topology1.args | 5 +-
.../qemuxml2argv-cpu-topology2.args | 5 +-
.../qemuxml2argv-cpu-topology3.args | 5 +-
.../qemuxml2argv-cputune-numatune.args | 7 +-
.../qemuxml2argv-cputune-numatune.xml | 12 +-
.../qemuxml2argv-cputune-zero-shares.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-cputune.args | 8 +-
.../qemuxml2argv-default-kvm-host-arch.args | 5 +-
.../qemuxml2argv-default-qemu-host-arch.args | 5 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-aio.args | 15 +-
.../qemuxml2argv-disk-cdrom-empty.args | 10 +-
...qemuxml2argv-disk-cdrom-tray-no-device-cap.args | 11 +-
.../qemuxml2argvdata/qemuxml2argv-disk-cdrom.args | 10 +-
.../qemuxml2argv-disk-drive-boot-cdrom.args | 11 +-
.../qemuxml2argv-disk-drive-boot-disk.args | 11 +-
.../qemuxml2argv-disk-drive-cache-directsync.args | 11 +-
.../qemuxml2argv-disk-drive-cache-unsafe.args | 12 +-
.../qemuxml2argv-disk-drive-cache-v2-none.args | 12 +-
.../qemuxml2argv-disk-drive-cache-v2-wb.args | 11 +-
.../qemuxml2argv-disk-drive-cache-v2-wt.args | 11 +-
.../qemuxml2argv-disk-drive-copy-on-read.args | 8 +-
...uxml2argv-disk-drive-error-policy-enospace.args | 13 +-
.../qemuxml2argv-disk-drive-error-policy-stop.args | 13 +-
...gv-disk-drive-error-policy-wreport-rignore.args | 13 +-
.../qemuxml2argv-disk-drive-fat.args | 8 +-
.../qemuxml2argv-disk-drive-fmt-qcow.args | 11 +-
.../qemuxml2argv-disk-drive-network-gluster.args | 13 +-
...qemuxml2argv-disk-drive-network-iscsi-auth.args | 12 +-
.../qemuxml2argv-disk-drive-network-iscsi.args | 14 +-
...qemuxml2argv-disk-drive-network-nbd-export.args | 12 +-
...ml2argv-disk-drive-network-nbd-ipv6-export.args | 11 +-
.../qemuxml2argv-disk-drive-network-nbd-ipv6.args | 11 +-
.../qemuxml2argv-disk-drive-network-nbd-unix.args | 12 +-
.../qemuxml2argv-disk-drive-network-nbd.args | 11 +-
.../qemuxml2argv-disk-drive-network-rbd-auth.args | 11 +-
.../qemuxml2argv-disk-drive-network-rbd-ipv6.args | 11 +-
.../qemuxml2argv-disk-drive-network-rbd.args | 26 +-
.../qemuxml2argv-disk-drive-network-sheepdog.args | 12 +-
...qemuxml2argv-disk-drive-readonly-no-device.args | 13 +-
.../qemuxml2argv-disk-drive-shared.args | 12 +-
...emuxml2argv-disk-floppy-tray-no-device-cap.args | 14 +-
.../qemuxml2argvdata/qemuxml2argv-disk-floppy.args | 13 +-
.../qemuxml2argv-disk-geometry.args | 10 +-
.../qemuxml2argvdata/qemuxml2argv-disk-iscsi.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-many.args | 16 +-
.../qemuxml2argv-disk-snapshot.args | 17 +-
.../qemuxml2argv-disk-usb-nosupport.xml | 35 ++
.../qemuxml2argvdata/qemuxml2argv-disk-virtio.args | 19 +-
.../qemuxml2argvdata/qemuxml2argv-disk-xenvbd.args | 13 +-
.../qemuxml2argv-eoi-disabled.args | 5 +-
.../qemuxml2argvdata/qemuxml2argv-eoi-enabled.args | 5 +-
.../qemuxml2argv-fips-enabled.args | 8 +-
.../qemuxml2argv-floppy-drive-fat.args | 8 +-
.../qemuxml2argv-graphics-sdl-fullscreen.args | 7 +-
.../qemuxml2argv-graphics-sdl.args | 7 +-
.../qemuxml2argv-graphics-vnc-policy.args | 7 +-
.../qemuxml2argv-graphics-vnc-sasl.args | 7 +-
.../qemuxml2argv-graphics-vnc-socket.args | 7 +-
.../qemuxml2argv-graphics-vnc-tls.args | 7 +-
.../qemuxml2argv-graphics-vnc-websocket.args | 4 +-
.../qemuxml2argv-graphics-vnc.args | 7 +-
.../qemuxml2argv-hostdev-pci-address.args | 9 +-
.../qemuxml2argv-hostdev-usb-address.args | 9 +-
.../qemuxml2argv-hugepages-pages.args | 8 +-
.../qemuxml2argv-hugepages-pages2.args | 8 +-
.../qemuxml2argv-hugepages-pages3.args | 8 +-
.../qemuxml2argv-hugepages-pages5.args | 8 +-
.../qemuxml2argv-hugepages-pages6.args | 8 +-
.../qemuxml2argv-hugepages-shared.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-hugepages.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-hyperv-off.args | 5 +-
.../qemuxml2argv-hyperv-panic.args | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-hyperv.args | 6 +-
.../qemuxml2argv-input-usbmouse.args | 9 +-
.../qemuxml2argv-input-usbtablet.args | 9 +-
.../qemuxml2argv-iothreads-ids-partial.args | 7 +-
.../qemuxml2argv-iothreads-ids.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-iothreads.args | 7 +-
.../qemuxml2argv-kvm-features-off.args | 5 +-
.../qemuxml2argv-kvm-features.args | 6 +-
.../qemuxml2argv-kvm-pit-delay.args | 8 +-
.../qemuxml2argv-kvm-pit-device.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-kvm.args | 6 +-
.../qemuxml2argv-kvmclock+eoi-disabled.args | 5 +-
tests/qemuxml2argvdata/qemuxml2argv-kvmclock.args | 6 +-
.../qemuxml2argv-machine-aliases1.args | 8 +-
.../qemuxml2argv-machine-aliases2.args | 8 +-
.../qemuxml2argv-machine-core-off.args | 7 +-
.../qemuxml2argv-machine-core-on.args | 7 +-
.../qemuxml2argv-machine-usb-opt.args | 8 +-
.../qemuxml2argv-machine-vmport-opt.args | 8 +-
.../qemuxml2argv-memory-hotplug.args | 8 +-
.../qemuxml2argv-memtune-unlimited.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-memtune.args | 8 +-
.../qemuxml2argv-migrate-numa-unaligned.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-migrate.args | 7 +-
.../qemuxml2argv-minimal-msg-timestamp.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-minimal.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.args | 7 +-
.../qemuxml2argv-misc-disable-s3.args | 7 +-
.../qemuxml2argv-misc-disable-suspends.args | 7 +-
.../qemuxml2argv-misc-enable-s4.args | 7 +-
.../qemuxml2argv-misc-no-reboot.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-misc-uuid.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-mlock-off.args | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-mlock-on.args | 6 +-
.../qemuxml2argv-mlock-unsupported.args | 6 +-
.../qemuxml2argvdata/qemuxml2argv-net-client.args | 9 +-
.../qemuxml2argv-net-eth-ifname.args | 10 +-
.../qemuxml2argv-net-eth-names.args | 11 +-
tests/qemuxml2argvdata/qemuxml2argv-net-eth.args | 10 +-
tests/qemuxml2argvdata/qemuxml2argv-net-mcast.args | 9 +-
.../qemuxml2argvdata/qemuxml2argv-net-server.args | 9 +-
tests/qemuxml2argvdata/qemuxml2argv-net-udp.args | 9 +-
tests/qemuxml2argvdata/qemuxml2argv-net-user.args | 10 +-
.../qemuxml2argvdata/qemuxml2argv-net-virtio.args | 10 +-
.../qemuxml2argv-nographics-vga.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-nographics.args | 8 +-
.../qemuxml2argv-nosharepages.args | 7 +-
...qemuxml2argv-numad-auto-memory-vcpu-cpuset.args | 8 +-
...d-auto-memory-vcpu-no-cpuset-and-placement.args | 8 +-
...muxml2argv-numad-auto-vcpu-static-numatune.args | 8 +-
...qemuxml2argv-numad-static-memory-auto-vcpu.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-numad.args | 8 +-
...qemuxml2argv-numatune-auto-nodeset-invalid.args | 8 +-
.../qemuxml2argv-numatune-auto-prefer.args | 5 +-
.../qemuxml2argv-numatune-memnode-no-memory.args | 5 +-
.../qemuxml2argv-numatune-memnode.args | 5 +-
.../qemuxml2argv-numatune-memory.args | 8 +-
.../qemuxml2argv-parallel-tcp.args | 6 +-
.../qemuxml2argv-pmu-feature-off.args | 6 +-
.../qemuxml2argvdata/qemuxml2argv-pmu-feature.args | 6 +-
tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args | 4 +-
.../qemuxml2argv-pseries-nvram.args | 4 +-
.../qemuxml2argv-pv-spinlock-disabled.args | 5 +-
.../qemuxml2argv-pv-spinlock-enabled.args | 5 +-
.../qemuxml2argv-qemu-ns-commandline-ns0.args | 8 +-
.../qemuxml2argv-qemu-ns-commandline-ns1.args | 8 +-
.../qemuxml2argv-qemu-ns-commandline.args | 8 +-
...emuxml2argv-qemu-ns-domain-commandline-ns0.args | 8 +-
.../qemuxml2argv-qemu-ns-domain-commandline.args | 8 +-
.../qemuxml2argv-qemu-ns-domain-ns0.args | 8 +-
.../qemuxml2argv-qemu-ns-no-env.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-qemu-ns.args | 8 +-
.../qemuxml2argv-reboot-timeout-disabled.args | 6 +-
.../qemuxml2argv-reboot-timeout-enabled.args | 6 +-
.../qemuxml2argv-restore-v2-fd.args | 10 +-
.../qemuxml2argvdata/qemuxml2argv-restore-v2.args | 7 +-
.../qemuxml2argv-seclabel-dac-none.args | 8 +-
.../qemuxml2argv-seclabel-dynamic-baselabel.args | 8 +-
.../qemuxml2argv-seclabel-dynamic-labelskip.args | 8 +-
.../qemuxml2argv-seclabel-dynamic-override.args | 11 +-
.../qemuxml2argv-seclabel-dynamic-relabel.args | 8 +-
.../qemuxml2argv-seclabel-dynamic.args | 8 +-
.../qemuxml2argv-seclabel-none.args | 8 +-
.../qemuxml2argv-seclabel-static-labelskip.args | 8 +-
.../qemuxml2argv-seclabel-static-relabel.args | 8 +-
.../qemuxml2argv-seclabel-static.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-dev.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-file.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-many.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-pty.args | 8 +-
.../qemuxml2argv-serial-spiceport-nospice.args | 8 +-
.../qemuxml2argv-serial-tcp-telnet.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-tcp.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-udp.args | 8 +-
.../qemuxml2argvdata/qemuxml2argv-serial-unix.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-vc.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-smbios.args | 8 +-
tests/qemuxml2argvdata/qemuxml2argv-smp.args | 7 +-
tests/qemuxml2argvdata/qemuxml2argv-sound.args | 12 +-
.../qemuxml2argv-video-qxl-nodevice.args | 14 +-
.../qemuxml2argv-video-vga-nodevice.args | 12 +-
.../qemuxml2argv-watchdog-dump.args | 12 +-
.../qemuxml2argv-watchdog-injectnmi.args | 12 +-
tests/qemuxml2argvdata/qemuxml2argv-watchdog.args | 9 +-
tests/qemuxml2argvtest.c | 582 ++++++++++-----------
.../qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml | 53 ++
.../qemuxml2xmlout-aarch64-gic.xml | 32 ++
.../qemuxml2xmlout-aarch64-gicv3.xml | 32 ++
.../qemuxml2xmlout-aarch64-virtio-pci-default.xml | 69 +++
...2xmlout-aarch64-virtio-pci-manual-addresses.xml | 53 ++
.../qemuxml2xmlout-balloon-device-auto.xml | 12 +-
.../qemuxml2xmlout-balloon-device-period.xml | 8 +-
.../qemuxml2xmlout-bios-nvram-os-interleave.xml | 12 +-
.../qemuxml2xmlout-bios-nvram.xml | 48 ++
.../qemuxml2xmlout-blkdeviotune.xml | 51 ++
.../qemuxml2xmlout-blkiotune-device.xml | 54 ++
.../qemuxml2xmlout-blkiotune.xml | 38 ++
.../qemuxml2xmlout-boot-cdrom.xml | 35 ++
.../qemuxml2xmlout-boot-floppy.xml | 41 ++
...muxml2xmlout-boot-menu-disable-with-timeout.xml | 12 +-
.../qemuxml2xmlout-boot-menu-disable.xml | 37 ++
...emuxml2xmlout-boot-menu-enable-with-timeout.xml | 37 ++
.../qemuxml2xmlout-boot-multi.xml | 40 ++
.../qemuxml2xmlout-boot-network.xml | 34 ++
.../qemuxml2xmlout-boot-order.xml | 64 +++
.../qemuxml2xmlout-channel-guestfwd.xml | 39 ++
.../qemuxml2xmlout-channel-virtio-auto.xml | 29 +-
.../qemuxml2xmlout-channel-virtio-state-active.xml | 12 +-
...emuxml2xmlout-channel-virtio-state-inactive.xml | 12 +-
.../qemuxml2xmlout-channel-virtio.xml | 42 ++
.../qemuxml2xmlout-chardev-label.xml | 54 ++
.../qemuxml2xmlout-clock-catchup.xml | 45 ++
.../qemuxml2xmlout-clock-localtime.xml | 34 ++
.../qemuxml2xmlout-clock-timer-hyperv-rtc.xml | 32 ++
.../qemuxml2xmlout-clock-utc.xml | 34 ++
.../qemuxml2xmlout-console-compat-auto.xml | 12 +-
.../qemuxml2xmlout-console-compat.xml | 40 ++
.../qemuxml2xmlout-console-compat2.xml | 12 +-
.../qemuxml2xmlout-console-virtio-many.xml | 53 ++
.../qemuxml2xmlout-console-virtio.xml | 16 +-
.../qemuxml2xmlout-controller-usb-order.xml | 4 +-
.../qemuxml2xmlout-cpu-empty.xml | 8 +-
.../qemuxml2xmlout-cpu-eoi-disabled.xml | 35 ++
.../qemuxml2xmlout-cpu-eoi-enabled.xml | 35 ++
.../qemuxml2xmlout-cpu-host-kvmclock.xml | 30 ++
.../qemuxml2xmlout-cpu-host-model-features.xml | 41 ++
...emuxml2xmlout-cpu-host-passthrough-features.xml | 45 ++
.../qemuxml2xmlout-cpu-kvmclock.xml | 32 ++
.../qemuxml2xmlout-cpu-numa-disjoint.xml | 34 ++
.../qemuxml2xmlout-cpu-numa-disordered.xml | 8 +-
.../qemuxml2xmlout-cpu-numa-memshared.xml | 34 ++
.../qemuxml2xmlout-cpu-numa-no-memory-element.xml | 8 +-
.../qemuxml2xmlout-cpu-numa1.xml | 8 +-
.../qemuxml2xmlout-cpu-numa2.xml | 8 +-
.../qemuxml2xmlout-cputune-iothreads.xml | 12 +-
...l2xmlout-cputune-iothreadsched-zeropriority.xml | 46 ++
.../qemuxml2xmlout-cputune-iothreadsched.xml | 12 +-
.../qemuxml2xmlout-cputune-numatune.xml | 33 ++
.../qemuxml2xmlout-cputune-zero-shares.xml | 43 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-cputune.xml | 43 ++
.../qemuxml2xmlout-default-kvm-host-arch.xml | 8 +-
.../qemuxml2xmlout-default-qemu-host-arch.xml | 8 +-
.../qemuxml2xmlout-disk-active-commit.xml | 45 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-disk-aio.xml | 43 ++
.../qemuxml2xmlout-disk-backing-chains-active.xml | 13 +-
...qemuxml2xmlout-disk-backing-chains-inactive.xml | 13 +-
.../qemuxml2xmlout-disk-cdrom-empty.xml | 40 ++
.../qemuxml2xmlout-disk-cdrom.xml | 41 ++
.../qemuxml2xmlout-disk-copy_on_read.xml | 60 +++
.../qemuxml2xmlout-disk-drive-boot-cdrom.xml | 41 ++
.../qemuxml2xmlout-disk-drive-boot-disk.xml | 41 ++
.../qemuxml2xmlout-disk-drive-cache-directsync.xml | 41 ++
.../qemuxml2xmlout-disk-drive-cache-unsafe.xml | 41 ++
.../qemuxml2xmlout-disk-drive-cache-v2-none.xml | 41 ++
.../qemuxml2xmlout-disk-drive-cache-v2-wb.xml | 41 ++
.../qemuxml2xmlout-disk-drive-cache-v2-wt.xml | 41 ++
.../qemuxml2xmlout-disk-drive-copy-on-read.xml | 36 ++
.../qemuxml2xmlout-disk-drive-discard.xml | 12 +-
...xml2xmlout-disk-drive-error-policy-enospace.xml | 41 ++
...qemuxml2xmlout-disk-drive-error-policy-stop.xml | 41 ++
...out-disk-drive-error-policy-wreport-rignore.xml | 41 ++
.../qemuxml2xmlout-disk-drive-fat.xml | 37 ++
.../qemuxml2xmlout-disk-drive-fmt-qcow.xml | 41 ++
.../qemuxml2xmlout-disk-drive-network-gluster.xml | 41 ++
...emuxml2xmlout-disk-drive-network-iscsi-auth.xml | 44 ++
.../qemuxml2xmlout-disk-drive-network-iscsi.xml | 41 ++
...emuxml2xmlout-disk-drive-network-nbd-export.xml | 42 ++
...l2xmlout-disk-drive-network-nbd-ipv6-export.xml | 42 ++
.../qemuxml2xmlout-disk-drive-network-nbd-ipv6.xml | 42 ++
.../qemuxml2xmlout-disk-drive-network-nbd-unix.xml | 42 ++
.../qemuxml2xmlout-disk-drive-network-nbd.xml | 42 ++
.../qemuxml2xmlout-disk-drive-network-rbd-auth.xml | 47 ++
...uxml2xmlout-disk-drive-network-rbd-ceph-env.xml | 44 ++
.../qemuxml2xmlout-disk-drive-network-rbd-ipv6.xml | 45 ++
.../qemuxml2xmlout-disk-drive-network-rbd.xml | 72 +++
.../qemuxml2xmlout-disk-drive-network-sheepdog.xml | 42 ++
.../qemuxml2xmlout-disk-floppy.xml | 47 ++
.../qemuxml2xmlout-disk-many.xml | 52 ++
.../qemuxml2xmlout-disk-mirror-active.xml | 66 +++
.../qemuxml2xmlout-disk-mirror-inactive.xml | 51 ++
.../qemuxml2xmlout-disk-mirror-old-inactive.xml | 14 +-
.../qemuxml2xmlout-disk-mirror-old.xml | 14 +-
.../qemuxml2xmlout-disk-scsi-device-auto.xml | 16 +-
.../qemuxml2xmlout-disk-scsi-device.xml | 43 ++
.../qemuxml2xmlout-disk-scsi-disk-vpd.xml | 49 ++
...muxml2xmlout-disk-scsi-lun-passthrough-sgio.xml | 43 ++
.../qemuxml2xmlout-disk-scsi-megasas.xml | 43 ++
.../qemuxml2xmlout-disk-scsi-virtio-scsi.xml | 43 ++
.../qemuxml2xmlout-disk-scsi-vscsi.xml | 43 ++
.../qemuxml2xmlout-disk-source-pool-mode.xml | 55 ++
.../qemuxml2xmlout-disk-source-pool.xml | 12 +-
.../qemuxml2xmlout-disk-usb-device.xml | 39 ++
...qemuxml2xmlout-disk-virtio-scsi-cmd_per_lun.xml | 36 ++
.../qemuxml2xmlout-disk-virtio-scsi-ioeventfd.xml | 36 ++
...qemuxml2xmlout-disk-virtio-scsi-max_sectors.xml | 36 ++
.../qemuxml2xmlout-disk-virtio-scsi-num_queues.xml | 36 ++
.../qemuxml2xmlout-disk-virtio.xml | 53 ++
.../qemuxml2xmlout-disk-xenvbd.xml | 51 ++
.../qemuxml2xmlout-encrypted-disk.xml | 36 ++
.../qemuxml2xmlout-eoi-disabled.xml | 32 ++
.../qemuxml2xmlout-eoi-enabled.xml | 32 ++
.../qemuxml2xmlout-event_idx.xml | 60 +++
.../qemuxml2xmlout-floppy-drive-fat.xml | 38 ++
.../qemuxml2xmlout-graphics-listen-network.xml | 42 ++
.../qemuxml2xmlout-graphics-listen-network2.xml | 13 +-
.../qemuxml2xmlout-graphics-sdl-fullscreen.xml | 39 ++
.../qemuxml2xmlout-graphics-sdl.xml | 39 ++
.../qemuxml2xmlout-graphics-spice-compression.xml | 51 ++
.../qemuxml2xmlout-graphics-spice-qxl-vga.xml | 48 ++
.../qemuxml2xmlout-graphics-spice-timeout.xml | 4 +-
.../qemuxml2xmlout-graphics-spice.xml | 55 ++
.../qemuxml2xmlout-graphics-vnc-sasl.xml | 41 ++
.../qemuxml2xmlout-graphics-vnc-tls.xml | 41 ++
.../qemuxml2xmlout-graphics-vnc-websocket.xml | 32 ++
.../qemuxml2xmlout-graphics-vnc.xml | 41 ++
.../qemuxml2xmlout-hostdev-pci-address.xml | 40 ++
...qemuxml2xmlout-hostdev-scsi-autogen-address.xml | 20 +-
.../qemuxml2xmlout-hostdev-scsi-large-unit.xml | 45 ++
.../qemuxml2xmlout-hostdev-scsi-lsi-iscsi-auth.xml | 56 ++
.../qemuxml2xmlout-hostdev-scsi-lsi-iscsi.xml | 50 ++
.../qemuxml2xmlout-hostdev-scsi-lsi.xml | 45 ++
.../qemuxml2xmlout-hostdev-scsi-rawio.xml | 45 ++
.../qemuxml2xmlout-hostdev-scsi-readonly.xml | 46 ++
.../qemuxml2xmlout-hostdev-scsi-sgio.xml | 45 ++
.../qemuxml2xmlout-hostdev-scsi-shareable.xml | 46 ++
...muxml2xmlout-hostdev-scsi-virtio-iscsi-auth.xml | 56 ++
.../qemuxml2xmlout-hostdev-scsi-virtio-iscsi.xml | 50 ++
.../qemuxml2xmlout-hostdev-scsi-virtio-scsi.xml | 45 ++
.../qemuxml2xmlout-hostdev-usb-address.xml | 39 ++
.../qemuxml2xmlout-hostdev-vfio.xml | 42 ++
.../qemuxml2xmlout-hugepages-pages.xml | 53 ++
.../qemuxml2xmlout-hugepages-pages2.xml | 46 ++
.../qemuxml2xmlout-hugepages-pages3.xml | 46 ++
.../qemuxml2xmlout-hugepages-shared.xml | 53 ++
.../qemuxml2xmlout-hugepages.xml | 38 ++
.../qemuxml2xmlout-hyperv-off.xml | 35 ++
.../qemuxml2xmlout-hyperv-panic.xml | 29 +
tests/qemuxml2xmloutdata/qemuxml2xmlout-hyperv.xml | 33 ++
.../qemuxml2xmlout-input-usbmouse.xml | 35 ++
.../qemuxml2xmlout-input-usbtablet.xml | 35 ++
.../qemuxml2xmlout-interface-driver.xml | 61 +++
.../qemuxml2xmlout-interface-server.xml | 134 +++++
.../qemuxml2xmlout-iothreads-disk-virtio-ccw.xml | 35 ++
.../qemuxml2xmlout-iothreads-disk.xml | 47 ++
.../qemuxml2xmlout-iothreads-ids-partial.xml | 39 ++
.../qemuxml2xmlout-iothreads-ids.xml | 39 ++
.../qemuxml2xmlout-iothreads.xml | 35 ++
.../qemuxml2xmlout-kvm-features-off.xml | 33 ++
.../qemuxml2xmlout-kvm-features.xml | 31 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-kvmclock.xml | 30 ++
tests/qemuxml2xmloutdata/qemuxml2xmlout-lease.xml | 46 ++
.../qemuxml2xmlout-machine-core-off.xml | 34 ++
.../qemuxml2xmlout-machine-core-on.xml | 34 ++
.../qemuxml2xmlout-memory-hotplug-dimm.xml | 62 +++
.../qemuxml2xmlout-memory-hotplug-nonuma.xml | 28 +
.../qemuxml2xmlout-memory-hotplug.xml | 42 ++
.../qemuxml2xmlout-memtune-unlimited.xml | 12 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-memtune.xml | 12 +-
.../qemuxml2xmlout-metadata-duplicate.xml | 12 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml | 12 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-migrate.xml | 34 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-minimal.xml | 40 ++
.../qemuxml2xmlout-misc-acpi.xml | 37 ++
.../qemuxml2xmlout-misc-disable-s3.xml | 37 ++
.../qemuxml2xmlout-misc-disable-suspends.xml | 38 ++
.../qemuxml2xmlout-misc-enable-s4.xml | 37 ++
.../qemuxml2xmlout-misc-no-reboot.xml | 34 ++
.../qemuxml2xmlout-misc-uuid.xml | 37 ++
.../qemuxml2xmlout-net-bandwidth.xml | 78 +++
.../qemuxml2xmlout-net-bandwidth2.xml | 67 +++
.../qemuxml2xmlout-net-eth-ifname.xml | 41 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-net-eth.xml | 40 ++
.../qemuxml2xmlout-net-hostdev-vfio.xml | 50 ++
.../qemuxml2xmlout-net-hostdev.xml | 49 ++
.../qemuxml2xmlout-net-midonet.xml | 44 ++
.../qemuxml2xmlout-net-openvswitch.xml | 49 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-net-udp.xml | 43 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-net-user.xml | 39 ++
.../qemuxml2xmlout-net-vhostuser.xml | 52 ++
.../qemuxml2xmlout-net-virtio-device.xml | 41 ++
.../qemuxml2xmlout-net-virtio-disable-offloads.xml | 44 ++
...qemuxml2xmlout-net-virtio-network-portgroup.xml | 65 +++
.../qemuxml2xmlout-net-virtio.xml | 39 ++
.../qemuxml2xmlout-nographics-vga.xml | 34 ++
.../qemuxml2xmlout-nosharepages.xml | 37 ++
...emuxml2xmlout-numad-auto-memory-vcpu-cpuset.xml | 12 +-
...ad-auto-memory-vcpu-no-cpuset-and-placement.xml | 12 +-
.../qemuxml2xmlout-numad-auto-vcpu-no-numatune.xml | 12 +-
...emuxml2xmlout-numad-static-vcpu-no-numatune.xml | 38 ++
.../qemuxml2xmlout-numatune-auto-prefer.xml | 8 +-
.../qemuxml2xmlout-numatune-memnode-no-memory.xml | 36 ++
.../qemuxml2xmlout-numatune-memnode.xml | 8 +-
.../qemuxml2xmlout-panic-double.xml | 32 ++
.../qemuxml2xmlout-panic-isa.xml | 39 ++
.../qemuxml2xmlout-panic-no-address.xml | 37 ++
.../qemuxml2xmlout-panic-pseries.xml | 32 ++
tests/qemuxml2xmloutdata/qemuxml2xmlout-panic.xml | 12 +-
.../qemuxml2xmlout-parallel-tcp.xml | 39 ++
.../qemuxml2xmlout-pci-autoadd-addr.xml | 35 ++
.../qemuxml2xmlout-pci-autoadd-idx.xml | 41 +-
.../qemuxml2xmlout-pci-bridge-many-disks.xml | 124 ++++-
.../qemuxml2xmlout-pci-bridge.xml | 251 +++++++++
.../qemuxml2xmloutdata/qemuxml2xmlout-pci-rom.xml | 61 +++
.../qemuxml2xmlout-pci-serial-dev-chardev.xml | 45 ++
.../qemuxml2xmlout-pcie-root-port.xml | 53 ++
.../qemuxml2xmlout-pcie-root.xml | 15 +-
.../qemuxml2xmlout-pcie-switch-downstream-port.xml | 91 ++++
.../qemuxml2xmlout-pcie-switch-upstream-port.xml | 61 +++
.../qemuxml2xmlout-pcihole64-gib.xml | 8 +-
.../qemuxml2xmlout-pcihole64-none.xml | 29 +
.../qemuxml2xmlout-pcihole64-q35.xml | 45 ++
.../qemuxml2xmlout-pcihole64.xml | 29 +
.../qemuxml2xmlout-pmu-feature-off.xml | 29 +
.../qemuxml2xmlout-pmu-feature.xml | 4 +-
.../qemuxml2xmlout-pseries-nvram.xml | 27 +
.../qemuxml2xmlout-pseries-panic-missing.xml | 8 +-
.../qemuxml2xmlout-pseries-panic-no-address.xml | 8 +-
.../qemuxml2xmlout-pv-spinlock-disabled.xml | 32 ++
.../qemuxml2xmlout-pv-spinlock-enabled.xml | 32 ++
.../qemuxml2xmlout-q35-usb2-multi.xml | 28 +-
.../qemuxml2xmlout-q35-usb2-reorder.xml | 28 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-q35-usb2.xml | 14 +-
tests/qemuxml2xmloutdata/qemuxml2xmlout-q35.xml | 22 +-
.../qemuxml2xmlout-qemu-ns-no-env.xml | 38 ++
.../qemuxml2xmlout-reboot-timeout-disabled.xml | 26 +
.../qemuxml2xmlout-reboot-timeout-enabled.xml | 26 +
.../qemuxml2xmlout-restore-v2.xml | 34 ++
.../qemuxml2xmlout-s390-defaultconsole.xml | 3 +-
.../qemuxml2xmlout-seclabel-dac-none.xml | 36 ++
.../qemuxml2xmlout-seclabel-device-multiple.xml | 40 ++
.../qemuxml2xmlout-seclabel-dynamic-baselabel.xml | 38 ++
.../qemuxml2xmlout-seclabel-dynamic-labelskip.xml | 12 +-
.../qemuxml2xmlout-seclabel-dynamic-none.xml | 36 ++
.../qemuxml2xmlout-seclabel-dynamic-override.xml | 50 ++
.../qemuxml2xmlout-seclabel-dynamic-relabel.xml | 12 +-
.../qemuxml2xmlout-seclabel-none.xml | 12 +-
.../qemuxml2xmlout-seclabel-static-labelskip.xml | 42 ++
.../qemuxml2xmlout-seclabel-static.xml | 38 ++
.../qemuxml2xmlout-serial-dev.xml | 42 ++
.../qemuxml2xmlout-serial-file.xml | 42 ++
.../qemuxml2xmlout-serial-many.xml | 44 ++
.../qemuxml2xmlout-serial-pty.xml | 40 ++
.../qemuxml2xmlout-serial-spiceport-nospice.xml | 43 ++
.../qemuxml2xmlout-serial-spiceport.xml | 51 ++
.../qemuxml2xmlout-serial-target-port-auto.xml | 12 +-
.../qemuxml2xmlout-serial-tcp-telnet.xml | 44 ++
.../qemuxml2xmlout-serial-tcp.xml | 44 ++
.../qemuxml2xmlout-serial-udp.xml | 48 ++
.../qemuxml2xmlout-serial-unix.xml | 42 ++
.../qemuxml2xmlout-serial-vc.xml | 40 ++
tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml | 64 +++
.../qemuxml2xmlout-smbios-multiple-type2.xml | 66 +++
tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml | 59 +++
tests/qemuxml2xmloutdata/qemuxml2xmlout-smp.xml | 37 ++
.../qemuxml2xmlout-sound-device.xml | 60 +++
tests/qemuxml2xmloutdata/qemuxml2xmlout-sound.xml | 42 ++
.../qemuxml2xmlout-tap-vhost-incorrect.xml | 14 +-
.../qemuxml2xmlout-tap-vhost.xml | 61 +++
.../qemuxml2xmlout-tpm-passthrough.xml | 36 ++
.../qemuxml2xmlout-usb-ich9-ehci-addr.xml | 25 +-
.../qemuxml2xmlout-usb-redir-filter-version.xml | 8 +-
.../qemuxml2xmlout-usb-redir-filter.xml | 4 +-
.../qemuxml2xmlout-usb-redir.xml | 46 ++
.../qemuxml2xmlout-vcpu-placement-static.xml | 42 ++
.../qemuxml2xmlout-vhost_queues.xml | 60 +++
.../qemuxml2xmlout-video-virtio-gpu-device.xml | 40 ++
.../qemuxml2xmlout-video-virtio-gpu-virgl.xml | 42 ++
.../qemuxml2xmlout-virtio-input-passthrough.xml | 31 ++
.../qemuxml2xmlout-virtio-input.xml | 36 ++
.../qemuxml2xmlout-virtio-lun.xml | 59 +++
.../qemuxml2xmlout-virtio-rng-egd.xml | 34 ++
.../qemuxml2xmlout-virtio-rng-random.xml | 32 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-watchdog.xml | 35 ++
tests/qemuxml2xmltest.c | 417 ++++++++++-----
tests/testutils.c | 45 +-
tests/testutils.h | 6 +-
703 files changed, 17462 insertions(+), 1522 deletions(-)
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-boot-cdrom.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-boot-cdrom.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-boot-floppy.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-boot-floppy.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-boot-network.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-boot-network.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-clock-localtime.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-clock-localtime.xml
rename tests/{qemuxml2argvdata/qemuxml2argv-minimal-s390.args => qemuargv2xmldata/qemuargv2xml-clock-utc.args} (79%)
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-clock-utc.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-console-compat.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-console-compat.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-cdrom-empty.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-cdrom-empty.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-cdrom.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-cdrom.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-boot-cdrom.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-boot-cdrom.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-boot-disk.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-boot-disk.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-directsync.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-directsync.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-unsafe.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-unsafe.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-v2-none.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-v2-none.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-v2-wb.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-v2-wb.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-v2-wt.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-cache-v2-wt.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-error-policy-enospace.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-error-policy-enospace.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-error-policy-stop.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-error-policy-stop.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-error-policy-wreport-rignore.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-error-policy-wreport-rignore.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-fmt-qcow.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-fmt-qcow.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-gluster.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-gluster.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-iscsi-auth.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-iscsi-auth.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-iscsi.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-iscsi.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-export.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-export.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-ipv6-export.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-ipv6-export.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-ipv6.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-ipv6.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-unix.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd-unix.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-nbd.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd-auth.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd-auth.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd-ceph-env.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd-ceph-env.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd-ipv6.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd-ipv6.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-rbd.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-sheepdog.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-drive-network-sheepdog.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-floppy.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-floppy.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-many.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-many.xml
rename tests/{qemuxml2argvdata/qemuxml2argv-disk-usb.args => qemuargv2xmldata/qemuargv2xml-disk-usb.args} (100%)
rename tests/{qemuxml2argvdata/qemuxml2argv-disk-usb.xml => qemuargv2xmldata/qemuargv2xml-disk-usb.xml} (100%)
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-virtio.args
rename tests/{qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror.xml => qemuargv2xmldata/qemuargv2xml-disk-virtio.xml} (88%)
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-xenvbd.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-disk-xenvbd.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-sdl-fullscreen.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-sdl-fullscreen.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-sdl.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-sdl.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-policy.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-policy.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-sasl.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-sasl.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-socket.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-socket.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-tls.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-tls.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-websocket.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc-websocket.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-graphics-vnc.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hostdev-pci-address.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hostdev-pci-address.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hostdev-usb-address.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hostdev-usb-address.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hyperv-panic.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hyperv-panic.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hyperv.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-hyperv.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-input-usbmouse.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-input-usbmouse.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-input-usbtablet.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-input-usbtablet.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-kvm-features.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-kvm-features.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-kvmclock.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-kvmclock.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-aeskeywrap-off-argv.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-aeskeywrap-off-argv.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-aeskeywrap-on-argv.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-aeskeywrap-on-argv.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-core-off.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-core-off.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-core-on.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-core-on.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-deakeywrap-off-argv.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-deakeywrap-off-argv.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-deakeywrap-on-argv.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-deakeywrap-on-argv.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-machine-keywrap-none-argv.args
rename tests/{qemuxml2argvdata/qemuxml2argv-minimal-s390.xml => qemuargv2xmldata/qemuargv2xml-machine-keywrap-none-argv.xml} (53%)
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-migrate.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-migrate.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-acpi.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-acpi.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-disable-s3.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-disable-s3.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-disable-suspends.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-disable-suspends.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-enable-s4.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-enable-s4.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-no-reboot.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-no-reboot.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-uuid.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-misc-uuid.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-eth-ifname.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-eth-ifname.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-eth.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-eth.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-user.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-user.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-virtio.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-net-virtio.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nographics-vga.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nosharepages.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-nosharepages.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-parallel-tcp.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-parallel-tcp.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-pseries-disk.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-pseries-nvram.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-pseries-nvram.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-qemu-ns-no-env.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-qemu-ns-no-env.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-reboot-timeout-disabled.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-reboot-timeout-disabled.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-reboot-timeout-enabled.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-reboot-timeout-enabled.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-restore-v2.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-restore-v2.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-dev.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-dev.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-file.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-file.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-many.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-many.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-pty.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-pty.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-tcp-telnet.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-tcp-telnet.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-tcp.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-tcp.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-udp.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-udp.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-unix.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-unix.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-vc.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-serial-vc.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-smp.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-smp.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-sound.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-sound.xml
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-watchdog.args
create mode 100644 tests/qemuargv2xmldata/qemuargv2xml-watchdog.xml
rename tests/qemuxml2argvdata/{qemuxml2argv-aarch64-mmio-default-pci.args => qemuxml2argv-aarch64-virtio-pci-default.args} (100%)
rename tests/qemuxml2argvdata/{qemuxml2argv-aarch64-mmio-default-pci.xml => qemuxml2argv-aarch64-virtio-pci-default.xml} (100%)
rename tests/qemuxml2argvdata/{qemuxml2argv-aarch64-virtio-pci.args => qemuxml2argv-aarch64-virtio-pci-manual-addresses.args} (100%)
rename tests/qemuxml2argvdata/{qemuxml2argv-aarch64-virtio-pci.xml => qemuxml2argv-aarch64-virtio-pci-manual-addresses.xml} (100%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-usb-nosupport.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-gic.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-gicv3.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-default.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-aarch64-virtio-pci-manual-addresses.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-bios-nvram.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-blkdeviotune.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-blkiotune-device.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-blkiotune.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-cdrom.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-floppy.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-menu-disable.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-menu-enable-with-timeout.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-multi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-network.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-boot-order.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-channel-guestfwd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-channel-virtio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-chardev-label.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-clock-catchup.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-clock-localtime.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-clock-timer-hyperv-rtc.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-clock-utc.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-console-compat.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-console-virtio-many.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-eoi-disabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-eoi-enabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-host-kvmclock.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-host-model-features.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-host-passthrough-features.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-kvmclock.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-numa-disjoint.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cpu-numa-memshared.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cputune-iothreadsched-zeropriority.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cputune-numatune.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cputune-zero-shares.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-cputune.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-active-commit.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-aio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-cdrom-empty.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-cdrom.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-copy_on_read.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-boot-cdrom.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-boot-disk.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-cache-directsync.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-cache-unsafe.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-cache-v2-none.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-cache-v2-wb.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-cache-v2-wt.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-copy-on-read.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-error-policy-enospace.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-error-policy-stop.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-error-policy-wreport-rignore.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-fat.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-fmt-qcow.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-gluster.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-iscsi-auth.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-iscsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-nbd-export.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-nbd-ipv6-export.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-nbd-ipv6.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-nbd-unix.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-nbd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-rbd-auth.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-rbd-ceph-env.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-rbd-ipv6.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-rbd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-drive-network-sheepdog.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-floppy.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-many.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-active.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-mirror-inactive.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-device.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-disk-vpd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-lun-passthrough-sgio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-megasas.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-virtio-scsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-scsi-vscsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-source-pool-mode.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-usb-device.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-virtio-scsi-cmd_per_lun.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-virtio-scsi-ioeventfd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-virtio-scsi-max_sectors.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-virtio-scsi-num_queues.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-virtio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-xenvbd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-encrypted-disk.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-eoi-disabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-eoi-enabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-event_idx.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-floppy-drive-fat.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-listen-network.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-sdl-fullscreen.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-sdl.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-compression.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice-qxl-vga.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-spice.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-vnc-sasl.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-vnc-tls.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-vnc-websocket.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-graphics-vnc.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-pci-address.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-large-unit.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-lsi-iscsi-auth.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-lsi-iscsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-lsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-rawio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-readonly.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-sgio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-shareable.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-virtio-iscsi-auth.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-virtio-iscsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-scsi-virtio-scsi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-usb-address.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-vfio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hugepages-pages.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hugepages-pages2.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hugepages-pages3.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hugepages-shared.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hugepages.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hyperv-off.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hyperv-panic.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hyperv.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-input-usbmouse.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-input-usbtablet.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-interface-driver.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-interface-server.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-iothreads-disk-virtio-ccw.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-iothreads-disk.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-iothreads-ids-partial.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-iothreads-ids.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-iothreads.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-kvm-features-off.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-kvm-features.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-kvmclock.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-lease.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-machine-core-off.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-machine-core-on.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-memory-hotplug-dimm.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-memory-hotplug-nonuma.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-memory-hotplug.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-migrate.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-minimal.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-misc-acpi.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-misc-disable-s3.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-misc-disable-suspends.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-misc-enable-s4.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-misc-no-reboot.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-misc-uuid.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-bandwidth.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-bandwidth2.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-eth-ifname.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-eth.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-hostdev-vfio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-hostdev.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-midonet.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-openvswitch.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-udp.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-user.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-vhostuser.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-virtio-device.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-virtio-disable-offloads.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-virtio-network-portgroup.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-net-virtio.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-nographics-vga.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-nosharepages.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-numad-static-vcpu-no-numatune.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-numatune-memnode-no-memory.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-panic-double.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-panic-isa.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-panic-no-address.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-panic-pseries.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-parallel-tcp.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-bridge.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-rom.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pci-serial-dev-chardev.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pcie-root-port.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pcie-switch-downstream-port.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pcie-switch-upstream-port.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pcihole64-none.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pcihole64-q35.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pcihole64.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pmu-feature-off.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-nvram.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pv-spinlock-disabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-pv-spinlock-enabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-qemu-ns-no-env.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-reboot-timeout-disabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-reboot-timeout-enabled.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-restore-v2.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-dac-none.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-device-multiple.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-dynamic-baselabel.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-dynamic-none.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-dynamic-override.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-static-labelskip.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-seclabel-static.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-dev.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-file.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-many.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-pty.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-spiceport-nospice.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-spiceport.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-tcp-telnet.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-tcp.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-udp.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-unix.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-serial-vc.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-shmem.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios-multiple-type2.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-smp.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-sound-device.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-sound.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-tap-vhost.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-tpm-passthrough.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-usb-redir.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-vcpu-placement-static.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-vhost_queues.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-video-virtio-gpu-device.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-video-virtio-gpu-virgl.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-input-passthrough.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-input.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-lun.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-rng-egd.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-virtio-rng-random.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-watchdog.xml
--
2.5.0
3
22
09 Feb '16
Add API to read and write domain/devices/hostdev nodes. This patch only
adds the baseclass and hence is not useful on it's own. A more specific
subclass to represent PCI devices will be added in a following patch.
---
libvirt-gconfig/Makefile.am | 2 +
.../libvirt-gconfig-domain-device-private.h | 3 +
libvirt-gconfig/libvirt-gconfig-domain-device.c | 2 +-
libvirt-gconfig/libvirt-gconfig-domain-hostdev.c | 180 +++++++++++++++++++++
libvirt-gconfig/libvirt-gconfig-domain-hostdev.h | 76 +++++++++
libvirt-gconfig/libvirt-gconfig.h | 1 +
libvirt-gconfig/libvirt-gconfig.sym | 11 ++
7 files changed, 274 insertions(+), 1 deletion(-)
create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-hostdev.c
create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-hostdev.h
diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am
index 77b2032..4294bab 100644
--- a/libvirt-gconfig/Makefile.am
+++ b/libvirt-gconfig/Makefile.am
@@ -50,6 +50,7 @@ GCONFIG_HEADER_FILES = \
libvirt-gconfig-domain-graphics-sdl.h \
libvirt-gconfig-domain-graphics-spice.h \
libvirt-gconfig-domain-graphics-vnc.h \
+ libvirt-gconfig-domain-hostdev.h \
libvirt-gconfig-domain-input.h \
libvirt-gconfig-domain-interface.h \
libvirt-gconfig-domain-interface-bridge.h \
@@ -141,6 +142,7 @@ GCONFIG_SOURCE_FILES = \
libvirt-gconfig-domain-graphics-sdl.c \
libvirt-gconfig-domain-graphics-spice.c \
libvirt-gconfig-domain-graphics-vnc.c \
+ libvirt-gconfig-domain-hostdev.c \
libvirt-gconfig-domain-input.c \
libvirt-gconfig-domain-interface.c \
libvirt-gconfig-domain-interface-bridge.c \
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-device-private.h b/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
index 062c0e2..c45e1df 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-device-private.h
@@ -43,6 +43,9 @@ GVirConfigDomainDevice *
gvir_config_domain_graphics_new_from_tree(GVirConfigXmlDoc *doc,
xmlNodePtr tree);
GVirConfigDomainDevice *
+gvir_config_domain_hostdev_new_from_tree(GVirConfigXmlDoc *doc,
+ xmlNodePtr tree);
+GVirConfigDomainDevice *
gvir_config_domain_interface_new_from_tree(GVirConfigXmlDoc *doc,
xmlNodePtr tree);
GVirConfigDomainDevice *
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-device.c b/libvirt-gconfig/libvirt-gconfig-domain-device.c
index 3d2b9b3..8a75cea 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-device.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-device.c
@@ -66,7 +66,7 @@ gvir_config_domain_device_new_from_tree(GVirConfigXmlDoc *doc,
} else if (xmlStrEqual(tree->name, (xmlChar*)"lease")) {
goto unimplemented;
} else if (xmlStrEqual(tree->name, (xmlChar*)"hostdev")) {
- goto unimplemented;
+ return gvir_config_domain_hostdev_new_from_tree(doc, tree);
} else if (xmlStrEqual(tree->name, (xmlChar*)"redirdev")) {
type = GVIR_CONFIG_TYPE_DOMAIN_REDIRDEV;
} else if (xmlStrEqual(tree->name, (xmlChar*)"smartcard")) {
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-hostdev.c b/libvirt-gconfig/libvirt-gconfig-domain-hostdev.c
new file mode 100644
index 0000000..42eb184
--- /dev/null
+++ b/libvirt-gconfig/libvirt-gconfig-domain-hostdev.c
@@ -0,0 +1,180 @@
+/*
+ * libvirt-gconfig-domain-hostdev.c: libvirt domain hostdev configuration
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors: Zeeshan Ali (Khattak) <zeeshanak(a)gnome.org>
+ * Christophe Fergeau <cfergeau(a)redhat.com>
+ */
+
+#include <config.h>
+
+#include "libvirt-gconfig/libvirt-gconfig.h"
+#include "libvirt-gconfig/libvirt-gconfig-private.h"
+
+#define GVIR_CONFIG_DOMAIN_HOSTDEV_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV, GVirConfigDomainHostdevPrivate))
+
+struct _GVirConfigDomainHostdevPrivate
+{
+ gboolean unused;
+};
+
+G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainHostdev, gvir_config_domain_hostdev, GVIR_CONFIG_TYPE_DOMAIN_DEVICE);
+
+
+static void gvir_config_domain_hostdev_class_init(GVirConfigDomainHostdevClass *klass)
+{
+ g_type_class_add_private(klass, sizeof(GVirConfigDomainHostdevPrivate));
+}
+
+
+static void gvir_config_domain_hostdev_init(GVirConfigDomainHostdev *hostdev)
+{
+ hostdev->priv = GVIR_CONFIG_DOMAIN_HOSTDEV_GET_PRIVATE(hostdev);
+}
+
+G_GNUC_INTERNAL GVirConfigDomainDevice *
+gvir_config_domain_hostdev_new_from_tree(GVirConfigXmlDoc *doc,
+ xmlNodePtr tree)
+{
+ const char *type;
+ GType gtype;
+
+ type = gvir_config_xml_get_attribute_content(tree, "type");
+ if (type == NULL)
+ return NULL;
+
+ if (g_str_equal(type, "usb")) {
+ goto unimplemented;
+ } else if (g_str_equal(type, "pci")) {
+ goto unimplemented;
+ } else if (g_str_equal(type, "scsi")) {
+ goto unimplemented;
+ } else {
+ g_debug("Unknown domain hostdev node: %s", type);
+ return NULL;
+ }
+
+ return GVIR_CONFIG_DOMAIN_DEVICE(gvir_config_object_new_from_tree(gtype, doc, NULL, tree));
+
+unimplemented:
+ g_debug("Parsing of '%s' domain hostdev nodes is unimplemented", type);
+ return NULL;
+}
+
+void gvir_config_domain_hostdev_set_boot_order(GVirConfigDomainHostdev *hostdev,
+ gint order)
+{
+ g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_HOSTDEV(hostdev));
+
+ if (order >= 0) {
+ char *order_str = g_strdup_printf("%u", order);
+
+ gvir_config_object_replace_child_with_attribute(GVIR_CONFIG_OBJECT(hostdev),
+ "boot",
+ "order",
+ order_str);
+ g_free(order_str);
+ } else {
+ gvir_config_object_delete_child(GVIR_CONFIG_OBJECT(hostdev),
+ "boot",
+ NULL);
+ }
+}
+
+gint gvir_config_domain_hostdev_get_boot_order(GVirConfigDomainHostdev *hostdev)
+{
+ xmlNodePtr hostdev_node;
+ xmlNodePtr boot_node;
+ const char *order_str;
+ char *end;
+ guint order;
+
+ g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_HOSTDEV(hostdev), -1);
+
+ hostdev_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(hostdev));
+ g_return_val_if_fail(hostdev_node != NULL, -1);
+
+ boot_node = gvir_config_xml_get_element(hostdev_node, "boot", NULL);
+ if (boot_node == NULL)
+ return -1;
+
+ order_str = gvir_config_xml_get_attribute_content(boot_node, "order");
+ g_return_val_if_fail(order_str != NULL, -1);
+
+ order = strtoul(order_str, &end, 0);
+ g_return_val_if_fail(*end == '\0', -1);
+
+ return order;
+}
+
+void gvir_config_domain_hostdev_set_readonly(GVirConfigDomainHostdev *hostdev,
+ gboolean readonly)
+{
+ g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_HOSTDEV(hostdev));
+
+ if (readonly) {
+ GVirConfigObject *node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(hostdev), "readonly");
+ g_object_unref(node);
+ } else {
+ gvir_config_object_delete_child(GVIR_CONFIG_OBJECT(hostdev), "readonly", NULL);
+ }
+}
+
+gboolean gvir_config_domain_hostdev_get_readonly(GVirConfigDomainHostdev *hostdev)
+{
+ xmlNodePtr hostdev_node;
+ xmlNodePtr ro_node;
+
+ g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_HOSTDEV(hostdev), FALSE);
+
+ hostdev_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(hostdev));
+ g_return_val_if_fail(hostdev_node != NULL, FALSE);
+
+ ro_node = gvir_config_xml_get_element(hostdev_node, "readonly", NULL);
+
+ return (ro_node != NULL);
+}
+
+void gvir_config_domain_hostdev_set_shareable(GVirConfigDomainHostdev *hostdev,
+ gboolean shareable)
+{
+ g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_HOSTDEV(hostdev));
+
+ if (shareable) {
+ GVirConfigObject *node = gvir_config_object_replace_child(GVIR_CONFIG_OBJECT(hostdev), "shareable");
+ g_object_unref(node);
+ } else {
+ gvir_config_object_delete_child(GVIR_CONFIG_OBJECT(hostdev), "shareable", NULL);
+ }
+}
+
+gboolean gvir_config_domain_hostdev_get_shareable(GVirConfigDomainHostdev *hostdev)
+{
+ xmlNodePtr hostdev_node;
+ xmlNodePtr shareable_node;
+
+ g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_HOSTDEV(hostdev), FALSE);
+
+ hostdev_node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(hostdev));
+ g_return_val_if_fail(hostdev_node != NULL, FALSE);
+
+ shareable_node = gvir_config_xml_get_element(hostdev_node, "shareable", NULL);
+
+ return (shareable_node != NULL);
+}
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-hostdev.h b/libvirt-gconfig/libvirt-gconfig-domain-hostdev.h
new file mode 100644
index 0000000..b26100f
--- /dev/null
+++ b/libvirt-gconfig/libvirt-gconfig-domain-hostdev.h
@@ -0,0 +1,76 @@
+/*
+ * libvirt-gconfig-domain-hostdev.h: libvirt domain hostdev configuration
+ *
+ * Copyright (C) 2012 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * Authors: Zeeshan Ali (Khattak) <zeeshanak(a)gnome.org>
+ * Christophe Fergeau <cfergeau(a)redhat.com>
+ */
+
+#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD)
+#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly."
+#endif
+
+#ifndef __LIBVIRT_GCONFIG_DOMAIN_HOSTDEV_H__
+#define __LIBVIRT_GCONFIG_DOMAIN_HOSTDEV_H__
+
+G_BEGIN_DECLS
+
+#define GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV (gvir_config_domain_hostdev_get_type ())
+#define GVIR_CONFIG_DOMAIN_HOSTDEV(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV, GVirConfigDomainHostdev))
+#define GVIR_CONFIG_DOMAIN_HOSTDEV_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV, GVirConfigDomainHostdevClass))
+#define GVIR_CONFIG_IS_DOMAIN_HOSTDEV(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV))
+#define GVIR_CONFIG_IS_DOMAIN_HOSTDEV_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV))
+#define GVIR_CONFIG_DOMAIN_HOSTDEV_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_HOSTDEV, GVirConfigDomainHostdevClass))
+
+typedef struct _GVirConfigDomainHostdev GVirConfigDomainHostdev;
+typedef struct _GVirConfigDomainHostdevPrivate GVirConfigDomainHostdevPrivate;
+typedef struct _GVirConfigDomainHostdevClass GVirConfigDomainHostdevClass;
+
+struct _GVirConfigDomainHostdev
+{
+ GVirConfigDomainDevice parent;
+
+ GVirConfigDomainHostdevPrivate *priv;
+
+ /* Do not add fields to this struct */
+};
+
+struct _GVirConfigDomainHostdevClass
+{
+ GVirConfigDomainDeviceClass parent_class;
+
+ gpointer padding[20];
+};
+
+GType gvir_config_domain_hostdev_get_type(void);
+
+void gvir_config_domain_hostdev_set_boot_order(GVirConfigDomainHostdev *hostdev,
+ gint order);
+gint gvir_config_domain_hostdev_get_boot_order(GVirConfigDomainHostdev *hostdev);
+
+void gvir_config_domain_hostdev_set_readonly(GVirConfigDomainHostdev *hostdev,
+ gboolean readonly);
+gboolean gvir_config_domain_hostdev_get_readonly(GVirConfigDomainHostdev *hostdev);
+
+void gvir_config_domain_hostdev_set_shareable(GVirConfigDomainHostdev *hostdev,
+ gboolean shareable);
+gboolean gvir_config_domain_hostdev_get_shareable(GVirConfigDomainHostdev *hostdev);
+
+G_END_DECLS
+
+#endif /* __LIBVIRT_GCONFIG_DOMAIN_HOSTDEV_H__ */
diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h
index 4624003..cfa9dd3 100644
--- a/libvirt-gconfig/libvirt-gconfig.h
+++ b/libvirt-gconfig/libvirt-gconfig.h
@@ -67,6 +67,7 @@
#include <libvirt-gconfig/libvirt-gconfig-domain-graphics-sdl.h>
#include <libvirt-gconfig/libvirt-gconfig-domain-graphics-spice.h>
#include <libvirt-gconfig/libvirt-gconfig-domain-graphics-vnc.h>
+#include <libvirt-gconfig/libvirt-gconfig-domain-hostdev.h>
#include <libvirt-gconfig/libvirt-gconfig-domain-input.h>
#include <libvirt-gconfig/libvirt-gconfig-domain-interface.h>
#include <libvirt-gconfig/libvirt-gconfig-domain-interface-bridge.h>
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
index 89dd589..0a12ce4 100644
--- a/libvirt-gconfig/libvirt-gconfig.sym
+++ b/libvirt-gconfig/libvirt-gconfig.sym
@@ -733,4 +733,15 @@ global:
gvir_config_domain_video_set_vgamem;
} LIBVIRT_GCONFIG_0.2.1;
+LIBVIRT_GCONFIG_0.2.3 {
+global:
+ gvir_config_domain_hostdev_get_boot_order;
+ gvir_config_domain_hostdev_get_readonly;
+ gvir_config_domain_hostdev_get_shareable;
+ gvir_config_domain_hostdev_get_type;
+ gvir_config_domain_hostdev_set_boot_order;
+ gvir_config_domain_hostdev_set_readonly;
+ gvir_config_domain_hostdev_set_shareable;
+} LIBVIRT_GCONFIG_0.2.2;
+
# .... define new API here using predicted next version number ....
--
2.5.0
2
9
** NOT TO BE MERGED UPSTREAM **
This is merely an RFC.
What's the problem?
We have APIs for transferring disk images from/to host. Problem is, disk images
can be sparse files. Our code is, however, unaware of that fact so if for
instance the disk is one big hole of 8GB all those bytes have to: a) be read b)
come through our event loop. This is obviously very inefficient way.
How to deal with it?
The way I propose (and this is actually what I like you to comment on) is to
invent set of new API. We need to make read from and write to a stream
sparseness aware. The new APIs are as follows:
int virStreamSendOffset(virStreamPtr stream,
unsigned long long offset,
const char *data,
size_t nbytes);
int virStreamRecvOffset(virStreamPtr stream,
unsigned long long *offset,
char *data,
size_t nbytes);
The SendOffset() is fairly simple. It is given an offset to write @data from so
it basically lseek() to @offset and write() data.
The RecvOffset() has slightly complicated design - it has to be aware of the
fact that @offset it is required to read from fall into a hole. If that's the
case it sets @offset to new location where data starts.
Are there other ways possible?
Sure! If you have any specific in mind I am happy to discuss it. For instance
one idea I've heard (from Martin) was instead of SendOffset() and RecvOffset()
we may just invent our variant of lseek().
What's left to be done?
Basically, I still don't have RPC implementation. But before I dive into that I
thought of sharing my approach with you - because it may turn out that a
different approach is going to be needed and thus my work would render useless.
Is there any bug attached?
You can bet! https://bugzilla.redhat.com/show_bug.cgi?id=1282859
Michal Privoznik (8):
fdstream: Realign
Introduce virStream{Recv,Send}Offset
Introduce VIR_STREAM_SPARSE flag
fdstream: Implement virStreamSendOffset
fdstream: Implement virStreamRecvOffset
fdstreamtest: switch from boolean array to @flags
fdstreamtest: Test virStreamRecvOffset
fdstreamtest: test virStreamSendOffset
include/libvirt/libvirt-stream.h | 9 +++
src/driver-stream.h | 13 ++++
src/fdstream.c | 150 +++++++++++++++++++++++++++++++++++----
src/internal.h | 20 ++++++
src/libvirt-stream.c | 119 +++++++++++++++++++++++++++++++
src/libvirt_public.syms | 6 ++
tests/fdstreamtest.c | 116 ++++++++++++++++++++++++------
7 files changed, 397 insertions(+), 36 deletions(-)
--
2.4.10
4
14
[libvirt] [PATCH] rbd: Allow shrinking and deltas when resizing RBD volumes
by Wido den Hollander 06 Feb '16
by Wido den Hollander 06 Feb '16
06 Feb '16
Modify virCheckFlags that it accepts both VIR_STORAGE_VOL_RESIZE_DELTA
and VIR_STORAGE_VOL_RESIZE_SHRINK as valid flags for resizing RBD
volumes.
This still does not solve the problem where RBD volumes can't be
shrinked using libvirt. The allocation and capacity of RBD volumes
are equal for a RBD volume and this makes libvirt think the volume
is fully allocated and therefor can't be shrinked.
Signed-off-by: Wido den Hollander <wido(a)widodh.nl>
---
src/storage/storage_backend_rbd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c
index 80a1d33..88b613a 100644
--- a/src/storage/storage_backend_rbd.c
+++ b/src/storage/storage_backend_rbd.c
@@ -1041,7 +1041,8 @@ static int virStorageBackendRBDResizeVol(virConnectPtr conn ATTRIBUTE_UNUSED,
int ret = -1;
int r = 0;
- virCheckFlags(0, -1);
+ virCheckFlags(VIR_STORAGE_VOL_RESIZE_DELTA |
+ VIR_STORAGE_VOL_RESIZE_SHRINK, -1);
if (virStorageBackendRBDOpenRADOSConn(&ptr, conn, &pool->def->source) < 0)
goto cleanup;
--
1.9.1
3
6
Hey,
This series adds support for p2p migration: Patch 2 and 3
are new in this series and it's purpose is to take the
LIBXL_JOB_MODIFY as mentioned in the last review.
Changelog in individual patches.
Thanks,
Joao
Joao Martins (3):
libxl: add p2p migration
libxl: move begin phase job handling
libxl: begin job on perform phase
src/libxl/libxl_driver.c | 36 +++++++-
src/libxl/libxl_migration.c | 219 +++++++++++++++++++++++++++++++++++++++++---
src/libxl/libxl_migration.h | 11 +++
3 files changed, 250 insertions(+), 16 deletions(-)
--
2.1.4
2
11
ZFS-on-Linux implementation of ZFS starting with version 0.6.4
contains all the features we use, so there's no reason to limit
libvirt ZFS storage backend to FreeBSD only.
There's still one difference between these implementations: ZFS on
FreeBSD requires to set 'volmode' option to 'dev' when creating
volumes, while ZFS-on-Linux does not need that.
Handle it by checking if 'volmode' option is needed by parsing usage
information of the 'zfs get' command.
---
configure.ac | 8 ------
src/storage/storage_backend_zfs.c | 51 +++++++++++++++++++++++++++++++++++++--
2 files changed, 49 insertions(+), 10 deletions(-)
diff --git a/configure.ac b/configure.ac
index a566f5b..d768341 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2005,14 +2005,6 @@ if test "$with_storage_gluster" = "yes"; then
fi
AM_CONDITIONAL([WITH_STORAGE_GLUSTER], [test "$with_storage_gluster" = "yes"])
-if test "$with_storage_zfs" = "check"; then
- with_storage_zfs=$with_freebsd
-fi
-
-if test "$with_storage_zfs" = "yes" && test "$with_freebsd" = "no"; then
- AC_MSG_ERROR([The ZFS storage driver can be enabled on FreeBSD only.])
-fi
-
if test "$with_storage_zfs" = "yes" ||
test "$with_storage_zfs" = "check"; then
AC_PATH_PROG([ZFS], [zfs], [], [$PATH:/sbin:/usr/sbin])
diff --git a/src/storage/storage_backend_zfs.c b/src/storage/storage_backend_zfs.c
index cb2662a..6bf7963 100644
--- a/src/storage/storage_backend_zfs.c
+++ b/src/storage/storage_backend_zfs.c
@@ -39,6 +39,47 @@ VIR_LOG_INIT("storage.storage_backend_zfs");
* for size, show just a number instead of 2G etc
*/
+/**
+ * virStorageBackendZFSVolModeNeeded:
+ *
+ * Checks if it's necessary to specify 'volmode' (i.e. that
+ * we're working with BSD ZFS implementation).
+ *
+ * Returns 1 if 'volmode' is need, 0 if not needed, -1 on error
+ */
+static int
+virStorageBackendZFSVolModeNeeded(void)
+{
+ virCommandPtr cmd = NULL;
+ int ret = -1, exit = -1;
+ char *error = NULL;
+
+ /* 'zfs get' without arguments prints out
+ * usage information to stderr, including
+ * list of supported options, and exits with
+ * exit code 2
+ */
+ cmd = virCommandNewArgList(ZFS, "get", NULL);
+ virCommandAddEnvString(cmd, "LC_ALL=C");
+ virCommandSetErrorBuffer(cmd, &error);
+
+ ret = virCommandRun(cmd, &exit);
+ if ((ret < 0) || (exit != 2)) {
+ VIR_WARN("Command 'zfs get' either failed "
+ "to run or exited with unexpected status");
+ goto cleanup;
+ }
+
+ if (strstr(error, " volmode "))
+ ret = 1;
+ else
+ ret = 0;
+
+ cleanup:
+ virCommandFree(cmd);
+ VIR_FREE(error);
+ return ret;
+}
static int
virStorageBackendZFSCheckPool(virStoragePoolObjPtr pool ATTRIBUTE_UNUSED,
@@ -258,6 +299,7 @@ virStorageBackendZFSCreateVol(virConnectPtr conn ATTRIBUTE_UNUSED,
{
virCommandPtr cmd = NULL;
int ret = -1;
+ int volmode_needed = -1;
vol->type = VIR_STORAGE_VOL_BLOCK;
@@ -273,6 +315,9 @@ virStorageBackendZFSCreateVol(virConnectPtr conn ATTRIBUTE_UNUSED,
if (VIR_STRDUP(vol->key, vol->target.path) < 0)
goto cleanup;
+ volmode_needed = virStorageBackendZFSVolModeNeeded();
+ if (volmode_needed < 0)
+ goto cleanup;
/**
* $ zfs create -o volmode=dev -V 10240K test/volname
*
@@ -281,8 +326,10 @@ virStorageBackendZFSCreateVol(virConnectPtr conn ATTRIBUTE_UNUSED,
* will lookup vfs.zfs.vol.mode sysctl value
* -V -- tells to create a volume with the specified size
*/
- cmd = virCommandNewArgList(ZFS, "create", "-o", "volmode=dev",
- "-V", NULL);
+ cmd = virCommandNewArgList(ZFS, "create", NULL);
+ if (volmode_needed)
+ virCommandAddArgList(cmd, "-o", "volmode=dev", NULL);
+ virCommandAddArg(cmd, "-V");
virCommandAddArgFormat(cmd, "%lluK",
VIR_DIV_UP(vol->target.capacity, 1024));
virCommandAddArgFormat(cmd, "%s/%s",
--
1.9.1
2
7
[libvirt] virStream: this function is not supported by the connection driver
by Wido den Hollander 03 Feb '16
by Wido den Hollander 03 Feb '16
03 Feb '16
Hi,
I'm trying to implement the volUpload and volDownload functions for the
RBD storage driver but I keep getting this:
2016-01-30 18:56:11.675+0000: 6447: debug :
virStorageBackendRBDVolDownload:1395 : Read 4096 bytes at offset 0 from
RBD image libvirt/wido1
2016-01-30 18:56:11.675+0000: 6447: debug : virStreamSend:168 :
stream=0x7fe780000930, data=0x7fe780062df0, nbytes=4096
2016-01-30 18:56:11.675+0000: 6447: error : virStreamSend:186 : this
function is not supported by the connection driver: virStreamSend
I reference to the stream with virStreamRef(stream); and then I use
virStreamSend() to write data to the stream, but that fails.
I've looked through the source and couldn't find anything what might be
the issue.
Libvirt is running locally on my system and I'm using qemu:///system to
connect locally with virsh.
Do I need to initialize the stream in any way before I can write data to it?
Wido
3
5
03 Feb '16
Hey,
Back in the pre 1.3.0 release [0] we had a regression when migrating
domains in libxl (introduced by the reverted commit d2e5538b1).
The chosen solution to address this problem was to introduce a
capability to be used by the virDomainNetDefFormat() and
virDomainNetDefParseXML() routines. This series implements this,
and I would ask if it's in line with what you had in mind by
exposing as a hypervisor capability?
For the purposes of RFC and compability with other drivers I left
the hardcoded checking of VIR_NET_GENERATED_PREFIX plus checking a
prefix registered by the driver.
Having this series and the reverted commit applied, I can
successfully migrate a domain without seeing the same interface
name on both source and destination node.
Thoughts?
Thanks!
Joao
[0] https://www.redhat.com/archives/libvir-list/2015-December/msg00279.html
Joao Martins (2):
conf: add net device prefix to capabilities
libxl: set net device prefix
src/conf/capabilities.c | 21 +++++++++++++++++++++
src/conf/capabilities.h | 4 ++++
src/conf/domain_conf.c | 20 +++++++++++++++-----
src/conf/domain_conf.h | 2 ++
src/libvirt_private.syms | 1 +
src/libxl/libxl_conf.c | 3 +++
src/libxl/libxl_conf.h | 4 ++++
src/network/bridge_driver.c | 2 +-
8 files changed, 51 insertions(+), 6 deletions(-)
--
2.1.4
2
6