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