Replace pipe-based HMP info block -n with QMP query-named-block-nodes.

Signed-off-by: Marc-André Lureau <[email protected]>
---
 tests/qemu-iotests/232     |  32 +++----
 tests/qemu-iotests/232.out | 216 ++++++++++++++++++++++++++++++++++++++-------
 2 files changed, 196 insertions(+), 52 deletions(-)

diff --git a/tests/qemu-iotests/232 b/tests/qemu-iotests/232
index 1ee0aae481d4..05eb4688772b 100755
--- a/tests/qemu-iotests/232
+++ b/tests/qemu-iotests/232
@@ -43,31 +43,19 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 _supported_fmt generic
 _supported_proto file
 _supported_os Linux
-_require_hmp
-
-do_run_qemu()
-{
-    echo Testing: "$@"
-    (
-        if ! test -t 0; then
-            while read cmd; do
-                echo $cmd
-            done
-        fi
-        echo quit
-    ) | $QEMU -nographic -monitor stdio -nodefaults "$@"
-    echo
-}
-
-run_qemu()
-{
-    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_hmp |
-        _filter_generated_node_ids | _filter_imgfmt
-}
 
 run_qemu_info_block()
 {
-    echo "info block -n" | run_qemu "$@" | grep -e "(file" -e "QEMU_PROG"
+    (
+        printf '%s\n' '{"execute":"qmp_capabilities"}' \
+                      '{"execute":"query-named-block-nodes"}' \
+                      '{"execute":"quit"}'
+    ) | $QEMU -nographic -qmp stdio -nodefaults "$@" 2>&1 |
+    _filter_testdir | _filter_qemu | _filter_qmp |
+    _filter_generated_node_ids | _filter_imgfmt |
+    _filter_actual_image_size |
+    gsed -e 's/\("virtual-size":\s*\)[0-9]\+/\1VSIZE/g'
+    echo
 }
 
 size=128M
diff --git a/tests/qemu-iotests/232.out b/tests/qemu-iotests/232.out
index 3bd1a920afc9..3c7716914e84 100644
--- a/tests/qemu-iotests/232.out
+++ b/tests/qemu-iotests/232.out
@@ -3,57 +3,213 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
 
 === -drive with read-write image: read-only/auto-read-only combinations ===
 
-NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only)
-NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only)
-NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only)
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
 
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
 
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
 
 === -drive with read-only image: read-only/auto-read-only combinations ===
 
-NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only)
-NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only)
-NODE_NAME: TEST_DIR/t.IMGFMT (file, read-only)
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
 
 QEMU_PROG: -drive 
driver=file,file=TEST_DIR/t.IMGFMT,if=none,read-only=off,auto-read-only=off: 
Could not open 'TEST_DIR/t.IMGFMT': Permission denied
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
 
 QEMU_PROG: -drive 
driver=file,file=TEST_DIR/t.IMGFMT,if=none,auto-read-only=off: Could not open 
'TEST_DIR/t.IMGFMT': Permission denied
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
-NODE_NAME: TEST_DIR/t.IMGFMT (file)
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "NODE_NAME", "backing_file_depth": 0, "drv": 
"file", "iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, 
"bps": 0, "bps_rd": 0, "cache": {"no-flush": false, "direct": false, 
"writeback": true}, "file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
 
 === -blockdev with read-write image: read-only/auto-read-only combinations ===
 
-node0: TEST_DIR/t.IMGFMT (file, read-only)
-node0: TEST_DIR/t.IMGFMT (file, read-only)
-node0: TEST_DIR/t.IMGFMT (file, read-only)
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
 
-node0: TEST_DIR/t.IMGFMT (file)
-node0: TEST_DIR/t.IMGFMT (file)
-node0: TEST_DIR/t.IMGFMT (file)
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
 
-node0: TEST_DIR/t.IMGFMT (file)
-node0: TEST_DIR/t.IMGFMT (file)
-node0: TEST_DIR/t.IMGFMT (file)
 
 === -blockdev with read-only image: read-only/auto-read-only combinations ===
 
-node0: TEST_DIR/t.IMGFMT (file, read-only)
-node0: TEST_DIR/t.IMGFMT (file, read-only)
-node0: TEST_DIR/t.IMGFMT (file, read-only)
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": true, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
 
 QEMU_PROG: -blockdev 
driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0,read-only=off,auto-read-only=off:
 Could not open 'TEST_DIR/t.IMGFMT': Permission denied
-node0: TEST_DIR/t.IMGFMT (file)
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
 QEMU_PROG: -blockdev 
driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0,read-only=off: Could not 
open 'TEST_DIR/t.IMGFMT': Permission denied
 
+
 QEMU_PROG: -blockdev 
driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0,auto-read-only=off: 
Could not open 'TEST_DIR/t.IMGFMT': Permission denied
-node0: TEST_DIR/t.IMGFMT (file)
+
+QMP_VERSION
+{"return": {}}
+{"return": [{"iops_rd": 0, "detect_zeroes": "off", "active": true, "image": 
{"limits": {"request-alignment": 1, "min-mem-alignment": 1, 
"opt-mem-alignment": 4096, "max-iov": 1024}, "virtual-size": VSIZE, "filename": 
"TEST_DIR/t.IMGFMT", "format": "file", "actual-size": SIZE, "format-specific": 
{"type": "file", "data": {}}, "dirty-flag": false}, "iops_wr": 0, "ro": false, 
"children": [], "node-name": "node0", "backing_file_depth": 0, "drv": "file", 
"iops": 0, "bps_wr": 0, "write_threshold": 0, "encrypted": false, "bps": 0, 
"bps_rd": 0, "cache": {"no-flush": false, "direct": false, "writeback": true}, 
"file": "TEST_DIR/t.IMGFMT"}]}
+{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": 
"SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+{"return": {}}
+
 QEMU_PROG: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0: 
Could not open 'TEST_DIR/t.IMGFMT': Permission denied
+
 *** done

-- 
2.56.0.rc0.29.g47ce80527c56


Reply via email to