[libvirt] [libvirt-glib] Keep domain devices list sorted
by Zeeshan Ali (Khattak)
From: "Zeeshan Ali (Khattak)" <zeeshanak(a)gnome.org>
While we don't guarantee the order of devices in the list returned from
gvir_domain_get_devices(), its not a bad idea to keep them sorted the
same way we get them from configuration (XML).
---
libvirt-gobject/libvirt-gobject-domain.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/libvirt-gobject/libvirt-gobject-domain.c b/libvirt-gobject/libvirt-gobject-domain.c
index 7b2c7ad..0bafa7e 100644
--- a/libvirt-gobject/libvirt-gobject-domain.c
+++ b/libvirt-gobject/libvirt-gobject-domain.c
@@ -909,5 +909,5 @@ GList *gvir_domain_get_devices(GVirDomain *domain,
}
g_list_free (config_devices);
- return ret;
+ return g_list_reverse (ret);
}
--
1.7.7.6
12 years, 8 months
[libvirt] [PATCH] rpc: Fix VPATH building issue
by Guannan Ren
The XDR routine .c file generated by rpcgen includes the corresponding
Header file. however, the path in include directive of the header file
is picked up based on the path of .x file. In the situation of VPATH Builds
it will include full path of the header file rather than relative path. Hence,
the error happens when compiling time
For example: The libvirt source code resides in /home/testuser,
I make dist in /tmp/buildvpath, the XDR routine .c file will
include full path of the header file like:
#include "/home/testuser/src/rpc/virnetprotocol.h"
#include "internal.h"
#include <arpa/inet.h>
If we distribute the tarball to another machine to compile,
it will report error as follows:
rpc/virnetprotocol.c:7:59: fatal error:
/home/testuser/src/rpc/virnetprotocol.h: No such file or directory
---
src/Makefile.am | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index e57eca2..6c9f598 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -662,12 +662,18 @@ $(srcdir)/remote/remote_driver.c: $(REMOTE_DRIVER_GENERATED)
endif WITH_REMOTE
%protocol.c: %protocol.x %protocol.h $(srcdir)/rpc/genprotocol.pl
- $(AM_V_GEN)perl -w $(srcdir)/rpc/genprotocol.pl $(RPCGEN) -c \
- $< $@
+ $(AM_V_GEN)protocolx='$<'; \
+ protocolc='$@'; \
+ cd $(srcdir); \
+ perl -w $(srcdir)/rpc/genprotocol.pl $(RPCGEN) -c \
+ $${protocolx/'$(srcdir)/'/''} $${protocolc/'$(srcdir)/'/''}
%protocol.h: %protocol.x $(srcdir)/rpc/genprotocol.pl
- $(AM_V_GEN)perl -w $(srcdir)/rpc/genprotocol.pl $(RPCGEN) -h \
- $< $@
+ $(AM_V_GEN)protocolx='$<'; \
+ protocolh='$@'; \
+ cd $(srcdir); \
+ perl -w $(srcdir)/rpc/genprotocol.pl $(RPCGEN) -h \
+ $${protocolx/'$(srcdir)/'/''} $${protocolh/'$(srcdir)/'/''}
if WITH_XEN
if WITH_DRIVER_MODULES
--
1.7.7.5
12 years, 8 months
[libvirt] [PATCH] xml: Clean up schemas to use shared data types instead of local
by Peter Krempa
The schema files contained duplicate data types that can be shared from
the basictypes.rng file.
---
docs/schemas/capability.rng | 43 +++++----------------------------
docs/schemas/interface.rng | 16 ++++--------
docs/schemas/nodedev.rng | 54 +++++++++++++++---------------------------
docs/schemas/nwfilter.rng | 28 +---------------------
4 files changed, 32 insertions(+), 109 deletions(-)
diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng
index 3af95e9..06ff685 100644
--- a/docs/schemas/capability.rng
+++ b/docs/schemas/capability.rng
@@ -1,6 +1,7 @@
<!-- A Relax NG schema for the libvirt capabilities XML format -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href='basictypes.rng'/>
<start>
<ref name='capabilities'/>
</start>
@@ -157,7 +158,7 @@
<element name='topology'>
<element name='cells'>
<attribute name='num'>
- <ref name='uint'/>
+ <ref name='unsignedInt'/>
</attribute>
<oneOrMore>
<ref name='cell'/>
@@ -169,13 +170,13 @@
<define name='cell'>
<element name='cell'>
<attribute name='id'>
- <ref name='uint'/>
+ <ref name='unsignedInt'/>
</attribute>
<optional>
<element name='cpus'>
<attribute name='num'>
- <ref name='uint'/>
+ <ref name='unsignedInt'/>
</attribute>
<oneOrMore>
<ref name='cpu'/>
@@ -188,7 +189,7 @@
<define name='cpu'>
<element name='cpu'>
<attribute name='id'>
- <ref name='uint'/>
+ <ref name='unsignedInt'/>
</attribute>
</element>
</define>
@@ -238,13 +239,13 @@
<define name='emulator'>
<element name='emulator'>
- <ref name='path'/>
+ <ref name='absFilePath'/>
</element>
</define>
<define name='loader'>
<element name='loader'>
- <ref name='path'/>
+ <ref name='absFilePath'/>
</element>
</define>
@@ -367,39 +368,9 @@
</choice>
</define>
-
- <define name='positiveInteger'>
- <data type='positiveInteger'>
- <param name="pattern">[0-9]+</param>
- </data>
- </define>
-
- <define name='uint'>
- <data type='unsignedInt'>
- <param name="pattern">[0-9]+</param>
- </data>
- </define>
-
- <define name='path'>
- <data type='string'>
- <param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
- </data>
- </define>
-
<define name='featureName'>
<data type='string'>
<param name='pattern'>[a-zA-Z0-9\-_]+</param>
</data>
</define>
-
- <define name="UUID">
- <choice>
- <data type="string">
- <param name="pattern">[a-fA-F0-9]{32}</param>
- </data>
- <data type="string">
- <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
- </data>
- </choice>
- </define>
</grammar>
diff --git a/docs/schemas/interface.rng b/docs/schemas/interface.rng
index 53fa18a..3984b63 100644
--- a/docs/schemas/interface.rng
+++ b/docs/schemas/interface.rng
@@ -183,12 +183,12 @@
<choice>
<element name="miimon">
<!-- miimon frequency in ms -->
- <attribute name="freq"><ref name="uint"/></attribute>
+ <attribute name="freq"><ref name="unsignedInt"/></attribute>
<optional>
- <attribute name="downdelay"><ref name="uint"/></attribute>
+ <attribute name="downdelay"><ref name="unsignedInt"/></attribute>
</optional>
<optional>
- <attribute name="updelay"><ref name="uint"/></attribute>
+ <attribute name="updelay"><ref name="unsignedInt"/></attribute>
</optional>
<optional>
<!-- use_carrier -->
@@ -203,7 +203,7 @@
</optional>
</element>
<element name="arpmon">
- <attribute name="interval"><ref name="uint"/></attribute>
+ <attribute name="interval"><ref name="unsignedInt"/></attribute>
<attribute name="target"><ref name="ipv4Addr"/></attribute>
<optional>
<attribute name="validate">
@@ -252,7 +252,7 @@
<define name="mtu">
<optional>
<element name="mtu">
- <attribute name="size"><ref name="uint"/></attribute>
+ <attribute name="size"><ref name="unsignedInt"/></attribute>
</element>
</optional>
</define>
@@ -407,12 +407,6 @@
<!-- Type library -->
- <define name='uint'>
- <data type='unsignedInt'>
- <param name="pattern">[0-9]+</param>
- </data>
- </define>
-
<define name="timeval">
<data type="double">
<param name="minInclusive">0</param>
diff --git a/docs/schemas/nodedev.rng b/docs/schemas/nodedev.rng
index 1b9a2d1..a73c2e5 100644
--- a/docs/schemas/nodedev.rng
+++ b/docs/schemas/nodedev.rng
@@ -1,6 +1,7 @@
<!-- A Relax NG schema for the libvirt node device XML format -->
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href='basictypes.rng'/>
<start>
<ref name='device'/>
</start>
@@ -56,7 +57,7 @@
</optional>
<element name='uuid'>
- <ref name='uuid'/>
+ <ref name='UUID'/>
</element>
</element>
@@ -80,16 +81,16 @@
</attribute>
<element name='domain'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='bus'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='slot'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='function'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='product'>
@@ -122,10 +123,10 @@
</attribute>
<element name='bus'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='device'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='product'>
@@ -157,16 +158,16 @@
</attribute>
<element name='number'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='class'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='subclass'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='protocol'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<optional>
@@ -252,7 +253,7 @@
</attribute>
<element name='host'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<optional>
@@ -273,16 +274,16 @@
</attribute>
<element name='host'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='bus'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='target'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='lun'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<element name='type'>
@@ -352,7 +353,7 @@
</element>
<element name='media_size'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
<optional>
<element name='media_label'>
@@ -364,27 +365,10 @@
<define name='capstoragefixed'>
<element name='size'>
- <ref name='uint'/>
+ <ref name='unsignedLong'/>
</element>
</define>
- <define name='uuid'>
- <choice>
- <data type='string'>
- <param name="pattern">[a-fA-F0-9]{32}</param>
- </data>
- <data type='string'>
- <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
- </data>
- </choice>
- </define>
-
- <define name='uint'>
- <data type='string'>
- <param name="pattern">[0-9]+</param>
- </data>
- </define>
-
<define name='hexuint'>
<data type='string'>
<param name="pattern">(0x)?[0-9a-f]+</param>
diff --git a/docs/schemas/nwfilter.rng b/docs/schemas/nwfilter.rng
index bce3d3b..13fd9b9 100644
--- a/docs/schemas/nwfilter.rng
+++ b/docs/schemas/nwfilter.rng
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <include href='basictypes.rng'/>
<start>
<ref name="filter"/>
</start>
@@ -799,18 +800,6 @@
<!-- ################ type library ################ -->
- <define name="UUID">
- <choice>
- <data type="string">
- <param name="pattern">[a-fA-F0-9]{32}</param>
- </data>
-
- <data type="string">
- <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
- </data>
- </choice>
- </define>
-
<define name="variable-name-type">
<data type="string">
<param name="pattern">$[a-zA-Z0-9_]+(\[[ ]*[@]?[0-9]+[ ]*\])?</param>
@@ -930,21 +919,6 @@
</choice>
</define>
- <define name="uint8range">
- <choice>
- <ref name="variable-name-type"/>
-
- <data type="string">
- <param name="pattern">0x[0-9a-fA-F]{1,2}</param>
- </data>
-
- <data type="int">
- <param name="minInclusive">0</param>
- <param name="maxInclusive">255</param>
- </data>
- </choice>
- </define>
-
<define name="uint16range">
<choice>
<ref name="variable-name-type"/>
--
1.7.3.4
12 years, 8 months
[libvirt] [PATCH] util: Don't overflow on errno in virFileAccessibleAs
by Michal Privoznik
If we need to virFork() to check assess() under different
UID+GID we need to translate returned status via WEXITSTATUS().
Otherwise, we may return values greater than 255 which is
obviously wrong.
---
src/util/util.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/src/util/util.c b/src/util/util.c
index 548ed1c..15e6cfa 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -724,8 +724,13 @@ virFileAccessibleAs(const char *path, int mode,
return -1;
}
+ if (!WIFEXITED(status)) {
+ errno = EINTR;
+ return -1;
+ }
+
if (status) {
- errno = status;
+ errno = WEXITSTATUS(status);
return -1;
}
--
1.7.8.5
12 years, 8 months
[libvirt] [PATCH] qemu: Fix startupPolicy for snapshot-revert
by Michal Privoznik
Currently, startupPolicy='requisite' was determining cold boot
by migrateForm != NULL. That means, if domain was started up
with migrateForm set we didn't require disk source path and allowed
it to be dropped. However, on snapshot-revert domain wasn't migrated
but according to documentation, requisite should drop disk source
as well.
---
Related BZ: https://bugzilla.redhat.com/show_bug.cgi?id=798938
src/qemu/qemu_driver.c | 16 +++++++++-------
src/qemu/qemu_migration.c | 2 +-
src/qemu/qemu_process.c | 3 ++-
src/qemu/qemu_process.h | 1 +
4 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index ddb381a..b17b52c 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1358,7 +1358,7 @@ static virDomainPtr qemudDomainCreate(virConnectPtr conn, const char *xml,
if (qemuDomainObjBeginJobWithDriver(driver, vm, QEMU_JOB_MODIFY) < 0)
goto cleanup; /* XXXX free the 'vm' we created ? */
- if (qemuProcessStart(conn, driver, vm, NULL,
+ if (qemuProcessStart(conn, driver, vm, NULL, true,
(flags & VIR_DOMAIN_START_PAUSED) != 0,
(flags & VIR_DOMAIN_START_AUTODESTROY) != 0,
-1, NULL, NULL, VIR_NETDEV_VPORT_PROFILE_OP_CREATE) < 0) {
@@ -4107,8 +4107,9 @@ qemuDomainSaveImageStartVM(virConnectPtr conn,
}
/* Set the migration source and start it up. */
- ret = qemuProcessStart(conn, driver, vm, "stdio", true,
- false, *fd, path, NULL, VIR_NETDEV_VPORT_PROFILE_OP_RESTORE);
+ ret = qemuProcessStart(conn, driver, vm, "stdio", false, true,
+ false, *fd, path, NULL,
+ VIR_NETDEV_VPORT_PROFILE_OP_RESTORE);
if (intermediatefd != -1) {
if (ret < 0) {
@@ -4709,8 +4710,9 @@ qemuDomainObjStart(virConnectPtr conn,
}
}
- ret = qemuProcessStart(conn, driver, vm, NULL, start_paused,
- autodestroy, -1, NULL, NULL, VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
+ ret = qemuProcessStart(conn, driver, vm, NULL, true, start_paused,
+ autodestroy, -1, NULL, NULL,
+ VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
virDomainAuditStart(vm, "booted", ret >= 0);
if (ret >= 0) {
virDomainEventPtr event =
@@ -10788,7 +10790,7 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
virDomainObjAssignDef(vm, config, false);
rc = qemuProcessStart(snapshot->domain->conn, driver, vm, NULL,
- true, false, -1, NULL, snap,
+ false, true, false, -1, NULL, snap,
VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
virDomainAuditStart(vm, "from-snapshot", rc >= 0);
detail = VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT;
@@ -10878,7 +10880,7 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
if (event)
qemuDomainEventQueue(driver, event);
rc = qemuProcessStart(snapshot->domain->conn, driver, vm, NULL,
- paused, false, -1, NULL, NULL,
+ false, paused, false, -1, NULL, NULL,
VIR_NETDEV_VPORT_PROFILE_OP_CREATE);
virDomainAuditStart(vm, "from-snapshot", rc >= 0);
if (rc < 0) {
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 77d40c0..92d046a 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -1229,7 +1229,7 @@ qemuMigrationPrepareAny(struct qemud_driver *driver,
/* Start the QEMU daemon, with the same command-line arguments plus
* -incoming $migrateFrom
*/
- if (qemuProcessStart(dconn, driver, vm, migrateFrom, true,
+ if (qemuProcessStart(dconn, driver, vm, migrateFrom, false, true,
true, dataFD[0], NULL, NULL,
VIR_NETDEV_VPORT_PROFILE_OP_MIGRATE_IN_START) < 0) {
virDomainAuditStart(vm, "migrated", false);
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 7b99814..502de89 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3072,6 +3072,7 @@ int qemuProcessStart(virConnectPtr conn,
struct qemud_driver *driver,
virDomainObjPtr vm,
const char *migrateFrom,
+ bool cold_boot,
bool start_paused,
bool autodestroy,
int stdin_fd,
@@ -3227,7 +3228,7 @@ int qemuProcessStart(virConnectPtr conn,
goto cleanup;
VIR_DEBUG("Checking for CDROM and floppy presence");
- if (qemuDomainCheckDiskPresence(driver, vm, migrateFrom != NULL) < 0)
+ if (qemuDomainCheckDiskPresence(driver, vm, cold_boot) < 0)
goto cleanup;
VIR_DEBUG("Setting up domain cgroup (if required)");
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index 2c1d0b5..761db6f 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -48,6 +48,7 @@ int qemuProcessStart(virConnectPtr conn,
struct qemud_driver *driver,
virDomainObjPtr vm,
const char *migrateFrom,
+ bool cold_boot,
bool start_paused,
bool autodestroy,
int stdin_fd,
--
1.7.8.5
12 years, 8 months
[libvirt] [PATCH] sanlock: Use STREQ_NULLABLE instead of STREQ on strings that may be null
by Peter Krempa
The function sanlock_inquire can return NULL in the state string if the
message consists only of a header. The return value is arbitrary and
sent by the server. We should proceed carefully while touching such
pointers.
---
src/locking/lock_driver_sanlock.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/locking/lock_driver_sanlock.c b/src/locking/lock_driver_sanlock.c
index 13940f1..f2623a0 100644
--- a/src/locking/lock_driver_sanlock.c
+++ b/src/locking/lock_driver_sanlock.c
@@ -828,7 +828,7 @@ static int virLockManagerSanlockRelease(virLockManagerPtr lock,
return -1;
}
- if (STREQ(*state, ""))
+ if (STREQ_NULLABLE(*state, ""))
VIR_FREE(*state);
}
@@ -871,7 +871,7 @@ static int virLockManagerSanlockInquire(virLockManagerPtr lock,
return -1;
}
- if (STREQ(*state, ""))
+ if (STREQ_NULLABLE(*state, ""))
VIR_FREE(*state);
return 0;
--
1.7.3.4
12 years, 8 months
[libvirt] [PATCH] sanlock: Fix condition left crippled while debugging
by Peter Krempa
---
Extra context for review.
src/locking/lock_driver_sanlock.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/locking/lock_driver_sanlock.c b/src/locking/lock_driver_sanlock.c
index f2623a0..d344d6a 100644
--- a/src/locking/lock_driver_sanlock.c
+++ b/src/locking/lock_driver_sanlock.c
@@ -669,73 +669,73 @@ static int virLockManagerSanlockAcquire(virLockManagerPtr lock,
const char *state,
unsigned int flags,
int *fd)
{
virLockManagerSanlockPrivatePtr priv = lock->privateData;
struct sanlk_options *opt;
struct sanlk_resource **res_args;
int res_count;
bool res_free = false;
int sock = -1;
int rv;
int i;
virCheckFlags(VIR_LOCK_MANAGER_ACQUIRE_RESTRICT |
VIR_LOCK_MANAGER_ACQUIRE_REGISTER_ONLY, -1);
if (priv->res_count == 0 &&
priv->hasRWDisks &&
driver->requireLeaseForDisks) {
virLockError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("Read/write, exclusive access, disks were present, but no leases specified"));
return -1;
}
if (VIR_ALLOC(opt) < 0) {
virReportOOMError();
return -1;
}
if (!virStrcpy(opt->owner_name, priv->vm_name, SANLK_NAME_LEN)) {
virLockError(VIR_ERR_INTERNAL_ERROR,
_("Domain name '%s' exceeded %d characters"),
priv->vm_name, SANLK_NAME_LEN);
goto error;
}
- if (state && STRNEQ(state, "") && 0) {
+ if (state && STRNEQ(state, "")) {
if ((rv = sanlock_state_to_args((char *)state,
&res_count,
&res_args)) < 0) {
if (rv <= -200)
virLockError(VIR_ERR_INTERNAL_ERROR,
_("Unable to parse lock state %s: error %d"),
state, rv);
else
virReportSystemError(-rv,
_("Unable to parse lock state %s"),
state);
goto error;
}
res_free = true;
} else {
res_args = priv->res_args;
res_count = priv->res_count;
}
VIR_DEBUG("Register sanlock %d", flags);
/* We only initialize 'sock' if we are in the real
* child process and we need it to be inherited
*
* If sock==-1, then sanlock auto-open/closes a
* temporary sock
*/
if (priv->vm_pid == getpid() &&
(sock = sanlock_register()) < 0) {
if (sock <= -200)
virLockError(VIR_ERR_INTERNAL_ERROR,
_("Failed to open socket to sanlock daemon: error %d"),
sock);
else
virReportSystemError(-sock, "%s",
_("Failed to open socket to sanlock daemon"));
goto error;
--
1.7.3.4
12 years, 8 months
[libvirt] [PATCH] qemu: Don't parse device twice in attach/detach
by Michal Privoznik
Some nits are generated during XML parse (e.g. MAC address of
an interface); However, with current implementation, if we
are plugging a device both to persistent and live config,
we parse given XML twice: first time for live, second for config.
This is wrong then as the second time we are not guaranteed
to generate same values as we did for the first time.
To prevent that we need to create a copy of DeviceDefPtr;
This is done through format/parse process instead of writing
functions for deep copy as it is easier to maintain:
adding new field to any virDomain*DefPtr doesn't require change
of copying function.
---
src/conf/domain_conf.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 3 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_driver.c | 40 +++++++++++--------
4 files changed, 121 insertions(+), 17 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index f9654f1..f001319 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -14118,3 +14118,97 @@ virDomainNetFind(virDomainDefPtr def, const char *device)
return net;
}
+
+#define VIR_DOMAIN_DEVICE_FORMAT(func) \
+ if (func < 0) \
+ goto cleanup; \
+ xmlStr = virBufferContentAndReset(&buf); \
+ ret = virDomainDeviceDefParse(caps, def, xmlStr, flags)
+
+virDomainDeviceDefPtr
+virDomainDeviceDefCopy(virCapsPtr caps,
+ const virDomainDefPtr def,
+ virDomainDeviceDefPtr src)
+{
+ virDomainDeviceDefPtr ret = NULL;
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+ int flags = VIR_DOMAIN_XML_INACTIVE;
+ char *xmlStr = NULL;
+
+ switch(src->type) {
+ case VIR_DOMAIN_DEVICE_DISK:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainDiskDefFormat(&buf,
+ src->data.disk,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_LEASE:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainLeaseDefFormat(&buf,
+ src->data.lease));
+ break;
+ case VIR_DOMAIN_DEVICE_FS:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainFSDefFormat(&buf,
+ src->data.fs,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_NET:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainNetDefFormat(&buf,
+ src->data.net,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_INPUT:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainInputDefFormat(&buf,
+ src->data.input,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_SOUND:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainSoundDefFormat(&buf,
+ src->data.sound,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_VIDEO:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainVideoDefFormat(&buf,
+ src->data.video,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_HOSTDEV:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainHostdevDefFormat(&buf,
+ src->data.hostdev,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_WATCHDOG:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainWatchdogDefFormat(&buf,
+ src->data.watchdog,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_CONTROLLER:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainControllerDefFormat(&buf,
+ src->data.controller,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_GRAPHICS:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainGraphicsDefFormat(&buf,
+ src->data.graphics,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_HUB:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainHubDefFormat(&buf,
+ src->data.hub,
+ flags));
+ break;
+ case VIR_DOMAIN_DEVICE_REDIRDEV:
+ VIR_DOMAIN_DEVICE_FORMAT(virDomainRedirdevDefFormat(&buf,
+ src->data.redirdev,
+ flags));
+ break;
+ default:
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("Copying definition of '%d' type "
+ "is not implemented yet."),
+ src->type);
+ break;
+ }
+
+cleanup:
+ VIR_FREE(xmlStr);
+ return ret;
+}
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 596be4d..7e4a464 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1750,6 +1750,9 @@ void virDomainHostdevDefFree(virDomainHostdevDefPtr def);
void virDomainHubDefFree(virDomainHubDefPtr def);
void virDomainRedirdevDefFree(virDomainRedirdevDefPtr def);
void virDomainDeviceDefFree(virDomainDeviceDefPtr def);
+virDomainDeviceDefPtr virDomainDeviceDefCopy(virCapsPtr caps,
+ const virDomainDefPtr def,
+ virDomainDeviceDefPtr src);
int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
int type);
int virDomainDevicePCIAddressIsValid(virDomainDevicePCIAddressPtr addr);
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index a104e70..53f27e7 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -286,6 +286,7 @@ virDomainDeviceAddressIsValid;
virDomainDeviceAddressPciMultiTypeFromString;
virDomainDeviceAddressPciMultiTypeToString;
virDomainDeviceAddressTypeToString;
+virDomainDeviceDefCopy;
virDomainDeviceDefFree;
virDomainDeviceDefParse;
virDomainDeviceInfoIterate;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index c6bdd29..3a52ded 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5561,8 +5561,9 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
struct qemud_driver *driver = dom->conn->privateData;
virDomainObjPtr vm = NULL;
virDomainDefPtr vmdef = NULL;
- virDomainDeviceDefPtr dev = NULL;
+ virDomainDeviceDefPtr dev = NULL, dev_copy = NULL;
bool force = (flags & VIR_DOMAIN_DEVICE_MODIFY_FORCE) != 0;
+ bool free_dev_copy = false;
int ret = -1;
unsigned int affect;
@@ -5608,12 +5609,24 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
goto endjob;
}
- if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
- dev = virDomainDeviceDefParse(driver->caps, vm->def, xml,
- VIR_DOMAIN_XML_INACTIVE);
- if (dev == NULL)
+ dev = dev_copy = virDomainDeviceDefParse(driver->caps, vm->def, xml,
+ VIR_DOMAIN_XML_INACTIVE);
+ if (dev == NULL)
+ goto endjob;
+
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG &&
+ flags & VIR_DOMAIN_AFFECT_LIVE) {
+ /* If we are affecting both CONFIG and LIVE
+ * create a deep copy of device as adding
+ * to CONFIG takes one instance.
+ */
+ dev_copy = virDomainDeviceDefCopy(driver->caps, vm->def, dev);
+ if (!dev_copy)
goto endjob;
+ free_dev_copy = true;
+ }
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
/* Make a copy for updated domain. */
vmdef = virDomainObjCopyPersistentDef(driver->caps, vm);
if (!vmdef)
@@ -5639,24 +5652,15 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
}
if (flags & VIR_DOMAIN_AFFECT_LIVE) {
- /* If dev exists it was created to modify the domain config. Free it. */
- virDomainDeviceDefFree(dev);
- dev = virDomainDeviceDefParse(driver->caps, vm->def, xml,
- VIR_DOMAIN_XML_INACTIVE);
- if (dev == NULL) {
- ret = -1;
- goto endjob;
- }
-
switch (action) {
case QEMU_DEVICE_ATTACH:
- ret = qemuDomainAttachDeviceLive(vm, dev, dom);
+ ret = qemuDomainAttachDeviceLive(vm, dev_copy, dom);
break;
case QEMU_DEVICE_DETACH:
- ret = qemuDomainDetachDeviceLive(vm, dev, dom);
+ ret = qemuDomainDetachDeviceLive(vm, dev_copy, dom);
break;
case QEMU_DEVICE_UPDATE:
- ret = qemuDomainUpdateDeviceLive(vm, dev, dom, force);
+ ret = qemuDomainUpdateDeviceLive(vm, dev_copy, dom, force);
break;
default:
qemuReportError(VIR_ERR_INTERNAL_ERROR,
@@ -5694,6 +5698,8 @@ endjob:
cleanup:
virDomainDefFree(vmdef);
virDomainDeviceDefFree(dev);
+ if (free_dev_copy)
+ virDomainDeviceDefFree(dev_copy);
if (vm)
virDomainObjUnlock(vm);
qemuDriverUnlock(driver);
--
1.7.3.4
12 years, 8 months
[libvirt] [PATCH 0/3] virsh: add command and option aliases
by Eric Blake
I'm tired of publicizing typos. These patches preserve full
back-compat (scripts that used the old spelling will continue
to work), we just don't document the old spellings.
I started this patch because we have the memory commands that
take a --kilobyte argument when they really mean KiB (kibibyte
or 1024); I plan to use the aliasing feature in my later units
cleanup series to fix this naming to instead take scaled sizes
(such as --size=1M or --size=1024bytes); at which point --kilobyte
will be the undocumented alias so that we no longer document a
name that might then be confused for 1000.
Eric Blake (3):
virsh: add option aliases
virsh: use option aliases
virsh: add command aliases, and rename nodedev-detach
tests/virshtest.c | 6 +++
tools/virsh.c | 107 +++++++++++++++++++++++++++++++++++++---------------
tools/virsh.pod | 28 +++++++------
3 files changed, 97 insertions(+), 44 deletions(-)
--
1.7.7.6
12 years, 8 months
[libvirt] [PATCHv2 00/15] clean up unit handling of memory and storage
by Eric Blake
This turned into a bigger project than I originally planned, but
I'm happy with how things look after this series.
v1 (memory): https://www.redhat.com/archives/libvir-list/2012-February/msg00959.html
v1 (virsh): https://www.redhat.com/archives/libvir-list/2012-March/msg00108.html
In this series:
Eric Blake (15):
1: new, but partially factored out of memory 3/3
docs: use correct terminology for 1024 bytes
2: new
api: add overflow error
3: new, but partially factored out of memory 3/3
util: new function for scaling numbers
4: new, based on feedback of memory 1/3
xml: share 'unit' in RNG
5: rework of memory 1/3
xml: output memory unit for clarity
6: new
storage: support more scaling suffixes
7: minor rework of memory 2/3
xml: drop unenforced minimum memory limit from RNG
8-9: new
xml: use long long internally, to centralize overflow checks
xml: use better types for memory values
10: rework of memory 3/3
xml: allow scaled memory on input
11-13: unchanged from virsh 1-3/3
virsh: add option aliases
virsh: use option aliases
virsh: add command aliases, and rename nodedev-detach
14-15: new
virsh: improve storage unit parsing
virsh: improve memory unit parsing
Also available at:
git fetch git://repo.or.cz/libvirt/ericb.git units
or browseable at:
http://repo.or.cz/w/libvirt/ericb.git/shortlog/refs/heads/units
daemon/remote.c | 17 +-
docs/formatdomain.html.in | 55 +++-
docs/formatstorage.html.in | 17 +-
docs/schemas/basictypes.rng | 19 ++
docs/schemas/domaincommon.rng | 19 +-
docs/schemas/storagepool.rng | 47 +--
docs/schemas/storagevol.rng | 56 +---
include/libvirt/virterror.h | 3 +-
src/conf/domain_audit.c | 2 +-
src/conf/domain_conf.c | 127 ++++++--
src/conf/domain_conf.h | 14 +-
src/conf/storage_conf.c | 73 +----
src/conf/storage_conf.h | 12 +-
src/driver.h | 2 +-
src/esx/esx_driver.c | 4 +-
src/libvirt.c | 47 ++-
src/libvirt_private.syms | 1 +
src/libxl/libxl_driver.c | 8 +-
src/lxc/lxc_driver.c | 6 +-
src/openvz/openvz_driver.c | 8 +-
src/phyp/phyp_driver.c | 10 +-
src/qemu/qemu_command.c | 2 +-
src/qemu/qemu_driver.c | 14 +-
src/qemu/qemu_monitor.c | 2 +-
src/qemu/qemu_monitor.h | 2 +-
src/qemu/qemu_monitor_json.c | 2 +-
src/qemu/qemu_monitor_json.h | 2 +-
src/qemu/qemu_monitor_text.c | 2 +-
src/qemu/qemu_monitor_text.h | 2 +-
src/qemu/qemu_process.c | 6 +
src/rpc/gendispatch.pl | 1 -
src/test/test_driver.c | 4 +-
src/uml/uml_conf.c | 2 +-
src/uml/uml_driver.c | 6 +-
src/util/util.c | 66 ++++
src/util/util.h | 4 +
src/util/virterror.c | 6 +
src/vbox/vbox_tmpl.c | 4 +-
src/vmx/vmx.c | 10 +-
src/xen/xen_driver.c | 6 +-
src/xen/xen_hypervisor.c | 4 +-
src/xen/xend_internal.c | 12 +-
src/xen/xend_internal.h | 4 +-
src/xen/xm_internal.c | 6 +-
src/xen/xm_internal.h | 4 +-
src/xen/xs_internal.c | 10 +-
src/xen/xs_internal.h | 4 +-
src/xenapi/xenapi_driver.c | 6 +-
src/xenxs/xen_sxpr.c | 8 +-
src/xenxs/xen_xm.c | 58 +++-
tests/define-dev-segfault | 4 +-
tests/domainschemadata/domain-lxc-simple.xml | 2 +-
tests/domainschemadata/portprofile.xml | 2 +-
.../qemu-simple-description-title.xml | 4 +-
tests/domainschemadata/timers.xml | 4 +-
tests/domainsnapshotxml2xmlout/disk_snapshot.xml | 4 +-
tests/domainsnapshotxml2xmlout/full_domain.xml | 4 +-
tests/domainsnapshotxml2xmlout/metadata.xml | 4 +-
tests/openvzutilstest.c | 4 +-
tests/qemuargv2xmltest.c | 5 +-
.../qemuxml2argv-balloon-device-auto.xml | 4 +-
.../qemuxml2argv-balloon-device.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-bios.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-blkdeviotune.xml | 4 +-
.../qemuxml2argv-blkiotune-device.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-blkiotune.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-boot-cdrom.xml | 4 +-
.../qemuxml2argv-boot-complex-bootindex.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-boot-complex.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-boot-floppy.xml | 4 +-
...uxml2argv-boot-menu-disable-drive-bootindex.xml | 4 +-
.../qemuxml2argv-boot-menu-disable-drive.xml | 4 +-
.../qemuxml2argv-boot-menu-disable.xml | 4 +-
.../qemuxml2argv-boot-menu-enable.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-boot-multi.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-boot-network.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-boot-order.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-bootloader.xml | 4 +-
.../qemuxml2argv-channel-guestfwd.xml | 4 +-
.../qemuxml2argv-channel-spicevmc-old.xml | 2 +-
.../qemuxml2argv-channel-spicevmc.xml | 2 +-
.../qemuxml2argv-channel-virtio-auto.xml | 4 +-
.../qemuxml2argv-channel-virtio.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-clock-france.xml | 4 +-
.../qemuxml2argv-clock-localtime.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-clock-utc.xml | 4 +-
.../qemuxml2argv-clock-variable.xml | 4 +-
.../qemuxml2argv-console-compat-auto.xml | 4 +-
.../qemuxml2argv-console-compat-chardev.xml | 4 +-
.../qemuxml2argv-console-compat.xml | 4 +-
.../qemuxml2argv-console-virtio-many.xml | 4 +-
.../qemuxml2argv-console-virtio.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-cpu-exact1.xml | 4 +-
.../qemuxml2argv-cpu-exact2-nofallback.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-cpu-exact2.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-fallback.xml | 4 +-
.../qemuxml2argv-cpu-host-kvmclock.xml | 4 +-
.../qemuxml2argv-cpu-host-model-fallback.xml | 4 +-
.../qemuxml2argv-cpu-host-model-nofallback.xml | 4 +-
.../qemuxml2argv-cpu-host-model.xml | 4 +-
.../qemuxml2argv-cpu-host-passthrough.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-kvmclock.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-minimum1.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-minimum2.xml | 4 +-
.../qemuxml2argv-cpu-nofallback.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa1.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-cpu-numa2.xml | 4 +-
.../qemuxml2argv-cpu-qemu-host-passthrough.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-cpu-strict1.xml | 4 +-
.../qemuxml2argv-cpu-topology1.xml | 4 +-
.../qemuxml2argv-cpu-topology2.xml | 4 +-
.../qemuxml2argv-cpu-topology3.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-cputune.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-aio.xml | 4 +-
.../qemuxml2argv-disk-cdrom-empty.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-cdrom.xml | 4 +-
.../qemuxml2argv-disk-copy_on_read.xml | 2 +-
.../qemuxml2argv-disk-drive-boot-cdrom.xml | 4 +-
.../qemuxml2argv-disk-drive-boot-disk.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-directsync.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-unsafe.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-v1-none.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-v1-wb.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-v1-wt.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-v2-none.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-v2-wb.xml | 4 +-
.../qemuxml2argv-disk-drive-cache-v2-wt.xml | 4 +-
...muxml2argv-disk-drive-error-policy-enospace.xml | 4 +-
.../qemuxml2argv-disk-drive-error-policy-stop.xml | 4 +-
...rgv-disk-drive-error-policy-wreport-rignore.xml | 4 +-
.../qemuxml2argv-disk-drive-fat.xml | 4 +-
.../qemuxml2argv-disk-drive-fmt-qcow.xml | 4 +-
.../qemuxml2argv-disk-drive-network-nbd.xml | 4 +-
.../qemuxml2argv-disk-drive-network-rbd-auth.xml | 4 +-
...emuxml2argv-disk-drive-network-rbd-ceph-env.xml | 4 +-
.../qemuxml2argv-disk-drive-network-rbd.xml | 4 +-
.../qemuxml2argv-disk-drive-network-sheepdog.xml | 4 +-
.../qemuxml2argv-disk-drive-no-boot.xml | 4 +-
.../qemuxml2argv-disk-drive-readonly-disk.xml | 4 +-
.../qemuxml2argv-disk-drive-readonly-no-device.xml | 4 +-
.../qemuxml2argv-disk-drive-shared.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-disk-floppy.xml | 4 +-
.../qemuxml2argv-disk-ioeventfd.xml | 2 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-many.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-order.xml | 4 +-
.../qemuxml2argv-disk-sata-device.xml | 4 +-
.../qemuxml2argv-disk-scsi-device-auto.xml | 4 +-
.../qemuxml2argv-disk-scsi-device.xml | 4 +-
.../qemuxml2argv-disk-scsi-virtio-scsi.xml | 4 +-
.../qemuxml2argv-disk-scsi-vscsi.xml | 4 +-
.../qemuxml2argv-disk-snapshot.xml | 4 +-
.../qemuxml2argv-disk-transient.xml | 4 +-
.../qemuxml2argv-disk-usb-device.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-disk-usb.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-disk-virtio.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-disk-xenvbd.xml | 4 +-
.../qemuxml2argv-encrypted-disk.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-event_idx.xml | 4 +-
.../qemuxml2argv-floppy-drive-fat.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-fs9p.xml | 4 +-
.../qemuxml2argv-graphics-listen-network.xml | 4 +-
.../qemuxml2argv-graphics-listen-network2.xml | 4 +-
.../qemuxml2argv-graphics-sdl-fullscreen.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-graphics-sdl.xml | 4 +-
.../qemuxml2argv-graphics-spice-compression.xml | 4 +-
.../qemuxml2argv-graphics-spice-qxl-vga.xml | 4 +-
.../qemuxml2argv-graphics-spice-timeout.xml | 4 +-
.../qemuxml2argv-graphics-spice.xml | 4 +-
.../qemuxml2argv-graphics-vnc-sasl.xml | 4 +-
.../qemuxml2argv-graphics-vnc-socket.xml | 4 +-
.../qemuxml2argv-graphics-vnc-tls.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-graphics-vnc.xml | 4 +-
.../qemuxml2argv-hostdev-pci-address-device.xml | 4 +-
.../qemuxml2argv-hostdev-pci-address.xml | 4 +-
.../qemuxml2argv-hostdev-usb-address-device.xml | 4 +-
.../qemuxml2argv-hostdev-usb-address.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-hugepages.xml | 4 +-
.../qemuxml2argv-input-usbmouse-addr.xml | 4 +-
.../qemuxml2argv-input-usbmouse.xml | 4 +-
.../qemuxml2argv-input-usbtablet.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-input-xen.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-kvmclock.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-lease.xml | 4 +-
.../qemuxml2argv-machine-aliases1.xml | 4 +-
.../qemuxml2argv-machine-aliases2.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-memtune.xml | 10 +-
tests/qemuxml2argvdata/qemuxml2argv-metadata.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-migrate.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-minimal.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-misc-acpi.xml | 4 +-
.../qemuxml2argv-misc-no-reboot.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-misc-uuid.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-monitor-json.xml | 4 +-
.../qemuxml2argv-multifunction-pci-device.xml | 4 +-
.../qemuxml2argv-net-bandwidth.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-net-client.xml | 4 +-
.../qemuxml2argv-net-eth-ifname.xml | 4 +-
.../qemuxml2argv-net-eth-names.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-net-eth.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-net-mcast.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-net-server.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-net-user.xml | 4 +-
.../qemuxml2argv-net-virtio-device.xml | 4 +-
.../qemuxml2argv-net-virtio-netdev.xml | 4 +-
.../qemuxml2argv-net-virtio-network-portgroup.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-net-virtio.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-no-shutdown.xml | 4 +-
.../qemuxml2argv-nographics-vga.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-nographics.xml | 4 +-
.../qemuxml2argv-numatune-memory.xml | 4 +-
.../qemuxml2argv-parallel-tcp-chardev.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-parallel-tcp.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-pci-rom.xml | 4 +-
.../qemuxml2argv-pseries-basic.xml | 2 +-
.../qemuxml2argv-pseries-vio-address-clash.xml | 2 +-
.../qemuxml2argv-pseries-vio-user-assigned.xml | 2 +-
.../qemuxml2argvdata/qemuxml2argv-pseries-vio.xml | 2 +-
.../qemuxml2argv-qemu-ns-no-env.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-qemu-ns.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-restore-v1.xml | 4 +-
.../qemuxml2argv-restore-v2-fd.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-restore-v2.xml | 4 +-
.../qemuxml2argv-seclabel-dynamic-baselabel.xml | 4 +-
.../qemuxml2argv-seclabel-dynamic-override.xml | 4 +-
.../qemuxml2argv-seclabel-dynamic.xml | 4 +-
.../qemuxml2argv-seclabel-none.xml | 4 +-
.../qemuxml2argv-seclabel-static-relabel.xml | 4 +-
.../qemuxml2argv-seclabel-static.xml | 4 +-
.../qemuxml2argv-serial-dev-chardev.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-dev.xml | 4 +-
.../qemuxml2argv-serial-file-chardev.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-serial-file.xml | 4 +-
.../qemuxml2argv-serial-many-chardev.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-serial-many.xml | 4 +-
.../qemuxml2argv-serial-pty-chardev.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-pty.xml | 4 +-
.../qemuxml2argv-serial-target-port-auto.xml | 4 +-
.../qemuxml2argv-serial-tcp-chardev.xml | 4 +-
.../qemuxml2argv-serial-tcp-telnet-chardev.xml | 4 +-
.../qemuxml2argv-serial-tcp-telnet.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-tcp.xml | 4 +-
.../qemuxml2argv-serial-udp-chardev.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-udp.xml | 4 +-
.../qemuxml2argv-serial-unix-chardev.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-serial-unix.xml | 4 +-
.../qemuxml2argv-serial-vc-chardev.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-serial-vc.xml | 4 +-
.../qemuxml2argv-smartcard-controller.xml | 4 +-
.../qemuxml2argv-smartcard-host-certificates.xml | 4 +-
.../qemuxml2argv-smartcard-host.xml | 4 +-
...qemuxml2argv-smartcard-passthrough-spicevmc.xml | 4 +-
.../qemuxml2argv-smartcard-passthrough-tcp.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-smbios.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-smp.xml | 4 +-
.../qemuxml2argvdata/qemuxml2argv-sound-device.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-sound.xml | 4 +-
.../qemuxml2argv-usb-controller.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-usb-hub.xml | 4 +-
.../qemuxml2argv-usb-ich9-companion.xml | 4 +-
.../qemuxml2argv-usb-ich9-ehci-addr.xml | 4 +-
.../qemuxml2argv-usb-piix3-controller.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-usb-ports.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-usb-redir.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-usb1-usb2.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-virtio-lun.xml | 4 +-
.../qemuxml2argv-watchdog-device.xml | 4 +-
.../qemuxml2argv-watchdog-dump.xml | 4 +-
tests/qemuxml2argvdata/qemuxml2argv-watchdog.xml | 4 +-
.../qemuxml2xmlout-balloon-device-auto.xml | 4 +-
.../qemuxml2xmlout-channel-virtio-auto.xml | 4 +-
.../qemuxml2xmlout-console-compat-auto.xml | 4 +-
.../qemuxml2xmlout-console-virtio.xml | 4 +-
.../qemuxml2xmlout-disk-cdrom-empty.xml | 4 +-
.../qemuxml2xmlout-disk-scsi-device-auto.xml | 4 +-
.../qemuxml2xmlout-graphics-listen-network2.xml | 4 +-
.../qemuxml2xmlout-graphics-spice-timeout.xml | 4 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-memtune.xml | 31 ++
.../qemuxml2xmloutdata/qemuxml2xmlout-metadata.xml | 4 +-
.../qemuxml2xmlout-serial-target-port-auto.xml | 4 +-
tests/qemuxml2xmltest.c | 2 +-
.../qemuxmlns-qemu-ns-commandline-ns0.xml | 4 +-
.../qemuxmlns-qemu-ns-commandline-ns1.xml | 4 +-
.../qemuxmlns-qemu-ns-commandline.xml | 4 +-
.../qemuxmlns-qemu-ns-domain-commandline-ns0.xml | 4 +-
.../qemuxmlns-qemu-ns-domain-commandline.xml | 4 +-
.../qemuxmlnsdata/qemuxmlns-qemu-ns-domain-ns0.xml | 4 +-
tests/qemuxmlnsdata/qemuxmlns-qemu-ns-domain.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-boot-grub.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-curmem.xml | 4 +-
.../sexpr2xml-disk-block-shareable.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-disk-block.xml | 4 +-
.../sexpr2xml-disk-drv-blktap-qcow.xml | 4 +-
.../sexpr2xml-disk-drv-blktap-raw.xml | 4 +-
.../sexpr2xml-disk-drv-blktap2-raw.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-disk-file.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-autoport.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-empty-kernel.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-force-hpet.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-force-nohpet.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-kernel.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-legacy-vfb.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-localtime.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-net-ioemu.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-net-netfront.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-parallel-tcp.xml | 4 +-
.../sexpr2xml-fv-serial-dev-2-ports.xml | 4 +-
.../sexpr2xml-fv-serial-dev-2nd-port.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-file.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-null.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-pipe.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-pty.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-stdio.xml | 4 +-
.../sexpr2xml-fv-serial-tcp-telnet.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-tcp.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-udp.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-serial-unix.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-sound.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-usbmouse.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-usbtablet.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-utc.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv-v2.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-fv.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-net-bridged.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-net-e1000.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-net-routed.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pci-devs.xml | 4 +-
.../sexpr2xml-pv-bootloader-cmdline.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pv-bootloader.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pv-localtime.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pv-vcpus.xml | 4 +-
.../sexpr2xml-pv-vfb-new-vncdisplay.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.xml | 4 +-
.../sexpr2xmldata/sexpr2xml-pv-vfb-type-crash.xml | 4 +-
tests/sexpr2xmldata/sexpr2xml-pv.xml | 4 +-
tests/storagepoolxml2xmlout/pool-dir.xml | 6 +-
tests/storagepoolxml2xmlout/pool-disk.xml | 6 +-
tests/storagepoolxml2xmlout/pool-fs.xml | 6 +-
tests/storagepoolxml2xmlout/pool-iscsi-auth.xml | 6 +-
.../storagepoolxml2xmlout/pool-iscsi-multiiqn.xml | 6 +-
.../pool-iscsi-vendor-product.xml | 6 +-
tests/storagepoolxml2xmlout/pool-iscsi.xml | 6 +-
.../storagepoolxml2xmlout/pool-logical-create.xml | 6 +-
tests/storagepoolxml2xmlout/pool-logical.xml | 6 +-
tests/storagepoolxml2xmlout/pool-mpath.xml | 6 +-
tests/storagepoolxml2xmlout/pool-netfs.xml | 6 +-
tests/storagepoolxml2xmlout/pool-scsi.xml | 6 +-
tests/storagevolxml2xmlin/vol-file-backing.xml | 4 +-
tests/storagevolxml2xmlin/vol-file.xml | 4 +-
tests/storagevolxml2xmlout/vol-file-backing.xml | 4 +-
tests/storagevolxml2xmlout/vol-file.xml | 4 +-
tests/storagevolxml2xmlout/vol-logical-backing.xml | 4 +-
tests/storagevolxml2xmlout/vol-logical.xml | 4 +-
tests/storagevolxml2xmlout/vol-partition.xml | 4 +-
tests/storagevolxml2xmlout/vol-qcow2.xml | 4 +-
tests/virshtest.c | 6 +
tests/vmx2xmldata/vmx2xml-annotation.xml | 4 +-
tests/vmx2xmldata/vmx2xml-case-insensitive-1.xml | 4 +-
tests/vmx2xmldata/vmx2xml-case-insensitive-2.xml | 4 +-
tests/vmx2xmldata/vmx2xml-cdrom-ide-device.xml | 4 +-
tests/vmx2xmldata/vmx2xml-cdrom-ide-file.xml | 4 +-
tests/vmx2xmldata/vmx2xml-cdrom-scsi-device.xml | 4 +-
tests/vmx2xmldata/vmx2xml-cdrom-scsi-file.xml | 4 +-
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-1.xml | 4 +-
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-2.xml | 4 +-
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-3.xml | 4 +-
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-4.xml | 4 +-
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-5.xml | 6 +-
tests/vmx2xmldata/vmx2xml-esx-in-the-wild-6.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-bridged.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-custom.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-e1000.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-generated.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-nat.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-other.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-static.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-vmxnet2.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ethernet-vpx.xml | 4 +-
tests/vmx2xmldata/vmx2xml-floppy-device.xml | 4 +-
tests/vmx2xmldata/vmx2xml-floppy-file.xml | 4 +-
tests/vmx2xmldata/vmx2xml-graphics-vnc.xml | 4 +-
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-1.xml | 4 +-
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-2.xml | 4 +-
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-3.xml | 4 +-
tests/vmx2xmldata/vmx2xml-gsx-in-the-wild-4.xml | 4 +-
tests/vmx2xmldata/vmx2xml-harddisk-ide-file.xml | 4 +-
tests/vmx2xmldata/vmx2xml-harddisk-scsi-file.xml | 4 +-
tests/vmx2xmldata/vmx2xml-minimal-64bit.xml | 4 +-
tests/vmx2xmldata/vmx2xml-minimal.xml | 4 +-
tests/vmx2xmldata/vmx2xml-parallel-device.xml | 4 +-
tests/vmx2xmldata/vmx2xml-parallel-file.xml | 4 +-
tests/vmx2xmldata/vmx2xml-scsi-driver.xml | 4 +-
tests/vmx2xmldata/vmx2xml-scsi-writethrough.xml | 4 +-
tests/vmx2xmldata/vmx2xml-serial-device.xml | 4 +-
tests/vmx2xmldata/vmx2xml-serial-file.xml | 4 +-
.../vmx2xmldata/vmx2xml-serial-network-client.xml | 4 +-
.../vmx2xmldata/vmx2xml-serial-network-server.xml | 4 +-
tests/vmx2xmldata/vmx2xml-serial-pipe.xml | 4 +-
tests/vmx2xmldata/vmx2xml-smbios.xml | 4 +-
tests/vmx2xmldata/vmx2xml-svga.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ws-in-the-wild-1.xml | 4 +-
tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml | 4 +-
tests/xmconfigdata/sexpr2xml-pv-bootloader.xml | 4 +-
tests/xmconfigdata/test-escape-paths.xml | 4 +-
tests/xmconfigdata/test-fullvirt-force-hpet.xml | 4 +-
tests/xmconfigdata/test-fullvirt-force-nohpet.xml | 4 +-
tests/xmconfigdata/test-fullvirt-localtime.xml | 4 +-
tests/xmconfigdata/test-fullvirt-net-ioemu.xml | 4 +-
tests/xmconfigdata/test-fullvirt-net-netfront.xml | 4 +-
tests/xmconfigdata/test-fullvirt-new-cdrom.xml | 4 +-
tests/xmconfigdata/test-fullvirt-old-cdrom.xml | 4 +-
tests/xmconfigdata/test-fullvirt-parallel-tcp.xml | 4 +-
.../test-fullvirt-serial-dev-2-ports.xml | 4 +-
.../test-fullvirt-serial-dev-2nd-port.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-file.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-null.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-pipe.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-pty.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-stdio.xml | 4 +-
.../test-fullvirt-serial-tcp-telnet.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-tcp.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-udp.xml | 4 +-
tests/xmconfigdata/test-fullvirt-serial-unix.xml | 4 +-
tests/xmconfigdata/test-fullvirt-sound.xml | 4 +-
tests/xmconfigdata/test-fullvirt-usbmouse.xml | 4 +-
.../test-fullvirt-usbtablet-no-bus.xml | 4 +-
tests/xmconfigdata/test-fullvirt-usbtablet.xml | 4 +-
tests/xmconfigdata/test-fullvirt-utc.xml | 4 +-
tests/xmconfigdata/test-no-source-cdrom.xml | 4 +-
tests/xmconfigdata/test-paravirt-net-e1000.xml | 4 +-
tests/xmconfigdata/test-paravirt-net-vifname.xml | 4 +-
.../test-paravirt-new-pvfb-vncdisplay.xml | 4 +-
tests/xmconfigdata/test-paravirt-new-pvfb.xml | 4 +-
.../test-paravirt-old-pvfb-vncdisplay.xml | 4 +-
tests/xmconfigdata/test-paravirt-old-pvfb.xml | 4 +-
tests/xmconfigdata/test-paravirt-vcpu.xml | 4 +-
tests/xmconfigdata/test-pci-devs.xml | 4 +-
tests/xml2sexprdata/xml2sexpr-boot-grub.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-curmem.xml | 4 +-
.../xml2sexpr-disk-block-shareable.xml | 4 +-
tests/xml2sexprdata/xml2sexpr-disk-block.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.xml | 2 +-
.../xml2sexpr-disk-drv-blktap-qcow.xml | 2 +-
.../xml2sexpr-disk-drv-blktap-raw.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.xml | 2 +-
.../xml2sexpr-disk-drv-blktap2-raw.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-disk-drv-blktap2.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-disk-drv-loop.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-disk-file.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-escape.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-force-hpet.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-force-nohpet.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-kernel.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-localtime.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-net-ioemu.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-net-netfront.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.xml | 2 +-
.../xml2sexpr-fv-serial-dev-2-ports.xml | 2 +-
.../xml2sexpr-fv-serial-dev-2nd-port.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-file.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-null.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-pty.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.xml | 2 +-
.../xml2sexpr-fv-serial-tcp-telnet.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-udp.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-serial-unix.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-sound.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-usbmouse.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-usbtablet.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-utc.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv-vncunused.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-fv.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-net-bridged.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-net-e1000.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-net-routed.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-no-source-cdrom.xml | 4 +-
tests/xml2sexprdata/xml2sexpr-pci-devs.xml | 2 +-
.../xml2sexpr-pv-bootloader-cmdline.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-pv-bootloader.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-pv-localtime.xml | 4 +-
tests/xml2sexprdata/xml2sexpr-pv-vcpus.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-pv-vfb-new-auto.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-pv-vfb-new.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-pv-vfb-orig.xml | 2 +-
tests/xml2sexprdata/xml2sexpr-pv.xml | 2 +-
tests/xml2vmxdata/xml2vmx-annotation.xml | 2 +-
tests/xml2vmxdata/xml2vmx-cdrom-ide-device.xml | 2 +-
tests/xml2vmxdata/xml2vmx-cdrom-ide-file.xml | 2 +-
tests/xml2vmxdata/xml2vmx-cdrom-scsi-device.xml | 2 +-
tests/xml2vmxdata/xml2vmx-cdrom-scsi-file.xml | 2 +-
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-1.xml | 4 +-
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-2.xml | 4 +-
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-3.xml | 4 +-
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-4.xml | 4 +-
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-5.xml | 6 +-
tests/xml2vmxdata/xml2vmx-esx-in-the-wild-6.xml | 4 +-
tests/xml2vmxdata/xml2vmx-ethernet-bridged.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-custom.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-e1000.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-generated.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-other.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-static.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-vmxnet2.xml | 2 +-
tests/xml2vmxdata/xml2vmx-ethernet-vpx.xml | 2 +-
tests/xml2vmxdata/xml2vmx-floppy-device.xml | 2 +-
tests/xml2vmxdata/xml2vmx-floppy-file.xml | 2 +-
tests/xml2vmxdata/xml2vmx-graphics-vnc.xml | 2 +-
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-1.xml | 4 +-
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-2.xml | 4 +-
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-3.xml | 4 +-
tests/xml2vmxdata/xml2vmx-gsx-in-the-wild-4.xml | 4 +-
tests/xml2vmxdata/xml2vmx-harddisk-ide-file.xml | 2 +-
tests/xml2vmxdata/xml2vmx-harddisk-scsi-file.xml | 2 +-
tests/xml2vmxdata/xml2vmx-minimal-64bit.xml | 2 +-
tests/xml2vmxdata/xml2vmx-minimal.xml | 2 +-
tests/xml2vmxdata/xml2vmx-parallel-device.xml | 2 +-
tests/xml2vmxdata/xml2vmx-parallel-file.xml | 2 +-
tests/xml2vmxdata/xml2vmx-scsi-driver.xml | 2 +-
tests/xml2vmxdata/xml2vmx-scsi-writethrough.xml | 2 +-
tests/xml2vmxdata/xml2vmx-serial-device.xml | 2 +-
tests/xml2vmxdata/xml2vmx-serial-file.xml | 2 +-
.../xml2vmxdata/xml2vmx-serial-network-client.xml | 2 +-
.../xml2vmxdata/xml2vmx-serial-network-server.xml | 2 +-
tests/xml2vmxdata/xml2vmx-serial-pipe.xml | 2 +-
tests/xml2vmxdata/xml2vmx-smbios.xml | 2 +-
tests/xml2vmxdata/xml2vmx-svga.xml | 2 +-
tools/virsh.c | 330 ++++++++++++--------
tools/virsh.pod | 119 +++++---
534 files changed, 1689 insertions(+), 1380 deletions(-)
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-memtune.xml
--
1.7.7.6
12 years, 8 months