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 <mreitz@redhat.com>
-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 <mreitz@redhat.com>
-Message-Id: <20201217153803.101231-3-mreitz@redhat.com>
-Reviewed-by: Kevin Wolf <kwolf@redhat.com>
----
- 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 <aintdiscole@gmail.com> - 6.0.0-0.1.rc2
+- Rebase to qemu 6.0.0-rc2
+
 * Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 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