Use the probing functionality added in the last patch to turn on
a capability bit when active commit is present, and gate active
commit on that capability.
While at it, leave a few more bread-crumbs about what blockjob
sync/async means, and enforce that sync cancel is only ever
encountered with blockpull (at this point, RHEL 6.2 is likely
to be the only platform to have sync cancel).
Modifying qemucapabilitiestest is painful; the .replies files would
be so much easier if they had comments correlating which command
generated the given reply. Maybe I'll fix that up later...
* src/qemu/qemu_capabilities.h (QEMU_CAPS_ACTIVE_COMMIT): New
capability.
(QEMU_CAPS_BLOCKJOB_SYNC): Enhance comment.
* src/qemu/qemu_driver.c (qemuDomainBlockJobImpl): Likewise.
(qemuDomainBlockCopy): Likewise.
(qemuDomainBlockCommit): Use the new bit
* src/qemu/qemu_capabilities.c (virQEMUCaps): Name the new bit.
(virQEMUCapsProbeQMPCommands): Set it.
* tests/qemucapabilitiesdata/caps_1.3.1-1.replies: Update.
* tests/qemucapabilitiesdata/caps_1.4.2-1.replies: Likewise.
* tests/qemucapabilitiesdata/caps_1.5.3-1.replies: Likewise.
* tests/qemucapabilitiesdata/caps_1.6.0-1.replies: Likewise.
* tests/qemucapabilitiesdata/caps_1.6.50-1.replies: Likewise.
Signed-off-by: Eric Blake <eblake(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 7 +++
src/qemu/qemu_capabilities.h | 3 +-
src/qemu/qemu_driver.c | 16 +++---
tests/qemucapabilitiesdata/caps_1.3.1-1.replies | 62 +++++++++++++-----------
tests/qemucapabilitiesdata/caps_1.4.2-1.replies | 62 +++++++++++++-----------
tests/qemucapabilitiesdata/caps_1.5.3-1.replies | 62 +++++++++++++-----------
tests/qemucapabilitiesdata/caps_1.6.0-1.replies | 62 +++++++++++++-----------
tests/qemucapabilitiesdata/caps_1.6.50-1.replies | 62 +++++++++++++-----------
8 files changed, 193 insertions(+), 143 deletions(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 08c3d04..b96fec1 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -256,6 +256,7 @@ VIR_ENUM_IMPL(virQEMUCaps, QEMU_CAPS_LAST,
"usb-kbd", /* 165 */
"host-pci-multidomain",
"msg-timestamp",
+ "active-commit",
);
@@ -2149,6 +2150,12 @@ virQEMUCapsProbeQMPCommands(virQEMUCapsPtr qemuCaps,
VIR_FORCE_CLOSE(fd);
}
+ /* Probe for active commit of qemu 2.1 (for now, we are choosing
+ * to ignore the fact that qemu 2.0 can also do active commit) */
+ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCK_COMMIT) &&
+ qemuMonitorBlockCommit(mon, "bogus", NULL, NULL, 0) == -2)
+ virQEMUCapsSet(qemuCaps, QEMU_CAPS_ACTIVE_COMMIT);
+
return 0;
}
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index d755caa..617986d 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -127,7 +127,7 @@ enum virQEMUCapsFlags {
QEMU_CAPS_SCSI_BLOCK = 88, /* -device scsi-block */
QEMU_CAPS_TRANSACTION = 89, /* transaction monitor command */
QEMU_CAPS_BLOCKJOB_SYNC = 90, /* RHEL 6.2 block_job_cancel */
- QEMU_CAPS_BLOCKJOB_ASYNC = 91, /* qemu 1.1 block-job-cancel */
+ QEMU_CAPS_BLOCKJOB_ASYNC = 91, /* qemu 1.1/RHEL 6.3 block-job-cancel */
QEMU_CAPS_SCSI_CD = 92, /* -device scsi-cd */
QEMU_CAPS_IDE_CD = 93, /* -device ide-cd */
QEMU_CAPS_NO_USER_CONFIG = 94, /* -no-user-config */
@@ -206,6 +206,7 @@ enum virQEMUCapsFlags {
QEMU_CAPS_DEVICE_USB_KBD = 165, /* -device usb-kbd */
QEMU_CAPS_HOST_PCI_MULTIDOMAIN = 166, /* support domain > 0 in host pci address
*/
QEMU_CAPS_MSG_TIMESTAMP = 167, /* -msg timestamp */
+ QEMU_CAPS_ACTIVE_COMMIT = 168, /* block-commit works without 'top' */
QEMU_CAPS_LAST, /* this must always be the last item */
};
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index ca58d6b..004b63d 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -15130,8 +15130,8 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm,
* to prevent newly scheduled block jobs from confusing us. */
if (mode == BLOCK_JOB_ABORT) {
if (!async) {
- /* Older qemu that lacked async reporting also lacked
- * active commit, so we can hardcode the event to pull.
+ /* Older qemu (RHEL 6.2) that lacked async reporting also
+ * lacked copy and commit, so we can hardcode type_pull.
* We have to generate two variants of the event. */
int type = VIR_DOMAIN_BLOCK_JOB_TYPE_PULL;
int status = VIR_DOMAIN_BLOCK_JOB_CANCELED;
@@ -15291,6 +15291,8 @@ qemuDomainBlockCopy(virDomainObjPtr vm,
goto endjob;
}
+ /* Ensure that no one backports copy to RHEL 6.2, where cancel
+ * behaved differently */
if (!(virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_MIRROR) &&
virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_ASYNC))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -15509,7 +15511,10 @@ qemuDomainBlockCommit(virDomainPtr dom,
"%s", _("domain is not running"));
goto endjob;
}
- if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_COMMIT)) {
+ /* Ensure that no one backports commit to RHEL 6.2, where cancel
+ * behaved differently */
+ if (!(virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCK_COMMIT) &&
+ virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_ASYNC))) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("online commit not supported with this QEMU
binary"));
goto endjob;
@@ -15541,10 +15546,7 @@ qemuDomainBlockCommit(virDomainPtr dom,
* process; qemu 2.1 is further improving active commit. We need
* to start supporting it in libvirt. */
if (topSource == disk->src) {
- /* We assume that no one will backport qemu 2.0 active commit
- * to an earlier qemu without also backporting the block job
- * ready event; but this makes sure of that fact */
- if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKJOB_ASYNC)) {
+ if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_ACTIVE_COMMIT)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("active commit not supported with this QEMU
binary"));
goto endjob;
diff --git a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
index 63c18da..04d2141 100644
--- a/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.3.1-1.replies
@@ -308,6 +308,14 @@
}
{
+ "id": "libvirt-6",
+ "error": {
+ "class": "GenericError",
+ "desc": "Parameter 'top' is missing"
+ }
+}
+
+{
"return": [
{
"name": "SPICE_MIGRATE_COMPLETED"
@@ -382,7 +390,7 @@
"name": "SHUTDOWN"
}
],
- "id": "libvirt-6"
+ "id": "libvirt-7"
}
{
@@ -871,7 +879,7 @@
"name": "VGA"
}
],
- "id": "libvirt-7"
+ "id": "libvirt-8"
}
{
@@ -973,7 +981,7 @@
"type": "hex32"
}
],
- "id": "libvirt-8"
+ "id": "libvirt-9"
}
{
@@ -1111,11 +1119,11 @@
"type": "on/off"
}
],
- "id": "libvirt-9"
+ "id": "libvirt-10"
}
{
- "id": "libvirt-10",
+ "id": "libvirt-11",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-ccw' not found"
@@ -1123,7 +1131,7 @@
}
{
- "id": "libvirt-11",
+ "id": "libvirt-12",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-ccw' not found"
@@ -1131,7 +1139,7 @@
}
{
- "id": "libvirt-12",
+ "id": "libvirt-13",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-s390' not found"
@@ -1139,7 +1147,7 @@
}
{
- "id": "libvirt-13",
+ "id": "libvirt-14",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-s390' not found"
@@ -1147,7 +1155,7 @@
}
{
- "id": "libvirt-14",
+ "id": "libvirt-15",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'pci-assign' not found"
@@ -1197,7 +1205,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-15"
+ "id": "libvirt-16"
}
{
@@ -1231,7 +1239,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-16"
+ "id": "libvirt-17"
}
{
@@ -1305,7 +1313,7 @@
"type": "drive"
}
],
- "id": "libvirt-17"
+ "id": "libvirt-18"
}
{
@@ -1359,7 +1367,7 @@
"type": "drive"
}
],
- "id": "libvirt-18"
+ "id": "libvirt-19"
}
{
@@ -1401,11 +1409,11 @@
"type": "uint32"
}
],
- "id": "libvirt-19"
+ "id": "libvirt-20"
}
{
- "id": "libvirt-20",
+ "id": "libvirt-21",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'usb-redir' not found"
@@ -1455,7 +1463,7 @@
"type": "uint32"
}
],
- "id": "libvirt-21"
+ "id": "libvirt-22"
}
{
@@ -1481,13 +1489,13 @@
"type": "drive"
}
],
- "id": "libvirt-22"
+ "id": "libvirt-23"
}
{
"return": [
],
- "id": "libvirt-23"
+ "id": "libvirt-24"
}
{
@@ -1497,7 +1505,7 @@
"type": "uint64"
}
],
- "id": "libvirt-24"
+ "id": "libvirt-25"
}
{
@@ -1547,7 +1555,7 @@
"type": "drive"
}
],
- "id": "libvirt-25"
+ "id": "libvirt-26"
}
{
@@ -1561,7 +1569,7 @@
"type": "hex32"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-27"
}
{
@@ -1615,7 +1623,7 @@
"name": "none"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-28"
}
{
@@ -1693,7 +1701,7 @@
"name": "Opteron_G5"
}
],
- "id": "libvirt-27"
+ "id": "libvirt-29"
}
{
@@ -1701,11 +1709,11 @@
"enabled": false,
"present": true
},
- "id": "libvirt-28"
+ "id": "libvirt-30"
}
{
- "id": "libvirt-29",
+ "id": "libvirt-31",
"error": {
"class": "CommandNotFound",
"desc": "The command query-tpm-models has not been found"
@@ -1713,7 +1721,7 @@
}
{
- "id": "libvirt-30",
+ "id": "libvirt-32",
"error": {
"class": "CommandNotFound",
"desc": "The command query-tpm-types has not been found"
@@ -1721,7 +1729,7 @@
}
{
- "id": "libvirt-31",
+ "id": "libvirt-33",
"error": {
"class": "CommandNotFound",
"desc": "The command query-command-line-options has not been
found"
diff --git a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
index 4fb4061..aef359c 100644
--- a/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.4.2-1.replies
@@ -320,6 +320,14 @@
}
{
+ "id": "libvirt-6",
+ "error": {
+ "class": "GenericError",
+ "desc": "Parameter 'top' is missing"
+ }
+}
+
+{
"return": [
{
"name": "SPICE_MIGRATE_COMPLETED"
@@ -394,7 +402,7 @@
"name": "SHUTDOWN"
}
],
- "id": "libvirt-6"
+ "id": "libvirt-7"
}
{
@@ -910,7 +918,7 @@
"name": "VGA"
}
],
- "id": "libvirt-7"
+ "id": "libvirt-8"
}
{
@@ -1012,7 +1020,7 @@
"type": "hex32"
}
],
- "id": "libvirt-8"
+ "id": "libvirt-9"
}
{
@@ -1158,11 +1166,11 @@
"type": "on/off"
}
],
- "id": "libvirt-9"
+ "id": "libvirt-10"
}
{
- "id": "libvirt-10",
+ "id": "libvirt-11",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-ccw' not found"
@@ -1170,7 +1178,7 @@
}
{
- "id": "libvirt-11",
+ "id": "libvirt-12",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-ccw' not found"
@@ -1178,7 +1186,7 @@
}
{
- "id": "libvirt-12",
+ "id": "libvirt-13",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-s390' not found"
@@ -1186,7 +1194,7 @@
}
{
- "id": "libvirt-13",
+ "id": "libvirt-14",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-s390' not found"
@@ -1194,7 +1202,7 @@
}
{
- "id": "libvirt-14",
+ "id": "libvirt-15",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'pci-assign' not found"
@@ -1244,7 +1252,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-15"
+ "id": "libvirt-16"
}
{
@@ -1278,7 +1286,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-16"
+ "id": "libvirt-17"
}
{
@@ -1352,7 +1360,7 @@
"type": "drive"
}
],
- "id": "libvirt-17"
+ "id": "libvirt-18"
}
{
@@ -1406,7 +1414,7 @@
"type": "drive"
}
],
- "id": "libvirt-18"
+ "id": "libvirt-19"
}
{
@@ -1448,11 +1456,11 @@
"type": "uint32"
}
],
- "id": "libvirt-19"
+ "id": "libvirt-20"
}
{
- "id": "libvirt-20",
+ "id": "libvirt-21",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'usb-redir' not found"
@@ -1502,7 +1510,7 @@
"type": "uint32"
}
],
- "id": "libvirt-21"
+ "id": "libvirt-22"
}
{
@@ -1528,13 +1536,13 @@
"type": "drive"
}
],
- "id": "libvirt-22"
+ "id": "libvirt-23"
}
{
"return": [
],
- "id": "libvirt-23"
+ "id": "libvirt-24"
}
{
@@ -1544,7 +1552,7 @@
"type": "uint64"
}
],
- "id": "libvirt-24"
+ "id": "libvirt-25"
}
{
@@ -1594,7 +1602,7 @@
"type": "drive"
}
],
- "id": "libvirt-25"
+ "id": "libvirt-26"
}
{
@@ -1608,7 +1616,7 @@
"type": "hex32"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-27"
}
{
@@ -1665,7 +1673,7 @@
"name": "none"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-28"
}
{
@@ -1743,7 +1751,7 @@
"name": "qemu64"
}
],
- "id": "libvirt-27"
+ "id": "libvirt-29"
}
{
@@ -1751,11 +1759,11 @@
"enabled": false,
"present": true
},
- "id": "libvirt-28"
+ "id": "libvirt-30"
}
{
- "id": "libvirt-29",
+ "id": "libvirt-31",
"error": {
"class": "CommandNotFound",
"desc": "The command query-tpm-models has not been found"
@@ -1763,7 +1771,7 @@
}
{
- "id": "libvirt-30",
+ "id": "libvirt-32",
"error": {
"class": "CommandNotFound",
"desc": "The command query-tpm-types has not been found"
@@ -1771,7 +1779,7 @@
}
{
- "id": "libvirt-31",
+ "id": "libvirt-33",
"error": {
"class": "CommandNotFound",
"desc": "The command query-command-line-options has not been
found"
diff --git a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
index 686fa3e..1f84bb6 100644
--- a/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.5.3-1.replies
@@ -335,6 +335,14 @@
}
{
+ "id": "libvirt-6",
+ "error": {
+ "class": "GenericError",
+ "desc": "Parameter 'top' is missing"
+ }
+}
+
+{
"return": [
{
"name": "GUEST_PANICKED"
@@ -415,7 +423,7 @@
"name": "SHUTDOWN"
}
],
- "id": "libvirt-6"
+ "id": "libvirt-7"
}
{
@@ -976,7 +984,7 @@
"name": "VGA"
}
],
- "id": "libvirt-7"
+ "id": "libvirt-8"
}
{
@@ -1078,7 +1086,7 @@
"type": "hex32"
}
],
- "id": "libvirt-8"
+ "id": "libvirt-9"
}
{
@@ -1224,11 +1232,11 @@
"type": "on/off"
}
],
- "id": "libvirt-9"
+ "id": "libvirt-10"
}
{
- "id": "libvirt-10",
+ "id": "libvirt-11",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-ccw' not found"
@@ -1236,7 +1244,7 @@
}
{
- "id": "libvirt-11",
+ "id": "libvirt-12",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-ccw' not found"
@@ -1244,7 +1252,7 @@
}
{
- "id": "libvirt-12",
+ "id": "libvirt-13",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-s390' not found"
@@ -1252,7 +1260,7 @@
}
{
- "id": "libvirt-13",
+ "id": "libvirt-14",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-s390' not found"
@@ -1260,7 +1268,7 @@
}
{
- "id": "libvirt-14",
+ "id": "libvirt-15",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'pci-assign' not found"
@@ -1310,7 +1318,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-15"
+ "id": "libvirt-16"
}
{
@@ -1352,7 +1360,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-16"
+ "id": "libvirt-17"
}
{
@@ -1426,7 +1434,7 @@
"type": "drive"
}
],
- "id": "libvirt-17"
+ "id": "libvirt-18"
}
{
@@ -1480,7 +1488,7 @@
"type": "drive"
}
],
- "id": "libvirt-18"
+ "id": "libvirt-19"
}
{
@@ -1522,11 +1530,11 @@
"type": "uint32"
}
],
- "id": "libvirt-19"
+ "id": "libvirt-20"
}
{
- "id": "libvirt-20",
+ "id": "libvirt-21",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'usb-redir' not found"
@@ -1576,7 +1584,7 @@
"type": "uint32"
}
],
- "id": "libvirt-21"
+ "id": "libvirt-22"
}
{
@@ -1602,13 +1610,13 @@
"type": "drive"
}
],
- "id": "libvirt-22"
+ "id": "libvirt-23"
}
{
"return": [
],
- "id": "libvirt-23"
+ "id": "libvirt-24"
}
{
@@ -1618,7 +1626,7 @@
"type": "uint64"
}
],
- "id": "libvirt-24"
+ "id": "libvirt-25"
}
{
@@ -1668,7 +1676,7 @@
"type": "drive"
}
],
- "id": "libvirt-25"
+ "id": "libvirt-26"
}
{
@@ -1682,7 +1690,7 @@
"type": "hex32"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-27"
}
{
@@ -1755,7 +1763,7 @@
"cpu-max": 1
}
],
- "id": "libvirt-26"
+ "id": "libvirt-28"
}
{
@@ -1833,7 +1841,7 @@
"name": "qemu64"
}
],
- "id": "libvirt-27"
+ "id": "libvirt-29"
}
{
@@ -1841,19 +1849,19 @@
"enabled": false,
"present": true
},
- "id": "libvirt-28"
+ "id": "libvirt-30"
}
{
"return": [
],
- "id": "libvirt-29"
+ "id": "libvirt-31"
}
{
"return": [
],
- "id": "libvirt-30"
+ "id": "libvirt-32"
}
{
@@ -2529,5 +2537,5 @@
"option": "drive"
}
],
- "id": "libvirt-31"
+ "id": "libvirt-33"
}
diff --git a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
index 95e0c37..c9dc29b 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.6.0-1.replies
@@ -341,6 +341,14 @@
}
{
+ "id": "libvirt-6",
+ "error": {
+ "class": "GenericError",
+ "desc": "Parameter 'top' is missing"
+ }
+}
+
+{
"return": [
{
"name": "GUEST_PANICKED"
@@ -424,7 +432,7 @@
"name": "SHUTDOWN"
}
],
- "id": "libvirt-6"
+ "id": "libvirt-7"
}
{
@@ -1018,7 +1026,7 @@
"name": "VGA"
}
],
- "id": "libvirt-7"
+ "id": "libvirt-8"
}
{
@@ -1120,7 +1128,7 @@
"type": "hex32"
}
],
- "id": "libvirt-8"
+ "id": "libvirt-9"
}
{
@@ -1274,11 +1282,11 @@
"type": "on/off"
}
],
- "id": "libvirt-9"
+ "id": "libvirt-10"
}
{
- "id": "libvirt-10",
+ "id": "libvirt-11",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-ccw' not found"
@@ -1286,7 +1294,7 @@
}
{
- "id": "libvirt-11",
+ "id": "libvirt-12",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-ccw' not found"
@@ -1294,7 +1302,7 @@
}
{
- "id": "libvirt-12",
+ "id": "libvirt-13",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-s390' not found"
@@ -1302,7 +1310,7 @@
}
{
- "id": "libvirt-13",
+ "id": "libvirt-14",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-s390' not found"
@@ -1310,7 +1318,7 @@
}
{
- "id": "libvirt-14",
+ "id": "libvirt-15",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'pci-assign' not found"
@@ -1360,7 +1368,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-15"
+ "id": "libvirt-16"
}
{
@@ -1402,7 +1410,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-16"
+ "id": "libvirt-17"
}
{
@@ -1476,7 +1484,7 @@
"type": "drive"
}
],
- "id": "libvirt-17"
+ "id": "libvirt-18"
}
{
@@ -1530,7 +1538,7 @@
"type": "drive"
}
],
- "id": "libvirt-18"
+ "id": "libvirt-19"
}
{
@@ -1572,11 +1580,11 @@
"type": "uint32"
}
],
- "id": "libvirt-19"
+ "id": "libvirt-20"
}
{
- "id": "libvirt-20",
+ "id": "libvirt-21",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'usb-redir' not found"
@@ -1630,7 +1638,7 @@
"type": "uint32"
}
],
- "id": "libvirt-21"
+ "id": "libvirt-22"
}
{
@@ -1656,7 +1664,7 @@
"type": "drive"
}
],
- "id": "libvirt-22"
+ "id": "libvirt-23"
}
{
@@ -1666,7 +1674,7 @@
"type": "size"
}
],
- "id": "libvirt-23"
+ "id": "libvirt-24"
}
{
@@ -1680,7 +1688,7 @@
"type": "uint64"
}
],
- "id": "libvirt-24"
+ "id": "libvirt-25"
}
{
@@ -1730,7 +1738,7 @@
"type": "drive"
}
],
- "id": "libvirt-25"
+ "id": "libvirt-26"
}
{
@@ -1744,7 +1752,7 @@
"type": "hex32"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-27"
}
{
@@ -1833,7 +1841,7 @@
"cpu-max": 1
}
],
- "id": "libvirt-26"
+ "id": "libvirt-28"
}
{
@@ -1911,7 +1919,7 @@
"name": "qemu64"
}
],
- "id": "libvirt-27"
+ "id": "libvirt-29"
}
{
@@ -1919,19 +1927,19 @@
"enabled": false,
"present": true
},
- "id": "libvirt-28"
+ "id": "libvirt-30"
}
{
"return": [
],
- "id": "libvirt-29"
+ "id": "libvirt-31"
}
{
"return": [
],
- "id": "libvirt-30"
+ "id": "libvirt-32"
}
{
@@ -2509,5 +2517,5 @@
"option": "drive"
}
],
- "id": "libvirt-31"
+ "id": "libvirt-33"
}
diff --git a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
index 3ecf185..a60542a 100644
--- a/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
+++ b/tests/qemucapabilitiesdata/caps_1.6.50-1.replies
@@ -347,6 +347,14 @@
}
{
+ "id": "libvirt-6",
+ "error": {
+ "class": "GenericError",
+ "desc": "Parameter 'top' is missing"
+ }
+}
+
+{
"return": [
{
"name": "BLOCK_IMAGE_CORRUPTED"
@@ -433,7 +441,7 @@
"name": "SHUTDOWN"
}
],
- "id": "libvirt-6"
+ "id": "libvirt-7"
}
{
@@ -1024,7 +1032,7 @@
"name": "VGA"
}
],
- "id": "libvirt-7"
+ "id": "libvirt-8"
}
{
@@ -1126,7 +1134,7 @@
"type": "hex32"
}
],
- "id": "libvirt-8"
+ "id": "libvirt-9"
}
{
@@ -1280,11 +1288,11 @@
"type": "on/off"
}
],
- "id": "libvirt-9"
+ "id": "libvirt-10"
}
{
- "id": "libvirt-10",
+ "id": "libvirt-11",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-ccw' not found"
@@ -1292,7 +1300,7 @@
}
{
- "id": "libvirt-11",
+ "id": "libvirt-12",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-ccw' not found"
@@ -1300,7 +1308,7 @@
}
{
- "id": "libvirt-12",
+ "id": "libvirt-13",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-blk-s390' not found"
@@ -1308,7 +1316,7 @@
}
{
- "id": "libvirt-13",
+ "id": "libvirt-14",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'virtio-net-s390' not found"
@@ -1316,7 +1324,7 @@
}
{
- "id": "libvirt-14",
+ "id": "libvirt-15",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'pci-assign' not found"
@@ -1366,7 +1374,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-15"
+ "id": "libvirt-16"
}
{
@@ -1408,7 +1416,7 @@
"type": "pci-host-devaddr"
}
],
- "id": "libvirt-16"
+ "id": "libvirt-17"
}
{
@@ -1482,7 +1490,7 @@
"type": "drive"
}
],
- "id": "libvirt-17"
+ "id": "libvirt-18"
}
{
@@ -1536,7 +1544,7 @@
"type": "drive"
}
],
- "id": "libvirt-18"
+ "id": "libvirt-19"
}
{
@@ -1578,11 +1586,11 @@
"type": "uint32"
}
],
- "id": "libvirt-19"
+ "id": "libvirt-20"
}
{
- "id": "libvirt-20",
+ "id": "libvirt-21",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'usb-redir' not found"
@@ -1590,7 +1598,7 @@
}
{
- "id": "libvirt-21",
+ "id": "libvirt-22",
"error": {
"class": "DeviceNotFound",
"desc": "Device 'usb-host' not found"
@@ -1620,7 +1628,7 @@
"type": "drive"
}
],
- "id": "libvirt-22"
+ "id": "libvirt-23"
}
{
@@ -1630,7 +1638,7 @@
"type": "size"
}
],
- "id": "libvirt-23"
+ "id": "libvirt-24"
}
{
@@ -1644,7 +1652,7 @@
"type": "uint64"
}
],
- "id": "libvirt-24"
+ "id": "libvirt-25"
}
{
@@ -1694,7 +1702,7 @@
"type": "drive"
}
],
- "id": "libvirt-25"
+ "id": "libvirt-26"
}
{
@@ -1708,7 +1716,7 @@
"type": "hex32"
}
],
- "id": "libvirt-26"
+ "id": "libvirt-27"
}
{
@@ -1805,7 +1813,7 @@
"cpu-max": 1
}
],
- "id": "libvirt-26"
+ "id": "libvirt-28"
}
{
@@ -1883,7 +1891,7 @@
"name": "qemu64"
}
],
- "id": "libvirt-27"
+ "id": "libvirt-29"
}
{
@@ -1891,19 +1899,19 @@
"enabled": false,
"present": true
},
- "id": "libvirt-28"
+ "id": "libvirt-30"
}
{
"return": [
],
- "id": "libvirt-29"
+ "id": "libvirt-31"
}
{
"return": [
],
- "id": "libvirt-30"
+ "id": "libvirt-32"
}
{
@@ -2486,5 +2494,5 @@
"option": "drive"
}
],
- "id": "libvirt-31"
+ "id": "libvirt-33"
}
--
1.9.3