From c7533d29df428e0fa47fda0552ac777a7c3f40f5 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Apr 06 2021 21:22:25 +0000 Subject: Rebase to 6.0.0-rc2 Signed-off-by: Cole Robinson --- diff --git a/0001-iotests-Fix-_send_qemu_cmd-with-bash-5.1.patch b/0001-iotests-Fix-_send_qemu_cmd-with-bash-5.1.patch deleted file mode 100644 index 2ab7fe2..0000000 --- a/0001-iotests-Fix-_send_qemu_cmd-with-bash-5.1.patch +++ /dev/null @@ -1,1652 +0,0 @@ -From 0e72078128229bf9efb542e396ab44bf91b91340 Mon Sep 17 00:00:00 2001 -From: Max Reitz -Date: Thu, 17 Dec 2020 16:38:03 +0100 -Subject: [PATCH] iotests: Fix _send_qemu_cmd with bash 5.1 - -With bash 5.1, the output of the following script changes: - - a=("double space") - a=${a[@]:0:1} - echo "$a" - -from "double space" to "double space", i.e. all white space is -preserved as-is. This is probably what we actually want here (judging -from the "...to accommodate pathnames with spaces" comment), but before -5.1, we would have to quote the ${} slice to get the same behavior. - -In any case, without quoting, the reference output of many iotests is -different between bash 5.1 and pre-5.1, which is not very good. The -output of 5.1 is what we want, so whatever we do to get pre-5.1 to the -same result, it means we have to fix the reference output of basically -all tests that invoke _send_qemu_cmd (except the ones that only use -single spaces in the commands they invoke). - -Instead of quoting the ${} slice (cmd="${$@: 1:...}"), we can also just -not use array slicing and replace the whole thing with a simple "cmd=$1; -shift", which works because all callers quote the whole $cmd argument -anyway. - -Signed-off-by: Max Reitz -Message-Id: <20201217153803.101231-3-mreitz@redhat.com> -Reviewed-by: Kevin Wolf ---- - tests/qemu-iotests/085.out | 167 ++++++++++++++++++++++++++++----- - tests/qemu-iotests/094.out | 10 +- - tests/qemu-iotests/095.out | 4 +- - tests/qemu-iotests/109.out | 88 ++++++++++++----- - tests/qemu-iotests/117.out | 13 ++- - tests/qemu-iotests/127.out | 12 ++- - tests/qemu-iotests/140.out | 10 +- - tests/qemu-iotests/141.out | 128 +++++++++++++++++++------ - tests/qemu-iotests/143.out | 4 +- - tests/qemu-iotests/144.out | 28 +++++- - tests/qemu-iotests/153.out | 18 ++-- - tests/qemu-iotests/156.out | 39 ++++++-- - tests/qemu-iotests/161.out | 18 +++- - tests/qemu-iotests/173.out | 25 ++++- - tests/qemu-iotests/182.out | 42 +++++++-- - tests/qemu-iotests/183.out | 19 +++- - tests/qemu-iotests/185.out | 45 +++++++-- - tests/qemu-iotests/191.out | 12 ++- - tests/qemu-iotests/223.out | 92 ++++++++++++------ - tests/qemu-iotests/229.out | 13 ++- - tests/qemu-iotests/249.out | 16 +++- - tests/qemu-iotests/common.qemu | 11 +-- - 24 files changed, 728 insertions(+), 199 deletions(-) - -diff --git a/tests/qemu-iotests/085.out b/tests/qemu-iotests/085.out -index 7fc44b1c61..32a193f2c2 100644 ---- a/tests/qemu-iotests/085.out -+++ b/tests/qemu-iotests/085.out -@@ -12,56 +12,135 @@ Formatting 'TEST_DIR/t.IMGFMT.2', fmt=IMGFMT size=134217728 - - === Create a single snapshot on virtio0 === - --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', 'format': 'IMGFMT' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { 'device': 'virtio0', -+ 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', -+ 'format': 'IMGFMT' } } - Formatting 'TEST_DIR/1-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2.1 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} - - === Invalid command - missing device and nodename === - --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', 'format': 'IMGFMT' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', -+ 'format': 'IMGFMT' } } - {"error": {"class": "GenericError", "desc": "Cannot find device= nor node_name="}} - - === Invalid command - missing snapshot-file === - --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'format': 'IMGFMT' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { 'device': 'virtio0', -+ 'format': 'IMGFMT' } } - {"error": {"class": "GenericError", "desc": "Parameter 'snapshot-file' is missing"}} - - - === Create several transactional group snapshots === - --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/2-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/2-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/2-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/2-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/2-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/1-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/2-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2.2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/3-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/3-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/3-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/3-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/3-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/2-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/3-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/2-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/4-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/4-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/4-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/4-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/4-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/3-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/4-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/3-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/5-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/5-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/5-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/5-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/5-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/4-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/5-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/4-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/6-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/6-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/6-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/6-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/6-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/5-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/6-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/5-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/7-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/7-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/7-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/7-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/7-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/6-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/7-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/6-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/8-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/8-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/8-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/8-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/8-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/7-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/8-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/7-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/9-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/9-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/9-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/9-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/9-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/8-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/9-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/8-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/10-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/10-snapshot-v1.IMGFMT' } } ] } } -+{ 'execute': 'transaction', 'arguments': -+ {'actions': [ -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio0', -+ 'snapshot-file': 'TEST_DIR/10-snapshot-v0.IMGFMT' } }, -+ { 'type': 'blockdev-snapshot-sync', 'data' : -+ { 'device': 'virtio1', -+ 'snapshot-file': 'TEST_DIR/10-snapshot-v1.IMGFMT' } } ] -+ } } - Formatting 'TEST_DIR/10-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/9-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=134217728 backing_file=TEST_DIR/9-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} -@@ -69,48 +148,84 @@ Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 extende - === Create a couple of snapshots using blockdev-snapshot === - - Formatting 'TEST_DIR/11-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/10-snapshot-v0.IMGFMT backing_fmt=IMGFMT --{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_11', 'backing': null, 'file': { 'driver': 'file', 'filename': 'TEST_DIR/11-snapshot-v0.IMGFMT', 'node-name': 'file_11' } } } -+{ 'execute': 'blockdev-add', 'arguments': -+ { 'driver': 'IMGFMT', 'node-name': 'snap_11', 'backing': null, -+ 'file': -+ { 'driver': 'file', 'filename': 'TEST_DIR/11-snapshot-v0.IMGFMT', -+ 'node-name': 'file_11' } } } - {"return": {}} --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_11' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node': 'virtio0', -+ 'overlay':'snap_11' } } - {"return": {}} - Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/11-snapshot-v0.IMGFMT backing_fmt=IMGFMT --{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_12', 'backing': null, 'file': { 'driver': 'file', 'filename': 'TEST_DIR/12-snapshot-v0.IMGFMT', 'node-name': 'file_12' } } } -+{ 'execute': 'blockdev-add', 'arguments': -+ { 'driver': 'IMGFMT', 'node-name': 'snap_12', 'backing': null, -+ 'file': -+ { 'driver': 'file', 'filename': 'TEST_DIR/12-snapshot-v0.IMGFMT', -+ 'node-name': 'file_12' } } } - {"return": {}} --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_12' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node': 'virtio0', -+ 'overlay':'snap_12' } } - {"return": {}} - - === Invalid command - cannot create a snapshot using a file BDS === - --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node':'virtio0', 'overlay':'file_12' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node':'virtio0', -+ 'overlay':'file_12' } -+ } - {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} - - === Invalid command - snapshot node used as active layer === - --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_12' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node': 'virtio0', -+ 'overlay':'snap_12' } } - {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node':'virtio0', 'overlay':'virtio0' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node':'virtio0', -+ 'overlay':'virtio0' } -+ } - {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node':'virtio0', 'overlay':'virtio1' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node':'virtio0', -+ 'overlay':'virtio1' } -+ } - {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} - - === Invalid command - snapshot node used as backing hd === - --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_11' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node': 'virtio0', -+ 'overlay':'snap_11' } } - {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} - - === Invalid command - snapshot node has a backing image === - - Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT --{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_13', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'node-name': 'file_13' } } } --{"return": {}} --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_13' } } -+{ 'execute': 'blockdev-add', 'arguments': -+ { 'driver': 'IMGFMT', 'node-name': 'snap_13', -+ 'file': -+ { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', -+ 'node-name': 'file_13' } } } -+{"return": {}} -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node': 'virtio0', -+ 'overlay':'snap_13' } } - {"error": {"class": "GenericError", "desc": "The overlay already has a backing image"}} - - === Invalid command - The node does not exist === - --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_14' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node': 'virtio0', -+ 'overlay':'snap_14' } } - {"error": {"class": "GenericError", "desc": "Cannot find device=snap_14 nor node_name=snap_14"}} --{ 'execute': 'blockdev-snapshot', 'arguments': { 'node':'nodevice', 'overlay':'snap_13' } } -+{ 'execute': 'blockdev-snapshot', -+ 'arguments': { 'node':'nodevice', -+ 'overlay':'snap_13' } -+ } - {"error": {"class": "GenericError", "desc": "Cannot find device=nodevice nor node_name=nodevice"}} - *** done -diff --git a/tests/qemu-iotests/094.out b/tests/qemu-iotests/094.out -index 9b6c57b3e2..97f894cf8f 100644 ---- a/tests/qemu-iotests/094.out -+++ b/tests/qemu-iotests/094.out -@@ -3,13 +3,19 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/source.IMGFMT', fmt=IMGFMT size=67108864 - {'execute': 'qmp_capabilities'} - {"return": {}} --{'execute': 'drive-mirror', 'arguments': {'device': 'src', 'target': 'nbd+unix:///?socket=SOCK_DIR/nbd', 'format': 'nbd', 'sync':'full', 'mode':'existing'}} -+{'execute': 'drive-mirror', -+ 'arguments': {'device': 'src', -+ 'target': 'nbd+unix:///?socket=SOCK_DIR/nbd', -+ 'format': 'nbd', -+ 'sync':'full', -+ 'mode':'existing'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 67108864, "offset": 67108864, "speed": 0, "type": "mirror"}} --{'execute': 'block-job-complete', 'arguments': {'device': 'src'}} -+{'execute': 'block-job-complete', -+ 'arguments': {'device': 'src'}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "src"}} -diff --git a/tests/qemu-iotests/095.out b/tests/qemu-iotests/095.out -index e66ced58f8..8257c5e1e6 100644 ---- a/tests/qemu-iotests/095.out -+++ b/tests/qemu-iotests/095.out -@@ -12,7 +12,9 @@ virtual size: 5 MiB (5242880 bytes) - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'block-commit', 'arguments': { 'device': 'test', 'top': 'TEST_DIR/t.IMGFMT.snp1' } } -+{ 'execute': 'block-commit', -+ 'arguments': { 'device': 'test', -+ 'top': 'TEST_DIR/t.IMGFMT.snp1' } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "test"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "test"}} - {"return": {}} -diff --git a/tests/qemu-iotests/109.out b/tests/qemu-iotests/109.out -index ad739df46c..6e73406cdb 100644 ---- a/tests/qemu-iotests/109.out -+++ b/tests/qemu-iotests/109.out -@@ -6,7 +6,9 @@ Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -27,7 +29,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -51,7 +55,9 @@ Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -72,7 +78,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -96,7 +104,9 @@ Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -117,7 +127,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -141,7 +153,9 @@ Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -162,7 +176,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -186,7 +202,9 @@ Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -207,7 +225,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -231,7 +251,9 @@ Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -252,7 +274,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -275,7 +299,9 @@ Images are identical. - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -296,7 +322,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -319,7 +347,9 @@ Images are identical. - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -340,7 +370,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -363,7 +395,9 @@ Images are identical. - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -384,7 +418,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -407,7 +443,9 @@ Images are identical. - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -428,7 +466,9 @@ read 512/512 bytes at offset 0 - 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -@@ -451,7 +491,9 @@ Images are identical. - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=SIZE - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. - Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. - Specify the 'raw' format explicitly to remove the restrictions. -@@ -473,7 +515,9 @@ WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed - Images are identical. - { 'execute': 'qmp_capabilities' } - {"return": {}} --{'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} -+{'execute':'drive-mirror', 'arguments':{ -+ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', -+ 'mode': 'existing', 'sync': 'full'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} - {"return": {}} -diff --git a/tests/qemu-iotests/117.out b/tests/qemu-iotests/117.out -index bb623dcc0a..735ffd25c6 100644 ---- a/tests/qemu-iotests/117.out -+++ b/tests/qemu-iotests/117.out -@@ -2,11 +2,18 @@ QA output created by 117 - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536 - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'blockdev-add', 'arguments': { 'node-name': 'protocol', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' } } -+{ 'execute': 'blockdev-add', -+ 'arguments': { 'node-name': 'protocol', -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT' } } - {"return": {}} --{ 'execute': 'blockdev-add', 'arguments': { 'node-name': 'format', 'driver': 'IMGFMT', 'file': 'protocol' } } -+{ 'execute': 'blockdev-add', -+ 'arguments': { 'node-name': 'format', -+ 'driver': 'IMGFMT', -+ 'file': 'protocol' } } - {"return": {}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io format "write -P 42 0 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'qemu-io format "write -P 42 0 64k"' } } - wrote 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} -diff --git a/tests/qemu-iotests/127.out b/tests/qemu-iotests/127.out -index efd6cb327f..1685c4850a 100644 ---- a/tests/qemu-iotests/127.out -+++ b/tests/qemu-iotests/127.out -@@ -6,13 +6,21 @@ wrote 42/42 bytes at offset 0 - 42 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'drive-mirror', 'arguments': { 'job-id': 'mirror', 'device': 'source', 'target': 'TEST_DIR/t.IMGFMT.overlay1', 'mode': 'existing', 'sync': 'top' } } -+{ 'execute': 'drive-mirror', -+ 'arguments': { -+ 'job-id': 'mirror', -+ 'device': 'source', -+ 'target': 'TEST_DIR/t.IMGFMT.overlay1', -+ 'mode': 'existing', -+ 'sync': 'top' -+ } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "mirror"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "mirror"}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "mirror"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "mirror", "len": 65536, "offset": 65536, "speed": 0, "type": "mirror"}} --{ 'execute': 'block-job-complete', 'arguments': { 'device': 'mirror' } } -+{ 'execute': 'block-job-complete', -+ 'arguments': { 'device': 'mirror' } } - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "mirror"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "mirror"}} -diff --git a/tests/qemu-iotests/140.out b/tests/qemu-iotests/140.out -index 62d9c3ab3c..312f76d5da 100644 ---- a/tests/qemu-iotests/140.out -+++ b/tests/qemu-iotests/140.out -@@ -4,13 +4,17 @@ wrote 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'nbd-server-start', 'arguments': { 'addr': { 'type': 'unix', 'data': { 'path': 'SOCK_DIR/nbd' }}}} -+{ 'execute': 'nbd-server-start', -+ 'arguments': { 'addr': { 'type': 'unix', -+ 'data': { 'path': 'SOCK_DIR/nbd' }}}} - {"return": {}} --{ 'execute': 'nbd-server-add', 'arguments': { 'device': 'drv' }} -+{ 'execute': 'nbd-server-add', -+ 'arguments': { 'device': 'drv' }} - {"return": {}} - read 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) --{ 'execute': 'eject', 'arguments': { 'device': 'drv' }} -+{ 'execute': 'eject', -+ 'arguments': { 'device': 'drv' }} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "drv"}} - qemu-io: can't open device nbd+unix:///drv?socket=SOCK_DIR/nbd: Requested export not available - server reported: export 'drv' not present -diff --git a/tests/qemu-iotests/141.out b/tests/qemu-iotests/141.out -index 08e0aecd65..6d8652e22b 100644 ---- a/tests/qemu-iotests/141.out -+++ b/tests/qemu-iotests/141.out -@@ -7,105 +7,173 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m. - - === Testing drive-backup === - --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} --{"return": {}} --{'execute': 'drive-backup', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'target': 'TEST_DIR/o.IMGFMT', 'format': 'IMGFMT', 'sync': 'none'}} -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'drv0', -+ 'driver': 'IMGFMT', -+ 'file': { -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT' -+ }}} -+{"return": {}} -+{'execute': 'drive-backup', -+'arguments': {'job-id': 'job0', -+'device': 'drv0', -+'target': 'TEST_DIR/o.IMGFMT', -+'format': 'IMGFMT', -+'sync': 'none'}} - Formatting 'TEST_DIR/o.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "paused", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: node is used as backing hd of 'NODE_NAME'"}} --{'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} -+{'execute': 'block-job-cancel', -+ 'arguments': {'device': 'job0'}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 0, "speed": 0, "type": "backup"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"return": {}} - - === Testing drive-mirror === - --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} --{"return": {}} --{'execute': 'drive-mirror', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'target': 'TEST_DIR/o.IMGFMT', 'format': 'IMGFMT', 'sync': 'none'}} -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'drv0', -+ 'driver': 'IMGFMT', -+ 'file': { -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT' -+ }}} -+{"return": {}} -+{'execute': 'drive-mirror', -+'arguments': {'job-id': 'job0', -+'device': 'drv0', -+'target': 'TEST_DIR/o.IMGFMT', -+'format': 'IMGFMT', -+'sync': 'none'}} - Formatting 'TEST_DIR/o.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "mirror"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: mirror"}} --{'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} -+{'execute': 'block-job-cancel', -+ 'arguments': {'device': 'job0'}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "mirror"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"return": {}} - - === Testing active block-commit === - --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} --{"return": {}} --{'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'drv0'}} -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'drv0', -+ 'driver': 'IMGFMT', -+ 'file': { -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT' -+ }}} -+{"return": {}} -+{'execute': 'block-commit', -+'arguments': {'job-id': 'job0', 'device': 'drv0'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: commit"}} --{'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} -+{'execute': 'block-job-cancel', -+ 'arguments': {'device': 'job0'}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"return": {}} - - === Testing non-active block-commit === - - wrote 1048576/1048576 bytes at offset 0 - 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} --{"return": {}} --{'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'top': 'TEST_DIR/m.IMGFMT', 'speed': 1}} -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'drv0', -+ 'driver': 'IMGFMT', -+ 'file': { -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT' -+ }}} -+{"return": {}} -+{'execute': 'block-commit', -+'arguments': {'job-id': 'job0', -+'device': 'drv0', -+'top': 'TEST_DIR/m.IMGFMT', -+'speed': 1}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"error": {"class": "GenericError", "desc": "Node drv0 is in use"}} --{'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} -+{'execute': 'block-job-cancel', -+ 'arguments': {'device': 'job0'}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 524288, "speed": 1, "type": "commit"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"return": {}} - - === Testing block-stream === - - wrote 1048576/1048576 bytes at offset 0 - 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} --{"return": {}} --{'execute': 'block-stream', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'speed': 1}} -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'drv0', -+ 'driver': 'IMGFMT', -+ 'file': { -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT' -+ }}} -+{"return": {}} -+{'execute': 'block-stream', -+'arguments': {'job-id': 'job0', -+'device': 'drv0', -+'speed': 1}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"error": {"class": "GenericError", "desc": "Node drv0 is in use"}} --{'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} -+{'execute': 'block-job-cancel', -+ 'arguments': {'device': 'job0'}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 524288, "speed": 1, "type": "stream"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} --{'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} -+{'execute': 'blockdev-del', -+ 'arguments': {'node-name': 'drv0'}} - {"return": {}} - *** done -diff --git a/tests/qemu-iotests/143.out b/tests/qemu-iotests/143.out -index fc9c0a761f..9ec5888e0e 100644 ---- a/tests/qemu-iotests/143.out -+++ b/tests/qemu-iotests/143.out -@@ -1,7 +1,9 @@ - QA output created by 143 - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'nbd-server-start', 'arguments': { 'addr': { 'type': 'unix', 'data': { 'path': 'SOCK_DIR/nbd' }}}} -+{ 'execute': 'nbd-server-start', -+ 'arguments': { 'addr': { 'type': 'unix', -+ 'data': { 'path': 'SOCK_DIR/nbd' }}}} - {"return": {}} - qemu-io: can't open device nbd+unix:///no_such_export?socket=SOCK_DIR/nbd: Requested export not available - server reported: export 'no_such_export' not present -diff --git a/tests/qemu-iotests/144.out b/tests/qemu-iotests/144.out -index 13e0c4f5a7..b3b4812015 100644 ---- a/tests/qemu-iotests/144.out -+++ b/tests/qemu-iotests/144.out -@@ -8,19 +8,33 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=536870912 - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp.IMGFMT', 'format': 'IMGFMT' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { -+ 'device': 'virtio0', -+ 'snapshot-file':'TEST_DIR/tmp.IMGFMT', -+ 'format': 'IMGFMT' -+ } -+ } - Formatting 'TEST_DIR/tmp.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} - - === Performing block-commit on active layer === - --{ 'execute': 'block-commit', 'arguments': { 'device': 'virtio0' } } -+{ 'execute': 'block-commit', -+ 'arguments': { -+ 'device': 'virtio0' -+ } -+ } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "virtio0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "virtio0"}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "virtio0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "virtio0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} --{ 'execute': 'block-job-complete', 'arguments': { 'device': 'virtio0' } } -+{ 'execute': 'block-job-complete', -+ 'arguments': { -+ 'device': 'virtio0' -+ } -+ } - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "virtio0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "virtio0"}} -@@ -30,7 +44,13 @@ Formatting 'TEST_DIR/tmp.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off co - - === Performing Live Snapshot 2 === - --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp2.IMGFMT', 'format': 'IMGFMT' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { -+ 'device': 'virtio0', -+ 'snapshot-file':'TEST_DIR/tmp2.IMGFMT', -+ 'format': 'IMGFMT' -+ } -+ } - Formatting 'TEST_DIR/tmp2.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} - *** done -diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out -index fcaa71aeee..ff8e55864a 100644 ---- a/tests/qemu-iotests/153.out -+++ b/tests/qemu-iotests/153.out -@@ -425,7 +425,8 @@ _qemu_img_wrapper commit -b TEST_DIR/t.qcow2.b TEST_DIR/t.qcow2.c - { 'execute': 'qmp_capabilities' } - {"return": {}} - Adding drive --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT' } } - {"return": "OKrn"} - - _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 -@@ -435,25 +436,30 @@ Creating overlay with qemu-img when the guest is running should be allowed - - _qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 -F qcow2 TEST_DIR/t.qcow2.overlay - == Closing an image should unlock it == --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'drive_del d0' } } - {"return": ""} - - _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 - Adding two and closing one --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT,readonly=on' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT,readonly=on' } } - {"return": "OKrn"} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d1,file=TEST_DIR/t.IMGFMT,readonly=on' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'drive_add 0 if=none,id=d1,file=TEST_DIR/t.IMGFMT,readonly=on' } } - {"return": "OKrn"} - - _qemu_img_wrapper info TEST_DIR/t.qcow2 --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'drive_del d0' } } - {"return": ""} - - _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 - qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock - Is another process using the image [TEST_DIR/t.qcow2]? - Closing the other --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d1' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': 'drive_del d1' } } - {"return": ""} - - _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 -diff --git a/tests/qemu-iotests/156.out b/tests/qemu-iotests/156.out -index cce167b63f..4a22f0c41a 100644 ---- a/tests/qemu-iotests/156.out -+++ b/tests/qemu-iotests/156.out -@@ -8,24 +8,37 @@ wrote 196608/196608 bytes at offset 65536 - { 'execute': 'qmp_capabilities' } - {"return": {}} - Formatting 'TEST_DIR/t.IMGFMT.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'source', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'format': 'IMGFMT', 'mode': 'existing' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { 'device': 'source', -+ 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', -+ 'format': 'IMGFMT', -+ 'mode': 'existing' } } - {"return": {}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "write -P 3 128k 128k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io source "write -P 3 128k 128k"' } } - wrote 131072/131072 bytes at offset 131072 - 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} - Formatting 'TEST_DIR/t.IMGFMT.target.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.target backing_fmt=IMGFMT --{ 'execute': 'drive-mirror', 'arguments': { 'device': 'source', 'target': 'TEST_DIR/t.IMGFMT.target.overlay', 'mode': 'existing', 'sync': 'top' } } -+{ 'execute': 'drive-mirror', -+ 'arguments': { 'device': 'source', -+ 'target': 'TEST_DIR/t.IMGFMT.target.overlay', -+ 'mode': 'existing', -+ 'sync': 'top' } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "source"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "source"}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "source"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "source", "len": 131072, "offset": 131072, "speed": 0, "type": "mirror"}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "write -P 4 192k 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io source "write -P 4 192k 64k"' } } - wrote 65536/65536 bytes at offset 196608 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'block-job-complete', 'arguments': { 'device': 'source' } } -+{ 'execute': 'block-job-complete', -+ 'arguments': { 'device': 'source' } } - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "source"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "source"}} -@@ -33,19 +46,27 @@ wrote 65536/65536 bytes at offset 196608 - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "source"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "source"}} - --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 1 0k 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io source "read -P 1 0k 64k"' } } - read 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 2 64k 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io source "read -P 2 64k 64k"' } } - read 65536/65536 bytes at offset 65536 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 3 128k 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io source "read -P 3 128k 64k"' } } - read 65536/65536 bytes at offset 131072 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 4 192k 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io source "read -P 4 192k 64k"' } } - read 65536/65536 bytes at offset 196608 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} -diff --git a/tests/qemu-iotests/161.out b/tests/qemu-iotests/161.out -index 3d8d89a9da..6cc285afcf 100644 ---- a/tests/qemu-iotests/161.out -+++ b/tests/qemu-iotests/161.out -@@ -7,18 +7,23 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t. - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } - {"return": ""} - - *** Stream and then change an option on the backing file - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'block-stream', 'arguments': { 'device': 'none0', 'base': 'TEST_DIR/t.IMGFMT.base' } } -+{ 'execute': 'block-stream', 'arguments': { 'device': 'none0', -+ 'base': 'TEST_DIR/t.IMGFMT.base' } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "none0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "none0"}} - {"return": {}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "none0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "none0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "none0", "len": 1048576, "offset": 1048576, "speed": 0, "type": "stream"}} -@@ -33,11 +38,14 @@ Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DI - Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int backing_fmt=IMGFMT - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'block-commit', 'arguments': { 'device': 'none0', 'top': 'TEST_DIR/t.IMGFMT.int' } } -+{ 'execute': 'block-commit', 'arguments': { 'device': 'none0', -+ 'top': 'TEST_DIR/t.IMGFMT.int' } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "none0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "none0"}} - {"return": {}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "none0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "none0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "none0", "len": 1048576, "offset": 1048576, "speed": 0, "type": "commit"}} -diff --git a/tests/qemu-iotests/173.out b/tests/qemu-iotests/173.out -index b5114b5c79..2d6490d680 100644 ---- a/tests/qemu-iotests/173.out -+++ b/tests/qemu-iotests/173.out -@@ -6,11 +6,30 @@ Formatting 'TEST_DIR/image.snp1', fmt=IMGFMT size=104857600 - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'arguments': { 'device': 'disk2', 'format': 'IMGFMT', 'mode': 'existing', 'snapshot-file': 'TEST_DIR/image.snp1', 'snapshot-node-name': 'snp1' }, 'execute': 'blockdev-snapshot-sync' } -+{ 'arguments': { -+ 'device': 'disk2', -+ 'format': 'IMGFMT', -+ 'mode': 'existing', -+ 'snapshot-file': 'TEST_DIR/image.snp1', -+ 'snapshot-node-name': 'snp1' -+ }, -+ 'execute': 'blockdev-snapshot-sync' -+ } - {"return": {}} --{ 'arguments': { 'backing-file': 'image.base', 'device': 'disk2', 'image-node-name': 'snp1' }, 'execute': 'change-backing-file' } -+{ 'arguments': { -+ 'backing-file': 'image.base', -+ 'device': 'disk2', -+ 'image-node-name': 'snp1' -+ }, -+ 'execute': 'change-backing-file' -+ } - {"return": {}} --{ 'arguments': { 'base': 'TEST_DIR/image.base', 'device': 'disk2' }, 'execute': 'block-stream' } -+{ 'arguments': { -+ 'base': 'TEST_DIR/image.base', -+ 'device': 'disk2' -+ }, -+ 'execute': 'block-stream' -+ } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk2"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk2"}} - {"return": {}} -diff --git a/tests/qemu-iotests/182.out b/tests/qemu-iotests/182.out -index ce23340670..57f7265458 100644 ---- a/tests/qemu-iotests/182.out -+++ b/tests/qemu-iotests/182.out -@@ -10,16 +10,42 @@ Is another process using the image [TEST_DIR/t.qcow2]? - - {'execute': 'qmp_capabilities'} - {"return": {}} --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'node0', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } --{"return": {}} --{'execute': 'blockdev-snapshot-sync', 'arguments': { 'node-name': 'node0', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'snapshot-node-name': 'node1' } } -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'node0', -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT', -+ 'locking': 'on' -+ } } -+{"return": {}} -+{'execute': 'blockdev-snapshot-sync', -+ 'arguments': { -+ 'node-name': 'node0', -+ 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', -+ 'snapshot-node-name': 'node1' -+ } } - Formatting 'TEST_DIR/t.qcow2.overlay', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=197120 backing_file=TEST_DIR/t.qcow2 backing_fmt=file lazy_refcounts=off refcount_bits=16 - {"return": {}} --{'execute': 'blockdev-add', 'arguments': { 'node-name': 'node1', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } --{"return": {}} --{'execute': 'nbd-server-start', 'arguments': { 'addr': { 'type': 'unix', 'data': { 'path': 'SOCK_DIR/nbd.socket' } } } } --{"return": {}} --{'execute': 'nbd-server-add', 'arguments': { 'device': 'node1' } } -+{'execute': 'blockdev-add', -+ 'arguments': { -+ 'node-name': 'node1', -+ 'driver': 'file', -+ 'filename': 'TEST_DIR/t.IMGFMT', -+ 'locking': 'on' -+ } } -+{"return": {}} -+{'execute': 'nbd-server-start', -+ 'arguments': { -+ 'addr': { -+ 'type': 'unix', -+ 'data': { -+ 'path': 'SOCK_DIR/nbd.socket' -+ } } } } -+{"return": {}} -+{'execute': 'nbd-server-add', -+ 'arguments': { -+ 'device': 'node1' -+ } } - {"return": {}} - - === Testing failure to loosen restrictions === -diff --git a/tests/qemu-iotests/183.out b/tests/qemu-iotests/183.out -index d4be2cb2de..fd9c2e52a5 100644 ---- a/tests/qemu-iotests/183.out -+++ b/tests/qemu-iotests/183.out -@@ -11,18 +11,23 @@ Formatting 'TEST_DIR/t.IMGFMT.dest', fmt=IMGFMT size=67108864 - - === Write something on the source === - --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write -P 0x55 0 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io disk "write -P 0x55 0 64k"' } } - wrote 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "read -P 0x55 0 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io disk "read -P 0x55 0 64k"' } } - read 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} - - === Do block migration to destination === - --{ 'execute': 'migrate', 'arguments': { 'uri': 'unix:SOCK_DIR/migrate', 'blk': true } } -+{ 'execute': 'migrate', -+ 'arguments': { 'uri': 'unix:SOCK_DIR/migrate', 'blk': true } } - {"return": {}} - { 'execute': 'query-status' } - {"return": {"status": "postmigrate", "singlestep": false, "running": false}} -@@ -32,11 +37,15 @@ read 65536/65536 bytes at offset 0 - { 'execute': 'query-status' } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "RESUME"} - {"return": {"status": "running", "singlestep": false, "running": true}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "read -P 0x55 0 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io disk "read -P 0x55 0 64k"' } } - read 65536/65536 bytes at offset 0 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write -P 0x66 1M 64k"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io disk "write -P 0x66 1M 64k"' } } - wrote 65536/65536 bytes at offset 1048576 - 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} -diff --git a/tests/qemu-iotests/185.out b/tests/qemu-iotests/185.out -index 339438ac68..eab55d22bf 100644 ---- a/tests/qemu-iotests/185.out -+++ b/tests/qemu-iotests/185.out -@@ -8,20 +8,34 @@ Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864 - - === Creating backing chain === - --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT.mid', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { 'device': 'disk', -+ 'snapshot-file': 'TEST_DIR/t.IMGFMT.mid', -+ 'format': 'IMGFMT', -+ 'mode': 'absolute-paths' } } - Formatting 'TEST_DIR/t.qcow2.mid', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=67108864 backing_file=TEST_DIR/t.qcow2.base backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} --{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write 0 4M"' } } -+{ 'execute': 'human-monitor-command', -+ 'arguments': { 'command-line': -+ 'qemu-io disk "write 0 4M"' } } - wrote 4194304/4194304 bytes at offset 0 - 4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) - {"return": ""} --{ 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } -+{ 'execute': 'blockdev-snapshot-sync', -+ 'arguments': { 'device': 'disk', -+ 'snapshot-file': 'TEST_DIR/t.IMGFMT', -+ 'format': 'IMGFMT', -+ 'mode': 'absolute-paths' } } - Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=67108864 backing_file=TEST_DIR/t.qcow2.mid backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 - {"return": {}} - - === Start commit job and exit qemu === - --{ 'execute': 'block-commit', 'arguments': { 'device': 'disk', 'base':'TEST_DIR/t.IMGFMT.base', 'top': 'TEST_DIR/t.IMGFMT.mid', 'speed': 65536 } } -+{ 'execute': 'block-commit', -+ 'arguments': { 'device': 'disk', -+ 'base':'TEST_DIR/t.IMGFMT.base', -+ 'top': 'TEST_DIR/t.IMGFMT.mid', -+ 'speed': 65536 } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} - {"return": {}} -@@ -34,7 +48,10 @@ Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off comp - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'block-commit', 'arguments': { 'device': 'disk', 'base':'TEST_DIR/t.IMGFMT.base', 'speed': 65536 } } -+{ 'execute': 'block-commit', -+ 'arguments': { 'device': 'disk', -+ 'base':'TEST_DIR/t.IMGFMT.base', -+ 'speed': 65536 } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} - {"return": {}} -@@ -47,7 +64,12 @@ Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off comp - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'drive-mirror', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } -+{ 'execute': 'drive-mirror', -+ 'arguments': { 'device': 'disk', -+ 'target': 'TEST_DIR/t.IMGFMT.copy', -+ 'format': 'IMGFMT', -+ 'sync': 'full', -+ 'speed': 65536 } } - Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} -@@ -61,7 +83,12 @@ Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 cluster_size=65536 extended_l2=off - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'drive-backup', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } -+{ 'execute': 'drive-backup', -+ 'arguments': { 'device': 'disk', -+ 'target': 'TEST_DIR/t.IMGFMT.copy', -+ 'format': 'IMGFMT', -+ 'sync': 'full', -+ 'speed': 65536 } } - Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} -@@ -77,7 +104,9 @@ Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 cluster_size=65536 extended_l2=off - - { 'execute': 'qmp_capabilities' } - {"return": {}} --{ 'execute': 'block-stream', 'arguments': { 'device': 'disk', 'speed': 65536 } } -+{ 'execute': 'block-stream', -+ 'arguments': { 'device': 'disk', -+ 'speed': 65536 } } - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} - {"return": {}} -diff --git a/tests/qemu-iotests/191.out b/tests/qemu-iotests/191.out -index 11aaf3b691..022021efab 100644 ---- a/tests/qemu-iotests/191.out -+++ b/tests/qemu-iotests/191.out -@@ -16,7 +16,11 @@ wrote 65536/65536 bytes at offset 1048576 - - === Perform commit job === - --{ 'execute': 'block-commit', 'arguments': { 'job-id': 'commit0', 'device': 'top', 'base':'TEST_DIR/t.IMGFMT.base', 'top': 'TEST_DIR/t.IMGFMT.mid' } } -+{ 'execute': 'block-commit', -+ 'arguments': { 'job-id': 'commit0', -+ 'device': 'top', -+ 'base':'TEST_DIR/t.IMGFMT.base', -+ 'top': 'TEST_DIR/t.IMGFMT.mid' } } - { - "timestamp": { - "seconds": TIMESTAMP, -@@ -427,7 +431,11 @@ wrote 65536/65536 bytes at offset 1048576 - - === Perform commit job === - --{ 'execute': 'block-commit', 'arguments': { 'job-id': 'commit0', 'device': 'top', 'base':'TEST_DIR/t.IMGFMT.base', 'top': 'TEST_DIR/t.IMGFMT.mid' } } -+{ 'execute': 'block-commit', -+ 'arguments': { 'job-id': 'commit0', -+ 'device': 'top', -+ 'base':'TEST_DIR/t.IMGFMT.base', -+ 'top': 'TEST_DIR/t.IMGFMT.mid' } } - { - "timestamp": { - "seconds": TIMESTAMP, -diff --git a/tests/qemu-iotests/223.out b/tests/qemu-iotests/223.out -index f6eac23f04..bbc85289e3 100644 ---- a/tests/qemu-iotests/223.out -+++ b/tests/qemu-iotests/223.out -@@ -26,31 +26,48 @@ wrote 2097152/2097152 bytes at offset 2097152 - - {"execute":"qmp_capabilities"} - {"return": {}} --{"execute":"blockdev-add", "arguments":{"driver":"IMGFMT", "node-name":"n", "file":{"driver":"file", "filename":"TEST_DIR/t.IMGFMT"}}} -+{"execute":"blockdev-add", -+ "arguments":{"driver":"IMGFMT", "node-name":"n", -+ "file":{"driver":"file", "filename":"TEST_DIR/t.IMGFMT"}}} - {"return": {}} --{"execute":"block-dirty-bitmap-disable", "arguments":{"node":"n", "name":"b"}} -+{"execute":"block-dirty-bitmap-disable", -+ "arguments":{"node":"n", "name":"b"}} - {"return": {}} - - === Set up NBD with normal access === - --{"execute":"nbd-server-add", "arguments":{"device":"n"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n"}} - {"error": {"class": "GenericError", "desc": "NBD server not running"}} --{"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"SOCK_DIR/nbd"}}}} -+{"execute":"nbd-server-start", -+ "arguments":{"addr":{"type":"unix", -+ "data":{"path":"SOCK_DIR/nbd"}}}} - {"return": {}} --{"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"SOCK_DIR/nbd1"}}}} -+{"execute":"nbd-server-start", -+ "arguments":{"addr":{"type":"unix", -+ "data":{"path":"SOCK_DIR/nbd1"}}}} - {"error": {"class": "GenericError", "desc": "NBD server already running"}} - exports available: 0 --{"execute":"nbd-server-add", "arguments":{"device":"n", "bitmap":"b"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "bitmap":"b"}} - {"return": {}} --{"execute":"nbd-server-add", "arguments":{"device":"nosuch"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"nosuch"}} - {"error": {"class": "GenericError", "desc": "Cannot find device=nosuch nor node_name=nosuch"}} --{"execute":"nbd-server-add", "arguments":{"device":"n"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n"}} - {"error": {"class": "GenericError", "desc": "Block export id 'n' is already in use"}} --{"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "bitmap":"b2"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "name":"n2", -+ "bitmap":"b2"}} - {"error": {"class": "GenericError", "desc": "Enabled bitmap 'b2' incompatible with readonly export"}} --{"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "bitmap":"b3"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "name":"n2", -+ "bitmap":"b3"}} - {"error": {"class": "GenericError", "desc": "Bitmap 'b3' is not found"}} --{"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "writable":true, "description":"some text", "bitmap":"b2"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "name":"n2", "writable":true, -+ "description":"some text", "bitmap":"b2"}} - {"return": {}} - exports available: 2 - export: 'n' -@@ -99,12 +116,15 @@ read 2097152/2097152 bytes at offset 2097152 - - === End qemu NBD server === - --{"execute":"nbd-server-remove", "arguments":{"name":"n"}} -+{"execute":"nbd-server-remove", -+ "arguments":{"name":"n"}} - {"return": {}} --{"execute":"nbd-server-remove", "arguments":{"name":"n2"}} -+{"execute":"nbd-server-remove", -+ "arguments":{"name":"n2"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n"}} - {"return": {}} --{"execute":"nbd-server-remove", "arguments":{"name":"n2"}} -+{"execute":"nbd-server-remove", -+ "arguments":{"name":"n2"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n2"}} - {"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}} - {"execute":"nbd-server-stop"} -@@ -114,26 +134,41 @@ read 2097152/2097152 bytes at offset 2097152 - - === Set up NBD with iothread access === - --{"execute":"x-blockdev-set-iothread", "arguments":{"node-name":"n", "iothread":"io0"}} -+{"execute":"x-blockdev-set-iothread", -+ "arguments":{"node-name":"n", "iothread":"io0"}} - {"return": {}} --{"execute":"nbd-server-add", "arguments":{"device":"n"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n"}} - {"error": {"class": "GenericError", "desc": "NBD server not running"}} --{"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"SOCK_DIR/nbd"}}}} -+{"execute":"nbd-server-start", -+ "arguments":{"addr":{"type":"unix", -+ "data":{"path":"SOCK_DIR/nbd"}}}} - {"return": {}} --{"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"SOCK_DIR/nbd1"}}}} -+{"execute":"nbd-server-start", -+ "arguments":{"addr":{"type":"unix", -+ "data":{"path":"SOCK_DIR/nbd1"}}}} - {"error": {"class": "GenericError", "desc": "NBD server already running"}} - exports available: 0 --{"execute":"nbd-server-add", "arguments":{"device":"n", "bitmap":"b"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "bitmap":"b"}} - {"return": {}} --{"execute":"nbd-server-add", "arguments":{"device":"nosuch"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"nosuch"}} - {"error": {"class": "GenericError", "desc": "Cannot find device=nosuch nor node_name=nosuch"}} --{"execute":"nbd-server-add", "arguments":{"device":"n"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n"}} - {"error": {"class": "GenericError", "desc": "Block export id 'n' is already in use"}} --{"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "bitmap":"b2"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "name":"n2", -+ "bitmap":"b2"}} - {"error": {"class": "GenericError", "desc": "Enabled bitmap 'b2' incompatible with readonly export"}} --{"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "bitmap":"b3"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "name":"n2", -+ "bitmap":"b3"}} - {"error": {"class": "GenericError", "desc": "Bitmap 'b3' is not found"}} --{"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "writable":true, "description":"some text", "bitmap":"b2"}} -+{"execute":"nbd-server-add", -+ "arguments":{"device":"n", "name":"n2", "writable":true, -+ "description":"some text", "bitmap":"b2"}} - {"return": {}} - exports available: 2 - export: 'n' -@@ -182,12 +217,15 @@ read 2097152/2097152 bytes at offset 2097152 - - === End qemu NBD server === - --{"execute":"nbd-server-remove", "arguments":{"name":"n"}} -+{"execute":"nbd-server-remove", -+ "arguments":{"name":"n"}} - {"return": {}} --{"execute":"nbd-server-remove", "arguments":{"name":"n2"}} -+{"execute":"nbd-server-remove", -+ "arguments":{"name":"n2"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n"}} - {"return": {}} --{"execute":"nbd-server-remove", "arguments":{"name":"n2"}} -+{"execute":"nbd-server-remove", -+ "arguments":{"name":"n2"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n2"}} - {"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}} - {"execute":"nbd-server-stop"} -diff --git a/tests/qemu-iotests/229.out b/tests/qemu-iotests/229.out -index 7eed393013..7d2bfbfbe6 100644 ---- a/tests/qemu-iotests/229.out -+++ b/tests/qemu-iotests/229.out -@@ -8,7 +8,14 @@ - - === Starting drive-mirror, causing error & stop === - --{'execute': 'drive-mirror', 'arguments': {'device': 'testdisk', 'format': 'IMGFMT', 'target': 'blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/d.IMGFMT', 'sync': 'full', 'mode': 'existing', 'on-source-error': 'stop', 'on-target-error': 'stop' }} -+{'execute': 'drive-mirror', -+ 'arguments': {'device': 'testdisk', -+ 'format': 'IMGFMT', -+ 'target': 'blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/d.IMGFMT', -+ 'sync': 'full', -+ 'mode': 'existing', -+ 'on-source-error': 'stop', -+ 'on-target-error': 'stop' }} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "testdisk"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "testdisk"}} - {"return": {}} -@@ -17,7 +24,9 @@ - - === Force cancel job paused in error state === - --{'execute': 'block-job-cancel', 'arguments': { 'device': 'testdisk', 'force': true}} -+{'execute': 'block-job-cancel', -+ 'arguments': { 'device': 'testdisk', -+ 'force': true}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "testdisk"}} - {"return": {}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "testdisk"}} -diff --git a/tests/qemu-iotests/249.out b/tests/qemu-iotests/249.out -index 85acda4635..92ec81db03 100644 ---- a/tests/qemu-iotests/249.out -+++ b/tests/qemu-iotests/249.out -@@ -7,24 +7,29 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t. - - === Send a write command to a drive opened in read-only mode (1) - --{ 'execute': 'human-monitor-command', 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} -+{ 'execute': 'human-monitor-command', -+ 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} - {"return": "Block node is read-onlyrn"} - - === Run block-commit on base using an invalid filter node name - --{ 'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'none1', 'top-node': 'int', 'filter-node-name': '1234'}} -+{ 'execute': 'block-commit', -+ 'arguments': {'job-id': 'job0', 'device': 'none1', 'top-node': 'int', -+ 'filter-node-name': '1234'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} - {"error": {"class": "GenericError", "desc": "Invalid node name"}} - - === Send a write command to a drive opened in read-only mode (2) - --{ 'execute': 'human-monitor-command', 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} -+{ 'execute': 'human-monitor-command', -+ 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} - {"return": "Block node is read-onlyrn"} - - === Run block-commit on base using the default filter node name - --{ 'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'none1', 'top-node': 'int'}} -+{ 'execute': 'block-commit', -+ 'arguments': {'job-id': 'job0', 'device': 'none1', 'top-node': 'int'}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} - {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} - {"return": {}} -@@ -36,6 +41,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t. - - === Send a write command to a drive opened in read-only mode (3) - --{ 'execute': 'human-monitor-command', 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} -+{ 'execute': 'human-monitor-command', -+ 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} - {"return": "Block node is read-onlyrn"} - *** done -diff --git a/tests/qemu-iotests/common.qemu b/tests/qemu-iotests/common.qemu -index de680cf1c7..ef105dfc39 100644 ---- a/tests/qemu-iotests/common.qemu -+++ b/tests/qemu-iotests/common.qemu -@@ -146,14 +146,9 @@ _send_qemu_cmd() - count=${qemu_cmd_repeat} - use_error="no" - fi -- # This array element extraction is done to accommodate pathnames with spaces -- if [ -z "${success_or_failure}" ]; then -- cmd=${@: 1:${#@}-1} -- shift $(($# - 1)) -- else -- cmd=${@: 1:${#@}-2} -- shift $(($# - 2)) -- fi -+ -+ cmd=$1 -+ shift - - # Display QMP being sent, but not HMP (since HMP already echoes its - # input back to output); decide based on leading '{' --- -2.29.2 - diff --git a/qemu.spec b/qemu.spec index 3eb9996..44efbf0 100644 --- a/qemu.spec +++ b/qemu.spec @@ -161,6 +161,7 @@ %define requires_audio_oss Requires: %{name}-audio-oss = %{evr} %define requires_audio_pa Requires: %{name}-audio-pa = %{evr} %define requires_audio_sdl Requires: %{name}-audio-sdl = %{evr} +%define requires_audio_jack Requires: %{name}-audio-jack = %{evr} %define requires_char_baum Requires: %{name}-char-baum = %{evr} %define requires_device_usb_redirect Requires: %{name}-device-usb-redirect = %{evr} %define requires_device_usb_smartcard Requires: %{name}-device-usb-smartcard = %{evr} @@ -171,6 +172,7 @@ %define requires_ui_opengl Requires: %{name}-ui-opengl = %{evr} %define requires_device_display_virtio_gpu Requires: %{name}-device-display-virtio-gpu = %{evr} %define requires_device_display_virtio_gpu_pci Requires: %{name}-device-display-virtio-gpu-pci = %{evr} +%define requires_device_display_virtio_gpu_ccw Requires: %{name}-device-display-virtio-gpu-ccw = %{evr} %define requires_device_display_virtio_vga Requires: %{name}-device-display-virtio-vga = %{evr} %if %{have_spice} @@ -199,6 +201,7 @@ %{requires_audio_oss} \ %{requires_audio_pa} \ %{requires_audio_sdl} \ +%{requires_audio_jack} \ %{requires_audio_spice} \ %{requires_ui_curses} \ %{requires_ui_gtk} \ @@ -223,7 +226,7 @@ %{obsoletes_block_rbd} # Release candidate version tracking -#global rcver rc4 +%global rcver rc2 %if 0%{?rcver:1} %global rcrel .%{rcver} %global rcstr -%{rcver} @@ -232,8 +235,8 @@ Summary: QEMU is a FAST! processor emulator Name: qemu -Version: 5.2.0 -Release: 6%{?rcrel}%{?dist}.1 +Version: 6.0.0 +Release: 0.1%{?rcrel}%{?dist} Epoch: 2 License: GPLv2 and BSD and MIT and CC-BY URL: http://www.qemu.org/ @@ -252,8 +255,6 @@ Source20: kvm-x86.modprobe.conf # /etc/security/limits.d/95-kvm-ppc64-memlock.conf Source21: 95-kvm-ppc64-memlock.conf -Patch: 0001-iotests-Fix-_send_qemu_cmd-with-bash-5.1.patch - BuildRequires: make BuildRequires: meson BuildRequires: gcc @@ -401,6 +402,10 @@ BuildRequires: hostname BuildRequires: daxctl-devel # used by some linux user impls BuildRequires: libdrm-devel +# fuse block device +BuildRequires: fuse-devel +# jack audio driver +BuildRequires: jack-audio-connection-kit-devel %if %{user_static} BuildRequires: glibc-static pcre-static glib2-static zlib-static @@ -578,6 +583,12 @@ Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} %description audio-sdl This package provides the additional SDL audio driver for QEMU. +%package audio-jack +Summary: QEMU Jack audio driver +Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} +%description audio-jack +This package provides the additional Jack audio driver for QEMU. + %package ui-curses Summary: QEMU curses UI driver @@ -630,6 +641,11 @@ Summary: QEMU virtio-gpu-pci display device Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} %description device-display-virtio-gpu-pci This package provides the virtio-gpu-pci display device for QEMU. +%package device-display-virtio-gpu-ccw +Summary: QEMU virtio-gpu-ccw display device +Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} +%description device-display-virtio-gpu-ccw +This package provides the virtio-gpu-ccw display device for QEMU. %package device-display-virtio-vga Summary: QEMU virtio-vga display device Requires: %{name}-common%{?_isa} = %{epoch}:%{version}-%{release} @@ -1107,111 +1123,123 @@ run_configure_disable_everything() { # Disable every qemu feature. Callers can --enable-X the bits they need run_configure \ --audio-drv-list= \ - --disable-attr \ - --disable-auth-pam \ - --disable-avx2 \ - --disable-avx512f \ - --disable-blobs \ - --disable-bochs \ - --disable-brlapi \ - --disable-bsd-user \ - --disable-bzip2 \ - --disable-cap-ng \ - --disable-capstone \ - --disable-cloop \ - --disable-cocoa \ - --disable-coroutine-pool \ - --disable-crypto-afalg \ - --disable-curl \ - --disable-curses \ - --disable-debug-info \ - --disable-debug-mutex \ - --disable-debug-tcg \ - --disable-dmg \ - --disable-docs \ - --disable-fdt \ - --disable-gcrypt \ - --disable-glusterfs \ - --disable-gnutls \ - --disable-gtk \ - --disable-guest-agent \ - --disable-guest-agent-msi \ - --disable-hax \ - --disable-hvf \ - --disable-iconv \ - --disable-jemalloc \ - --disable-keyring \ - --disable-kvm \ - --disable-libdaxctl \ - --disable-libiscsi \ - --disable-libnfs \ - --disable-libpmem \ - --disable-libssh \ - --disable-libusb \ - --disable-libxml2 \ - --disable-linux-aio \ - --disable-linux-io-uring \ - --disable-linux-user \ - --disable-live-block-migration \ - --disable-lzfse \ - --disable-lzo \ - --disable-membarrier \ - --disable-modules \ - --disable-mpath \ - --disable-netmap \ - --disable-nettle \ - --disable-numa \ - --disable-opengl \ - --disable-parallels \ - --disable-pie \ - --disable-pvrdma \ - --disable-qcow1 \ - --disable-qed \ - --disable-qom-cast-debug \ - --disable-rbd \ - --disable-rdma \ - --disable-replication \ - --disable-rng-none \ - --disable-sdl \ - --disable-sdl-image \ - --disable-seccomp \ - --disable-sheepdog \ - --disable-slirp \ - --disable-smartcard \ - --disable-snappy \ - --disable-sparse \ - --disable-spice \ + --without-default-features \ + --without-default-devices \ --disable-system \ --disable-tcg \ - --disable-tcmalloc \ - --disable-tools \ - --disable-tpm \ - --disable-usb-redir \ --disable-user \ - --disable-vde \ - --disable-vdi \ - --disable-vhost-crypto \ - --disable-vhost-kernel \ - --disable-vhost-net \ - --disable-vhost-scsi \ - --disable-vhost-user \ - --disable-vhost-vdpa \ - --disable-vhost-vsock \ - --disable-virglrenderer \ - --disable-virtfs \ + --disable-blobs \ + --disable-capstone \ + --disable-fdt \ --disable-vnc \ --disable-vnc-jpeg \ --disable-vnc-png \ - --disable-vnc-sasl \ - --disable-vte \ - --disable-vvfat \ - --disable-whpx \ - --disable-xen \ - --disable-xen-pci-passthrough \ - --disable-xfsctl \ - --disable-zstd \ - --without-default-devices \ + --disable-vhost-kernel \ + --disable-vhost-vdpa \ "$@" +# --disable-attr \ +# --disable-auth-pam \ +# --disable-avx2 \ +# --disable-avx512f \ +# --disable-blobs \ +# --disable-bochs \ +# --disable-brlapi \ +# --disable-bsd-user \ +# --disable-bzip2 \ +# --disable-cap-ng \ +# --disable-capstone \ +# --disable-cloop \ +# --disable-cocoa \ +# --disable-coroutine-pool \ +# --disable-crypto-afalg \ +# --disable-curl \ +# --disable-curses \ +# --disable-debug-info \ +# --disable-debug-mutex \ +# --disable-debug-tcg \ +# --disable-dmg \ +# --disable-docs \ +# --disable-fdt \ +# --disable-gcrypt \ +# --disable-glusterfs \ +# --disable-gnutls \ +# --disable-gtk \ +# --disable-guest-agent \ +# --disable-guest-agent-msi \ +# --disable-hax \ +# --disable-hvf \ +# --disable-iconv \ +# --disable-jemalloc \ +# --disable-keyring \ +# --disable-kvm \ +# --disable-libdaxctl \ +# --disable-libiscsi \ +# --disable-libnfs \ +# --disable-libpmem \ +# --disable-libssh \ +# --disable-libusb \ +# --disable-libxml2 \ +# --disable-linux-aio \ +# --disable-linux-io-uring \ +# --disable-linux-user \ +# --disable-live-block-migration \ +# --disable-lzfse \ +# --disable-lzo \ +# --disable-membarrier \ +# --disable-modules \ +# --disable-mpath \ +# --disable-netmap \ +# --disable-nettle \ +# --disable-numa \ +# --disable-opengl \ +# --disable-parallels \ +# --disable-pie \ +# --disable-pvrdma \ +# --disable-qcow1 \ +# --disable-qed \ +# --disable-qom-cast-debug \ +# --disable-rbd \ +# --disable-rdma \ +# --disable-replication \ +# --disable-rng-none \ +# --disable-sdl \ +# --disable-sdl-image \ +# --disable-seccomp \ +# --disable-sheepdog \ +# --disable-slirp \ +# --disable-smartcard \ +# --disable-snappy \ +# --disable-sparse \ +# --disable-spice \ +# --disable-system \ +# --disable-tcg \ +# --disable-tcmalloc \ +# --disable-tools \ +# --disable-tpm \ +# --disable-usb-redir \ +# --disable-user \ +# --disable-vde \ +# --disable-vdi \ +# --disable-vhost-crypto \ +# --disable-vhost-kernel \ +# --disable-vhost-net \ +# --disable-vhost-scsi \ +# --disable-vhost-user \ +# --disable-vhost-vsock \ +# --disable-virglrenderer \ +# --disable-virtfs \ +# --disable-vnc \ +# --disable-vnc-jpeg \ +# --disable-vnc-png \ +# --disable-vnc-sasl \ +# --disable-vte \ +# --disable-vvfat \ +# --disable-whpx \ +# --disable-xen \ +# --disable-xen-pci-passthrough \ +# --disable-xfsctl \ +# --disable-zstd \ +# "$@" } @@ -1240,7 +1268,7 @@ mkdir build-dynamic pushd build-dynamic run_configure \ - --audio-drv-list=pa,sdl,alsa,oss \ + --audio-drv-list=pa,sdl,alsa,jack,oss \ --enable-kvm \ --enable-system \ --target-list-exclude=moxie-softmmu \ @@ -1502,17 +1530,10 @@ getent passwd qemu >/dev/null || \ %files common -f %{name}.lang -%dir %{qemudocdir} -%doc %{qemudocdir}/README.rst -%doc %{qemudocdir}/index.html -%doc %{qemudocdir}/interop -%doc %{qemudocdir}/specs -%doc %{qemudocdir}/system -%doc %{qemudocdir}/tools -%doc %{qemudocdir}/user %license %{qemudocdir}/COPYING %license %{qemudocdir}/COPYING.LIB %license %{qemudocdir}/LICENSE +%doc %{qemudocdir} %dir %{_datadir}/%{name}/ %{_datadir}/applications/qemu.desktop %{_datadir}/icons/hicolor/*/apps/* @@ -1546,6 +1567,7 @@ getent passwd qemu >/dev/null || \ %{_datadir}/%{name}/efi-vmxnet3.rom %{_datadir}/%{name}/vhost-user/50-qemu-virtiofsd.json %{_mandir}/man1/qemu.1* +%{_mandir}/man1/qemu-storage-daemon.1* %{_mandir}/man1/qemu-trace-stap.1* %{_mandir}/man1/virtfs-proxy-helper.1* %{_mandir}/man1/virtiofsd.1* @@ -1553,6 +1575,7 @@ getent passwd qemu >/dev/null || \ %{_mandir}/man7/qemu-cpu-models.7* %{_mandir}/man7/qemu-qmp-ref.7* %{_mandir}/man7/qemu-ga-ref.7* +%{_mandir}/man7/qemu-storage-daemon-qmp-ref.7* %{_mandir}/man8/qemu-pr-helper.8* %{_bindir}/elf2dmp %{_bindir}/qemu-edid @@ -1623,6 +1646,8 @@ getent passwd qemu >/dev/null || \ %{_libdir}/qemu/audio-pa.so %files audio-sdl %{_libdir}/qemu/audio-sdl.so +%files audio-jack +%{_libdir}/qemu/audio-jack.so %files ui-curses @@ -1644,6 +1669,8 @@ getent passwd qemu >/dev/null || \ %{_libdir}/qemu/hw-display-virtio-gpu.so %files device-display-virtio-gpu-pci %{_libdir}/qemu/hw-display-virtio-gpu-pci.so +%files device-display-virtio-gpu-ccw +%{_libdir}/qemu/hw-s390x-virtio-gpu-ccw.so %files device-display-virtio-vga %{_libdir}/qemu/hw-display-virtio-vga.so %files device-usb-redirect @@ -1685,6 +1712,7 @@ getent passwd qemu >/dev/null || \ %{_bindir}/qemu-armeb %{_bindir}/qemu-cris %{_bindir}/qemu-hppa +%{_bindir}/qemu-hexagon %{_bindir}/qemu-m68k %{_bindir}/qemu-microblaze %{_bindir}/qemu-microblazeel @@ -1717,6 +1745,7 @@ getent passwd qemu >/dev/null || \ %{_datadir}/systemtap/tapset/qemu-arm*.stp %{_datadir}/systemtap/tapset/qemu-cris*.stp %{_datadir}/systemtap/tapset/qemu-hppa*.stp +%{_datadir}/systemtap/tapset/qemu-hexagon*.stp %{_datadir}/systemtap/tapset/qemu-m68k*.stp %{_datadir}/systemtap/tapset/qemu-microblaze*.stp %{_datadir}/systemtap/tapset/qemu-mips*.stp @@ -1938,6 +1967,9 @@ getent passwd qemu >/dev/null || \ %changelog +* Tue Apr 06 2021 Cole Robinson - 6.0.0-0.1.rc2 +- Rebase to qemu 6.0.0-rc2 + * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 2:5.2.0-6.1 - Rebuilt for updated systemd-rpm-macros See https://pagure.io/fesco/issue/2583. diff --git a/sources b/sources index 6a86af7..617b038 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (qemu-5.2.0.tar.xz) = bddd633ce111471ebc651e03080251515178808556b49a308a724909e55dac0be0cc0c79c536ac12d239678ae94c60100dc124be9b9d9538340c03a2f27177f3 +SHA512 (qemu-6.0.0-rc2.tar.xz) = ea69b25fe02e29d4c5cb071a8579f0f97d1eb4ee8cb2d3d66f5bd2f00d2e3e85ff6678f9470e017757a5ce39af689347c68eae559a44bfaf7170434c19978e72