qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

iotests: Include QMP input in .out files

We generally include relevant HMP input in .out files, by virtue of
the fact that HMP echoes its input. But QMP does not, so we have to
explicitly inject it in the output stream (appropriately filtered to
keep the tests passing), in order to make it easier to read .out files
to see what behavior is being tested (especially true where the output
file is a sequence of {'return': {}}).

Suggested-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20191114213415.23499-4-eblake@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>

+285
+26
tests/qemu-iotests/085.out
··· 7 7 8 8 === Sending capabilities === 9 9 10 + { 'execute': 'qmp_capabilities' } 10 11 {"return": {}} 11 12 12 13 === Create a single snapshot on virtio0 === 13 14 15 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', 'format': 'IMGFMT' } } 14 16 Formatting 'TEST_DIR/1-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2.1 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 15 17 {"return": {}} 16 18 17 19 === Invalid command - missing device and nodename === 18 20 21 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', 'format': 'IMGFMT' } } 19 22 {"error": {"class": "GenericError", "desc": "Cannot find device= nor node_name="}} 20 23 21 24 === Invalid command - missing snapshot-file === 22 25 26 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'format': 'IMGFMT' } } 23 27 {"error": {"class": "GenericError", "desc": "Parameter 'snapshot-file' is missing"}} 24 28 25 29 26 30 === Create several transactional group snapshots === 27 31 32 + { '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' } } ] } } 28 33 Formatting 'TEST_DIR/2-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/1-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 29 34 Formatting 'TEST_DIR/2-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2.2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 30 35 {"return": {}} 36 + { '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' } } ] } } 31 37 Formatting 'TEST_DIR/3-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/2-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 32 38 Formatting 'TEST_DIR/3-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/2-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 33 39 {"return": {}} 40 + { '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' } } ] } } 34 41 Formatting 'TEST_DIR/4-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/3-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 35 42 Formatting 'TEST_DIR/4-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/3-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 36 43 {"return": {}} 44 + { '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' } } ] } } 37 45 Formatting 'TEST_DIR/5-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/4-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 38 46 Formatting 'TEST_DIR/5-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/4-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 39 47 {"return": {}} 48 + { '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' } } ] } } 40 49 Formatting 'TEST_DIR/6-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/5-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 41 50 Formatting 'TEST_DIR/6-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/5-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 42 51 {"return": {}} 52 + { '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' } } ] } } 43 53 Formatting 'TEST_DIR/7-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/6-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 44 54 Formatting 'TEST_DIR/7-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/6-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 45 55 {"return": {}} 56 + { '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' } } ] } } 46 57 Formatting 'TEST_DIR/8-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/7-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 47 58 Formatting 'TEST_DIR/8-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/7-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 48 59 {"return": {}} 60 + { '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' } } ] } } 49 61 Formatting 'TEST_DIR/9-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/8-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 50 62 Formatting 'TEST_DIR/9-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/8-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 51 63 {"return": {}} 64 + { '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' } } ] } } 52 65 Formatting 'TEST_DIR/10-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/9-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 53 66 Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/9-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 54 67 {"return": {}} ··· 56 69 === Create a couple of snapshots using blockdev-snapshot === 57 70 58 71 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/10-snapshot-v0.IMGFMT 72 + { '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' } } } 59 73 {"return": {}} 74 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_11' } } 60 75 {"return": {}} 61 76 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/11-snapshot-v0.IMGFMT 77 + { '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' } } } 62 78 {"return": {}} 79 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_12' } } 63 80 {"return": {}} 64 81 65 82 === Invalid command - cannot create a snapshot using a file BDS === 66 83 84 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node':'virtio0', 'overlay':'file_12' } } 67 85 {"error": {"class": "GenericError", "desc": "The overlay does not support backing images"}} 68 86 69 87 === Invalid command - snapshot node used as active layer === 70 88 89 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_12' } } 71 90 {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} 91 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node':'virtio0', 'overlay':'virtio0' } } 72 92 {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} 93 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node':'virtio0', 'overlay':'virtio1' } } 73 94 {"error": {"class": "GenericError", "desc": "The overlay is already in use"}} 74 95 75 96 === Invalid command - snapshot node used as backing hd === 76 97 98 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_11' } } 77 99 {"error": {"class": "GenericError", "desc": "Node 'snap_11' is busy: node is used as backing hd of 'snap_12'"}} 78 100 79 101 === Invalid command - snapshot node has a backing image === 80 102 81 103 Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728 82 104 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base 105 + { 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_13', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'node-name': 'file_13' } } } 83 106 {"return": {}} 107 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_13' } } 84 108 {"error": {"class": "GenericError", "desc": "The overlay already has a backing image"}} 85 109 86 110 === Invalid command - The node does not exist === 87 111 112 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_14' } } 88 113 {"error": {"class": "GenericError", "desc": "Cannot find device=snap_14 nor node_name=snap_14"}} 114 + { 'execute': 'blockdev-snapshot', 'arguments': { 'node':'nodevice', 'overlay':'snap_13' } } 89 115 {"error": {"class": "GenericError", "desc": "Cannot find device=nodevice nor node_name=nodevice"}} 90 116 *** done
+4
tests/qemu-iotests/094.out
··· 1 1 QA output created by 094 2 2 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 3 3 Formatting 'TEST_DIR/source.IMGFMT', fmt=IMGFMT size=67108864 4 + {'execute': 'qmp_capabilities'} 4 5 {"return": {}} 6 + {'execute': 'drive-mirror', 'arguments': {'device': 'src', 'target': 'nbd+unix:///?socket=SOCK_DIR/nbd', 'format': 'nbd', 'sync':'full', 'mode':'existing'}} 5 7 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 6 8 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 7 9 {"return": {}} 8 10 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 9 11 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 67108864, "offset": 67108864, "speed": 0, "type": "mirror"}} 12 + {'execute': 'block-job-complete', 'arguments': {'device': 'src'}} 10 13 {"return": {}} 11 14 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} 12 15 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "src"}} 13 16 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": 67108864, "offset": 67108864, "speed": 0, "type": "mirror"}} 17 + {'execute': 'quit'} 14 18 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 15 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 16 20 {"return": {}}
+2
tests/qemu-iotests/095.out
··· 10 10 11 11 === Running QEMU Live Commit Test === 12 12 13 + { 'execute': 'qmp_capabilities' } 13 14 {"return": {}} 15 + { 'execute': 'block-commit', 'arguments': { 'device': 'test', 'top': 'TEST_DIR/t.IMGFMT.snp1' } } 14 16 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "test"}} 15 17 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "test"}} 16 18 {"return": {}}
+88
tests/qemu-iotests/109.out
··· 4 4 5 5 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 6 6 Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 7 + { 'execute': 'qmp_capabilities' } 7 8 {"return": {}} 9 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 8 10 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 9 11 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 10 12 Specify the 'raw' format explicitly to remove the restrictions. ··· 16 18 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": 0, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 17 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 18 20 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 21 + {"execute":"query-block-jobs"} 19 22 {"return": []} 23 + {"execute":"quit"} 20 24 {"return": {}} 21 25 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 22 26 read 65536/65536 bytes at offset 0 23 27 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 28 + { 'execute': 'qmp_capabilities' } 24 29 {"return": {}} 30 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 25 31 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 26 32 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 27 33 {"return": {}} 28 34 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 29 35 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 1024, "offset": 1024, "speed": 0, "type": "mirror"}} 36 + {"execute":"query-block-jobs"} 30 37 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 1024, "offset": 1024, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 38 + {"execute":"quit"} 31 39 {"return": {}} 32 40 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 33 41 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 42 50 43 51 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 44 52 Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 53 + { 'execute': 'qmp_capabilities' } 45 54 {"return": {}} 55 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 46 56 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 47 57 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 48 58 Specify the 'raw' format explicitly to remove the restrictions. ··· 54 64 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": 512, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 55 65 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 56 66 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 67 + {"execute":"query-block-jobs"} 57 68 {"return": []} 69 + {"execute":"quit"} 58 70 {"return": {}} 59 71 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 60 72 read 65536/65536 bytes at offset 0 61 73 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 74 + { 'execute': 'qmp_capabilities' } 62 75 {"return": {}} 76 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 63 77 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 64 78 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 65 79 {"return": {}} 66 80 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 67 81 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 197120, "offset": 197120, "speed": 0, "type": "mirror"}} 82 + {"execute":"query-block-jobs"} 68 83 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 197120, "offset": 197120, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 84 + {"execute":"quit"} 69 85 {"return": {}} 70 86 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 71 87 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 80 96 81 97 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 82 98 Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 99 + { 'execute': 'qmp_capabilities' } 83 100 {"return": {}} 101 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 84 102 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 85 103 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 86 104 Specify the 'raw' format explicitly to remove the restrictions. ··· 92 110 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": 262144, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 93 111 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 94 112 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 113 + {"execute":"query-block-jobs"} 95 114 {"return": []} 115 + {"execute":"quit"} 96 116 {"return": {}} 97 117 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 98 118 read 65536/65536 bytes at offset 0 99 119 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 120 + { 'execute': 'qmp_capabilities' } 100 121 {"return": {}} 122 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 101 123 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 102 124 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 103 125 {"return": {}} 104 126 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 105 127 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 327680, "offset": 327680, "speed": 0, "type": "mirror"}} 128 + {"execute":"query-block-jobs"} 106 129 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 327680, "offset": 327680, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 130 + {"execute":"quit"} 107 131 {"return": {}} 108 132 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 109 133 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 118 142 119 143 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 120 144 Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 145 + { 'execute': 'qmp_capabilities' } 121 146 {"return": {}} 147 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 122 148 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 123 149 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 124 150 Specify the 'raw' format explicitly to remove the restrictions. ··· 130 156 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": 0, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 131 157 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 132 158 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 159 + {"execute":"query-block-jobs"} 133 160 {"return": []} 161 + {"execute":"quit"} 134 162 {"return": {}} 135 163 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 136 164 read 65536/65536 bytes at offset 0 137 165 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 166 + { 'execute': 'qmp_capabilities' } 138 167 {"return": {}} 168 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 139 169 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 140 170 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 141 171 {"return": {}} 142 172 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 143 173 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 1024, "offset": 1024, "speed": 0, "type": "mirror"}} 174 + {"execute":"query-block-jobs"} 144 175 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 1024, "offset": 1024, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 176 + {"execute":"quit"} 145 177 {"return": {}} 146 178 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 147 179 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 156 188 157 189 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 158 190 Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 191 + { 'execute': 'qmp_capabilities' } 159 192 {"return": {}} 193 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 160 194 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 161 195 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 162 196 Specify the 'raw' format explicitly to remove the restrictions. ··· 168 202 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": 0, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 169 203 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 170 204 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 205 + {"execute":"query-block-jobs"} 171 206 {"return": []} 207 + {"execute":"quit"} 172 208 {"return": {}} 173 209 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 174 210 read 65536/65536 bytes at offset 0 175 211 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 212 + { 'execute': 'qmp_capabilities' } 176 213 {"return": {}} 214 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 177 215 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 178 216 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 179 217 {"return": {}} 180 218 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 181 219 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 65536, "offset": 65536, "speed": 0, "type": "mirror"}} 220 + {"execute":"query-block-jobs"} 182 221 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 65536, "offset": 65536, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 222 + {"execute":"quit"} 183 223 {"return": {}} 184 224 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 185 225 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 194 234 195 235 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 196 236 Formatting 'TEST_DIR/t.raw.src', fmt=IMGFMT size=67108864 237 + { 'execute': 'qmp_capabilities' } 197 238 {"return": {}} 239 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 198 240 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 199 241 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 200 242 Specify the 'raw' format explicitly to remove the restrictions. ··· 206 248 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": 0, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 207 249 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 208 250 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 251 + {"execute":"query-block-jobs"} 209 252 {"return": []} 253 + {"execute":"quit"} 210 254 {"return": {}} 211 255 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 212 256 read 65536/65536 bytes at offset 0 213 257 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 258 + { 'execute': 'qmp_capabilities' } 214 259 {"return": {}} 260 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 215 261 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 216 262 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 217 263 {"return": {}} 218 264 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 219 265 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 2560, "offset": 2560, "speed": 0, "type": "mirror"}} 266 + {"execute":"query-block-jobs"} 220 267 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 2560, "offset": 2560, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 268 + {"execute":"quit"} 221 269 {"return": {}} 222 270 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 223 271 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 231 279 === Copying sample image empty.bochs into raw === 232 280 233 281 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 282 + { 'execute': 'qmp_capabilities' } 234 283 {"return": {}} 284 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 235 285 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 236 286 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 237 287 Specify the 'raw' format explicitly to remove the restrictions. ··· 243 293 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": OFFSET, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 244 294 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 245 295 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 296 + {"execute":"query-block-jobs"} 246 297 {"return": []} 298 + {"execute":"quit"} 247 299 {"return": {}} 248 300 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 249 301 read 65536/65536 bytes at offset 0 250 302 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 303 + { 'execute': 'qmp_capabilities' } 251 304 {"return": {}} 305 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 252 306 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 253 307 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 254 308 {"return": {}} 255 309 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 256 310 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 2560, "offset": 2560, "speed": 0, "type": "mirror"}} 311 + {"execute":"query-block-jobs"} 257 312 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 2560, "offset": 2560, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 313 + {"execute":"quit"} 258 314 {"return": {}} 259 315 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 260 316 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 268 324 === Copying sample image iotest-dirtylog-10G-4M.vhdx into raw === 269 325 270 326 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 327 + { 'execute': 'qmp_capabilities' } 271 328 {"return": {}} 329 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 272 330 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 273 331 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 274 332 Specify the 'raw' format explicitly to remove the restrictions. ··· 280 338 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": OFFSET, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 281 339 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 282 340 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 341 + {"execute":"query-block-jobs"} 283 342 {"return": []} 343 + {"execute":"quit"} 284 344 {"return": {}} 285 345 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 286 346 read 65536/65536 bytes at offset 0 287 347 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 348 + { 'execute': 'qmp_capabilities' } 288 349 {"return": {}} 350 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 289 351 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 290 352 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 291 353 {"return": {}} 292 354 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 293 355 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 31457280, "offset": 31457280, "speed": 0, "type": "mirror"}} 356 + {"execute":"query-block-jobs"} 294 357 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 31457280, "offset": 31457280, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 358 + {"execute":"quit"} 295 359 {"return": {}} 296 360 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 297 361 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 305 369 === Copying sample image parallels-v1 into raw === 306 370 307 371 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 372 + { 'execute': 'qmp_capabilities' } 308 373 {"return": {}} 374 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 309 375 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 310 376 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 311 377 Specify the 'raw' format explicitly to remove the restrictions. ··· 317 383 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": OFFSET, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 318 384 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 319 385 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 386 + {"execute":"query-block-jobs"} 320 387 {"return": []} 388 + {"execute":"quit"} 321 389 {"return": {}} 322 390 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 323 391 read 65536/65536 bytes at offset 0 324 392 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 393 + { 'execute': 'qmp_capabilities' } 325 394 {"return": {}} 395 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 326 396 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 327 397 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 328 398 {"return": {}} 329 399 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 330 400 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 327680, "offset": 327680, "speed": 0, "type": "mirror"}} 401 + {"execute":"query-block-jobs"} 331 402 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 327680, "offset": 327680, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 403 + {"execute":"quit"} 332 404 {"return": {}} 333 405 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 334 406 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 342 414 === Copying sample image simple-pattern.cloop into raw === 343 415 344 416 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 417 + { 'execute': 'qmp_capabilities' } 345 418 {"return": {}} 419 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 346 420 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 347 421 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 348 422 Specify the 'raw' format explicitly to remove the restrictions. ··· 354 428 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "src", "len": LEN, "offset": OFFSET, "speed": 0, "type": "mirror", "error": "Operation not permitted"}} 355 429 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "src"}} 356 430 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 431 + {"execute":"query-block-jobs"} 357 432 {"return": []} 433 + {"execute":"quit"} 358 434 {"return": {}} 359 435 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 360 436 read 65536/65536 bytes at offset 0 361 437 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 438 + { 'execute': 'qmp_capabilities' } 362 439 {"return": {}} 440 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 363 441 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 364 442 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 365 443 {"return": {}} 366 444 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 367 445 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 2048, "offset": 2048, "speed": 0, "type": "mirror"}} 446 + {"execute":"query-block-jobs"} 368 447 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 2048, "offset": 2048, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 448 + {"execute":"quit"} 369 449 {"return": {}} 370 450 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 371 451 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 379 459 === Write legitimate MBR into raw === 380 460 381 461 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 462 + { 'execute': 'qmp_capabilities' } 382 463 {"return": {}} 464 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'mode': 'existing', 'sync': 'full'}} 383 465 WARNING: Image format was not specified for 'TEST_DIR/t.raw' and probing guessed raw. 384 466 Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. 385 467 Specify the 'raw' format explicitly to remove the restrictions. ··· 388 470 {"return": {}} 389 471 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 390 472 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 512, "offset": 512, "speed": 0, "type": "mirror"}} 473 + {"execute":"query-block-jobs"} 391 474 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 512, "offset": 512, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 475 + {"execute":"quit"} 392 476 {"return": {}} 393 477 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 394 478 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}} ··· 398 482 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "src"}} 399 483 Warning: Image size mismatch! 400 484 Images are identical. 485 + { 'execute': 'qmp_capabilities' } 401 486 {"return": {}} 487 + {'execute':'drive-mirror', 'arguments':{ 'device': 'src', 'target': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'existing', 'sync': 'full'}} 402 488 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "src"}} 403 489 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "src"}} 404 490 {"return": {}} 405 491 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "src"}} 406 492 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "src", "len": 512, "offset": 512, "speed": 0, "type": "mirror"}} 493 + {"execute":"query-block-jobs"} 407 494 {"return": [{"auto-finalize": true, "io-status": "ok", "device": "src", "auto-dismiss": true, "busy": false, "len": 512, "offset": 512, "status": "ready", "paused": false, "speed": 0, "ready": true, "type": "mirror"}]} 495 + {"execute":"quit"} 408 496 {"return": {}} 409 497 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 410 498 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "src"}}
+5
tests/qemu-iotests/117.out
··· 1 1 QA output created by 117 2 2 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536 3 + { 'execute': 'qmp_capabilities' } 3 4 {"return": {}} 5 + { 'execute': 'blockdev-add', 'arguments': { 'node-name': 'protocol', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' } } 4 6 {"return": {}} 7 + { 'execute': 'blockdev-add', 'arguments': { 'node-name': 'format', 'driver': 'IMGFMT', 'file': 'protocol' } } 5 8 {"return": {}} 9 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io format "write -P 42 0 64k"' } } 6 10 wrote 65536/65536 bytes at offset 0 7 11 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 8 12 {"return": ""} 13 + { 'execute': 'quit' } 9 14 {"return": {}} 10 15 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 11 16 No errors were found on the image.
+4
tests/qemu-iotests/127.out
··· 4 4 Formatting 'TEST_DIR/t.IMGFMT.overlay1', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT 5 5 wrote 42/42 bytes at offset 0 6 6 42 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 7 + { 'execute': 'qmp_capabilities' } 7 8 {"return": {}} 9 + { 'execute': 'drive-mirror', 'arguments': { 'job-id': 'mirror', 'device': 'source', 'target': 'TEST_DIR/t.IMGFMT.overlay1', 'mode': 'existing', 'sync': 'top' } } 8 10 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "mirror"}} 9 11 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "mirror"}} 10 12 {"return": {}} 11 13 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "mirror"}} 12 14 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "mirror", "len": 65536, "offset": 65536, "speed": 0, "type": "mirror"}} 15 + { 'execute': 'block-job-complete', 'arguments': { 'device': 'mirror' } } 13 16 {"return": {}} 14 17 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "mirror"}} 15 18 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "mirror"}} 16 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "mirror", "len": 65536, "offset": 65536, "speed": 0, "type": "mirror"}} 20 + { 'execute': 'quit' } 17 21 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "mirror"}} 18 22 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "mirror"}} 19 23 {"return": {}}
+5
tests/qemu-iotests/140.out
··· 2 2 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536 3 3 wrote 65536/65536 bytes at offset 0 4 4 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 5 + { 'execute': 'qmp_capabilities' } 5 6 {"return": {}} 7 + { 'execute': 'nbd-server-start', 'arguments': { 'addr': { 'type': 'unix', 'data': { 'path': 'SOCK_DIR/nbd' }}}} 6 8 {"return": {}} 9 + { 'execute': 'nbd-server-add', 'arguments': { 'device': 'drv' }} 7 10 {"return": {}} 8 11 read 65536/65536 bytes at offset 0 9 12 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 13 + { 'execute': 'eject', 'arguments': { 'device': 'drv' }} 10 14 {"return": {}} 11 15 qemu-io: can't open device nbd+unix:///drv?socket=SOCK_DIR/nbd: Requested export not available 12 16 server reported: export 'drv' not present 17 + { 'execute': 'quit' } 13 18 {"return": {}} 14 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 15 20 *** done
+26
tests/qemu-iotests/141.out
··· 2 2 Formatting 'TEST_DIR/b.IMGFMT', fmt=IMGFMT size=1048576 3 3 Formatting 'TEST_DIR/m.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/b.IMGFMT 4 4 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m.IMGFMT 5 + {'execute': 'qmp_capabilities'} 5 6 {"return": {}} 6 7 7 8 === Testing drive-backup === 8 9 10 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} 9 11 {"return": {}} 12 + {'execute': 'drive-backup', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'target': 'TEST_DIR/o.IMGFMT', 'format': 'IMGFMT', 'sync': 'none'}} 10 13 Formatting 'TEST_DIR/o.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT 11 14 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 12 15 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 16 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 13 17 {"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: node is used as backing hd of 'NODE_NAME'"}} 18 + {'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} 14 19 {"return": {}} 15 20 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} 16 21 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 0, "speed": 0, "type": "backup"}} 17 22 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 18 23 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 24 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 19 25 {"return": {}} 20 26 21 27 === Testing drive-mirror === 22 28 29 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} 23 30 {"return": {}} 31 + {'execute': 'drive-mirror', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'target': 'TEST_DIR/o.IMGFMT', 'format': 'IMGFMT', 'sync': 'none'}} 24 32 Formatting 'TEST_DIR/o.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT 25 33 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 26 34 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 27 35 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "job0"}} 28 36 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "mirror"}} 37 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 29 38 {"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: mirror"}} 39 + {'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} 30 40 {"return": {}} 31 41 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job0"}} 32 42 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job0"}} 33 43 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "mirror"}} 34 44 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 35 45 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 46 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 36 47 {"return": {}} 37 48 38 49 === Testing active block-commit === 39 50 51 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} 40 52 {"return": {}} 53 + {'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'drv0'}} 41 54 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 42 55 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 43 56 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "job0"}} 44 57 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} 58 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 45 59 {"error": {"class": "GenericError", "desc": "Node 'drv0' is busy: block device is in use by block job: commit"}} 60 + {'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} 46 61 {"return": {}} 47 62 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "job0"}} 48 63 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "job0"}} 49 64 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "job0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} 50 65 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 51 66 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 67 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 52 68 {"return": {}} 53 69 54 70 === Testing non-active block-commit === 55 71 56 72 wrote 1048576/1048576 bytes at offset 0 57 73 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 74 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} 58 75 {"return": {}} 76 + {'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'top': 'TEST_DIR/m.IMGFMT', 'speed': 1}} 59 77 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 60 78 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 79 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 61 80 {"error": {"class": "GenericError", "desc": "Node drv0 is in use"}} 81 + {'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} 62 82 {"return": {}} 63 83 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} 64 84 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 524288, "speed": 1, "type": "commit"}} 65 85 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 66 86 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 87 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 67 88 {"return": {}} 68 89 69 90 === Testing block-stream === 70 91 71 92 wrote 1048576/1048576 bytes at offset 0 72 93 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 94 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'drv0', 'driver': 'IMGFMT', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT' }}} 73 95 {"return": {}} 96 + {'execute': 'block-stream', 'arguments': {'job-id': 'job0', 'device': 'drv0', 'speed': 1}} 74 97 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 75 98 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 99 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 76 100 {"error": {"class": "GenericError", "desc": "Node drv0 is in use"}} 101 + {'execute': 'block-job-cancel', 'arguments': {'device': 'job0'}} 77 102 {"return": {}} 78 103 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "job0"}} 79 104 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "job0", "len": 1048576, "offset": 524288, "speed": 1, "type": "stream"}} 80 105 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "job0"}} 81 106 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 107 + {'execute': 'blockdev-del', 'arguments': {'node-name': 'drv0'}} 82 108 {"return": {}} 83 109 *** done
+3
tests/qemu-iotests/143.out
··· 1 1 QA output created by 143 2 + { 'execute': 'qmp_capabilities' } 2 3 {"return": {}} 4 + { 'execute': 'nbd-server-start', 'arguments': { 'addr': { 'type': 'unix', 'data': { 'path': 'SOCK_DIR/nbd' }}}} 3 5 {"return": {}} 4 6 qemu-io: can't open device nbd+unix:///no_such_export?socket=SOCK_DIR/nbd: Requested export not available 5 7 server reported: export 'no_such_export' not present 8 + { 'execute': 'quit' } 6 9 {"return": {}} 7 10 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 8 11 *** done
+5
tests/qemu-iotests/144.out
··· 6 6 7 7 === Performing Live Snapshot 1 === 8 8 9 + { 'execute': 'qmp_capabilities' } 9 10 {"return": {}} 11 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp.IMGFMT', 'format': 'IMGFMT' } } 10 12 Formatting 'TEST_DIR/tmp.qcow2', fmt=qcow2 size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 11 13 {"return": {}} 12 14 13 15 === Performing block-commit on active layer === 14 16 17 + { 'execute': 'block-commit', 'arguments': { 'device': 'virtio0' } } 15 18 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "virtio0"}} 16 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "virtio0"}} 17 20 {"return": {}} 18 21 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "virtio0"}} 19 22 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "virtio0", "len": 0, "offset": 0, "speed": 0, "type": "commit"}} 23 + { 'execute': 'block-job-complete', 'arguments': { 'device': 'virtio0' } } 20 24 {"return": {}} 21 25 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "virtio0"}} 22 26 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "virtio0"}} ··· 26 30 27 31 === Performing Live Snapshot 2 === 28 32 33 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp2.IMGFMT', 'format': 'IMGFMT' } } 29 34 Formatting 'TEST_DIR/tmp2.qcow2', fmt=qcow2 size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 30 35 {"return": {}} 31 36 *** done
+11
tests/qemu-iotests/153.out
··· 144 144 145 145 _qemu_img_wrapper bench -U -w -c 1 TEST_DIR/t.qcow2 146 146 qemu-img: Could not open 'TEST_DIR/t.qcow2': force-share=on can only be used with read-only images 147 + { 'execute': 'quit' } 147 148 148 149 Round done 149 150 ··· 266 267 267 268 _qemu_img_wrapper bench -U -w -c 1 TEST_DIR/t.qcow2 268 269 qemu-img: Could not open 'TEST_DIR/t.qcow2': force-share=on can only be used with read-only images 270 + { 'execute': 'quit' } 269 271 270 272 Round done 271 273 ··· 367 369 368 370 _qemu_img_wrapper bench -U -w -c 1 TEST_DIR/t.qcow2 369 371 qemu-img: Could not open 'TEST_DIR/t.qcow2': force-share=on can only be used with read-only images 372 + { 'execute': 'quit' } 370 373 371 374 Round done 372 375 ··· 412 415 Is another process using the image [TEST_DIR/t.qcow2]? 413 416 414 417 == Active commit to intermediate layer should work when base in use == 418 + { 'execute': 'qmp_capabilities' } 415 419 {"return": {}} 416 420 417 421 _qemu_img_wrapper commit -b TEST_DIR/t.qcow2.b TEST_DIR/t.qcow2.c 422 + { 'execute': 'qmp_capabilities' } 418 423 {"return": {}} 419 424 Adding drive 425 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT' } } 420 426 {"return": "OKrn"} 421 427 422 428 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 ··· 426 432 427 433 _qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.overlay 428 434 == Closing an image should unlock it == 435 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } } 429 436 {"return": ""} 430 437 431 438 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 432 439 Adding two and closing one 440 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT,readonly=on' } } 433 441 {"return": "OKrn"} 442 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d1,file=TEST_DIR/t.IMGFMT,readonly=on' } } 434 443 {"return": "OKrn"} 435 444 436 445 _qemu_img_wrapper info TEST_DIR/t.qcow2 446 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } } 437 447 {"return": ""} 438 448 439 449 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512 440 450 qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock 441 451 Is another process using the image [TEST_DIR/t.qcow2]? 442 452 Closing the other 453 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d1' } } 443 454 {"return": ""} 444 455 445 456 _qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
+11
tests/qemu-iotests/156.out
··· 5 5 256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 6 6 wrote 196608/196608 bytes at offset 65536 7 7 192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 8 + { 'execute': 'qmp_capabilities' } 8 9 {"return": {}} 9 10 Formatting 'TEST_DIR/t.IMGFMT.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT 11 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'source', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'format': 'IMGFMT', 'mode': 'existing' } } 10 12 {"return": {}} 13 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "write -P 3 128k 128k"' } } 11 14 wrote 131072/131072 bytes at offset 131072 12 15 128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 13 16 {"return": ""} 14 17 Formatting 'TEST_DIR/t.IMGFMT.target.overlay', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.target 18 + { 'execute': 'drive-mirror', 'arguments': { 'device': 'source', 'target': 'TEST_DIR/t.IMGFMT.target.overlay', 'mode': 'existing', 'sync': 'top' } } 15 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "source"}} 16 20 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "source"}} 17 21 {"return": {}} 18 22 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "ready", "id": "source"}} 19 23 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_READY", "data": {"device": "source", "len": 131072, "offset": 131072, "speed": 0, "type": "mirror"}} 24 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "write -P 4 192k 64k"' } } 20 25 wrote 65536/65536 bytes at offset 196608 21 26 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 22 27 {"return": ""} 28 + { 'execute': 'block-job-complete', 'arguments': { 'device': 'source' } } 23 29 {"return": {}} 24 30 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "source"}} 25 31 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "source"}} ··· 27 33 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "concluded", "id": "source"}} 28 34 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "source"}} 29 35 36 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 1 0k 64k"' } } 30 37 read 65536/65536 bytes at offset 0 31 38 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 32 39 {"return": ""} 40 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 2 64k 64k"' } } 33 41 read 65536/65536 bytes at offset 65536 34 42 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 35 43 {"return": ""} 44 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 3 128k 64k"' } } 36 45 read 65536/65536 bytes at offset 131072 37 46 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 38 47 {"return": ""} 48 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io source "read -P 4 192k 64k"' } } 39 49 read 65536/65536 bytes at offset 196608 40 50 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 41 51 {"return": ""} 42 52 53 + { 'execute': 'quit' } 43 54 {"return": {}} 44 55 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 45 56
+8
tests/qemu-iotests/161.out
··· 5 5 6 6 *** Change an option on the backing file 7 7 8 + { 'execute': 'qmp_capabilities' } 8 9 {"return": {}} 10 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } 9 11 {"return": ""} 10 12 11 13 *** Stream and then change an option on the backing file 12 14 15 + { 'execute': 'qmp_capabilities' } 13 16 {"return": {}} 17 + { 'execute': 'block-stream', 'arguments': { 'device': 'none0', 'base': 'TEST_DIR/t.IMGFMT.base' } } 14 18 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "none0"}} 15 19 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "none0"}} 16 20 {"return": {}} 21 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } 17 22 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "none0"}} 18 23 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "none0"}} 19 24 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "none0", "len": 1048576, "offset": 1048576, "speed": 0, "type": "stream"}} ··· 26 31 Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576 27 32 Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base 28 33 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int 34 + { 'execute': 'qmp_capabilities' } 29 35 {"return": {}} 36 + { 'execute': 'block-commit', 'arguments': { 'device': 'none0', 'top': 'TEST_DIR/t.IMGFMT.int' } } 30 37 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "none0"}} 31 38 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "none0"}} 32 39 {"return": {}} 40 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io none0 "reopen -o backing.detect-zeroes=on"' } } 33 41 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "waiting", "id": "none0"}} 34 42 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "pending", "id": "none0"}} 35 43 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_COMPLETED", "data": {"device": "none0", "len": 1048576, "offset": 1048576, "speed": 0, "type": "commit"}}
+4
tests/qemu-iotests/173.out
··· 4 4 5 5 === Running QEMU, using block-stream to find backing image === 6 6 7 + { 'execute': 'qmp_capabilities' } 7 8 {"return": {}} 9 + { 'arguments': { 'device': 'disk2', 'format': 'IMGFMT', 'mode': 'existing', 'snapshot-file': 'TEST_DIR/image.snp1', 'snapshot-node-name': 'snp1' }, 'execute': 'blockdev-snapshot-sync' } 8 10 {"return": {}} 11 + { 'arguments': { 'backing-file': 'image.base', 'device': 'disk2', 'image-node-name': 'snp1' }, 'execute': 'change-backing-file' } 9 12 {"return": {}} 13 + { 'arguments': { 'base': 'TEST_DIR/image.base', 'device': 'disk2' }, 'execute': 'block-stream' } 10 14 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk2"}} 11 15 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk2"}} 12 16 {"return": {}}
+8
tests/qemu-iotests/182.out
··· 8 8 9 9 === Testing reopen === 10 10 11 + {'execute': 'qmp_capabilities'} 11 12 {"return": {}} 13 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'node0', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } 12 14 {"return": {}} 15 + {'execute': 'blockdev-snapshot-sync', 'arguments': { 'node-name': 'node0', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'snapshot-node-name': 'node1' } } 13 16 Formatting 'TEST_DIR/t.qcow2.overlay', fmt=qcow2 size=197120 backing_file=TEST_DIR/t.qcow2 backing_fmt=file cluster_size=65536 lazy_refcounts=off refcount_bits=16 14 17 {"return": {}} 18 + {'execute': 'blockdev-add', 'arguments': { 'node-name': 'node1', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } 15 19 {"return": {}} 20 + {'execute': 'nbd-server-start', 'arguments': { 'addr': { 'type': 'unix', 'data': { 'path': 'SOCK_DIR/nbd.socket' } } } } 16 21 {"return": {}} 22 + {'execute': 'nbd-server-add', 'arguments': { 'device': 'node1' } } 17 23 {"return": {}} 18 24 19 25 === Testing failure to loosen restrictions === 20 26 27 + {'execute': 'qmp_capabilities'} 21 28 {"return": {}} 29 + {'execute': 'quit'} 22 30 {"return": {}} 23 31 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 24 32 *** done
+11
tests/qemu-iotests/183.out
··· 4 4 5 5 === Starting VMs === 6 6 7 + { 'execute': 'qmp_capabilities' } 7 8 {"return": {}} 9 + { 'execute': 'qmp_capabilities' } 8 10 {"return": {}} 9 11 10 12 === Write something on the source === 11 13 14 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write -P 0x55 0 64k"' } } 12 15 wrote 65536/65536 bytes at offset 0 13 16 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 14 17 {"return": ""} 18 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "read -P 0x55 0 64k"' } } 15 19 read 65536/65536 bytes at offset 0 16 20 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 17 21 {"return": ""} 18 22 19 23 === Do block migration to destination === 20 24 25 + { 'execute': 'migrate', 'arguments': { 'uri': 'unix:SOCK_DIR/migrate', 'blk': true } } 21 26 {"return": {}} 27 + { 'execute': 'query-status' } 22 28 {"return": {"status": "postmigrate", "singlestep": false, "running": false}} 23 29 24 30 === Do some I/O on the destination === 25 31 32 + { 'execute': 'query-status' } 26 33 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "RESUME"} 27 34 {"return": {"status": "running", "singlestep": false, "running": true}} 35 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "read -P 0x55 0 64k"' } } 28 36 read 65536/65536 bytes at offset 0 29 37 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 30 38 {"return": ""} 39 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write -P 0x66 1M 64k"' } } 31 40 wrote 65536/65536 bytes at offset 1048576 32 41 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 33 42 {"return": ""} 34 43 35 44 === Shut down and check image === 36 45 46 + {"execute":"quit"} 37 47 {"return": {}} 48 + {"execute":"quit"} 38 49 {"return": {}} 39 50 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 40 51 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
+18
tests/qemu-iotests/185.out
··· 3 3 4 4 === Starting VM === 5 5 6 + { 'execute': 'qmp_capabilities' } 6 7 {"return": {}} 7 8 8 9 === Creating backing chain === 9 10 11 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT.mid', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } 10 12 Formatting 'TEST_DIR/t.qcow2.mid', fmt=qcow2 size=67108864 backing_file=TEST_DIR/t.qcow2.base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 11 13 {"return": {}} 14 + { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write 0 4M"' } } 12 15 wrote 4194304/4194304 bytes at offset 0 13 16 4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 14 17 {"return": ""} 18 + { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } 15 19 Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 backing_file=TEST_DIR/t.qcow2.mid backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 16 20 {"return": {}} 17 21 18 22 === Start commit job and exit qemu === 19 23 24 + { 'execute': 'block-commit', 'arguments': { 'device': 'disk', 'base':'TEST_DIR/t.IMGFMT.base', 'top': 'TEST_DIR/t.IMGFMT.mid', 'speed': 65536 } } 20 25 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} 21 26 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} 22 27 {"return": {}} 28 + { 'execute': 'quit' } 23 29 {"return": {}} 24 30 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 25 31 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 67108864, "offset": 524288, "speed": 65536, "type": "commit"}} 26 32 27 33 === Start active commit job and exit qemu === 28 34 35 + { 'execute': 'qmp_capabilities' } 29 36 {"return": {}} 37 + { 'execute': 'block-commit', 'arguments': { 'device': 'disk', 'base':'TEST_DIR/t.IMGFMT.base', 'speed': 65536 } } 30 38 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} 31 39 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} 32 40 {"return": {}} 41 + { 'execute': 'quit' } 33 42 {"return": {}} 34 43 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 35 44 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 4194304, "offset": 4194304, "speed": 65536, "type": "commit"}} 36 45 37 46 === Start mirror job and exit qemu === 38 47 48 + { 'execute': 'qmp_capabilities' } 39 49 {"return": {}} 50 + { 'execute': 'drive-mirror', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } 40 51 Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 41 52 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} 42 53 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} 43 54 {"return": {}} 55 + { 'execute': 'quit' } 44 56 {"return": {}} 45 57 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 46 58 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 4194304, "offset": 4194304, "speed": 65536, "type": "mirror"}} 47 59 48 60 === Start backup job and exit qemu === 49 61 62 + { 'execute': 'qmp_capabilities' } 50 63 {"return": {}} 64 + { 'execute': 'drive-backup', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } 51 65 Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 52 66 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} 53 67 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} 54 68 {"return": {}} 69 + { 'execute': 'quit' } 55 70 {"return": {}} 56 71 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 57 72 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 67108864, "offset": 65536, "speed": 65536, "type": "backup"}} 58 73 59 74 === Start streaming job and exit qemu === 60 75 76 + { 'execute': 'qmp_capabilities' } 61 77 {"return": {}} 78 + { 'execute': 'block-stream', 'arguments': { 'device': 'disk', 'speed': 65536 } } 62 79 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} 63 80 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} 64 81 {"return": {}} 82 + { 'execute': 'quit' } 65 83 {"return": {}} 66 84 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 67 85 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "BLOCK_JOB_CANCELLED", "data": {"device": "disk", "len": 67108864, "offset": 524288, "speed": 65536, "type": "stream"}}
+8
tests/qemu-iotests/191.out
··· 8 8 Formatting 'TEST_DIR/t.IMGFMT.ovl2', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.mid 9 9 wrote 65536/65536 bytes at offset 1048576 10 10 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 11 + { 'execute': 'qmp_capabilities' } 11 12 { 12 13 "return": { 13 14 } ··· 15 16 16 17 === Perform commit job === 17 18 19 + { 'execute': 'block-commit', 'arguments': { 'job-id': 'commit0', 'device': 'top', 'base':'TEST_DIR/t.IMGFMT.base', 'top': 'TEST_DIR/t.IMGFMT.mid' } } 18 20 { 19 21 "timestamp": { 20 22 "seconds": TIMESTAMP, ··· 102 104 103 105 === Check that both top and top2 point to base now === 104 106 107 + { 'execute': 'query-named-block-nodes' } 105 108 { 106 109 "return": [ 107 110 { ··· 378 381 } 379 382 ] 380 383 } 384 + { 'execute': 'quit' } 381 385 { 382 386 "return": { 383 387 } ··· 415 419 Formatting 'TEST_DIR/t.IMGFMT.ovl3', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.ovl2 416 420 wrote 65536/65536 bytes at offset 1048576 417 421 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 422 + { 'execute': 'qmp_capabilities' } 418 423 { 419 424 "return": { 420 425 } ··· 422 427 423 428 === Perform commit job === 424 429 430 + { 'execute': 'block-commit', 'arguments': { 'job-id': 'commit0', 'device': 'top', 'base':'TEST_DIR/t.IMGFMT.base', 'top': 'TEST_DIR/t.IMGFMT.mid' } } 425 431 { 426 432 "timestamp": { 427 433 "seconds": TIMESTAMP, ··· 509 515 510 516 === Check that both top and top2 point to base now === 511 517 518 + { 'execute': 'query-named-block-nodes' } 512 519 { 513 520 "return": [ 514 521 { ··· 796 803 } 797 804 ] 798 805 } 806 + { 'execute': 'quit' } 799 807 { 800 808 "return": { 801 809 }
+1
tests/qemu-iotests/200.out
··· 6 6 7 7 === Starting QEMU VM === 8 8 9 + { 'execute': 'qmp_capabilities' } 9 10 {"return": {}} 10 11 11 12 === Sending stream/cancel, checking for SIGSEGV only ===
+19
tests/qemu-iotests/223.out
··· 24 24 25 25 === End dirty bitmaps, and start serving image over NBD === 26 26 27 + {"execute":"qmp_capabilities"} 27 28 {"return": {}} 29 + {"execute":"blockdev-add", "arguments":{"driver":"IMGFMT", "node-name":"n", "file":{"driver":"file", "filename":"TEST_DIR/t.IMGFMT"}}} 28 30 {"return": {}} 31 + {"execute":"x-blockdev-set-iothread", "arguments":{"node-name":"n", "iothread":"io0"}} 29 32 {"return": {}} 33 + {"execute":"block-dirty-bitmap-disable", "arguments":{"node":"n", "name":"b"}} 30 34 {"return": {}} 35 + {"execute":"nbd-server-add", "arguments":{"device":"n"}} 31 36 {"error": {"class": "GenericError", "desc": "NBD server not running"}} 37 + {"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"SOCK_DIR/nbd"}}}} 32 38 {"return": {}} 39 + {"execute":"nbd-server-start", "arguments":{"addr":{"type":"unix", "data":{"path":"SOCK_DIR/nbd1"}}}} 33 40 {"error": {"class": "GenericError", "desc": "NBD server already running"}} 34 41 exports available: 0 42 + {"execute":"nbd-server-add", "arguments":{"device":"n", "bitmap":"b"}} 35 43 {"return": {}} 44 + {"execute":"nbd-server-add", "arguments":{"device":"nosuch"}} 36 45 {"error": {"class": "GenericError", "desc": "Cannot find device=nosuch nor node_name=nosuch"}} 46 + {"execute":"nbd-server-add", "arguments":{"device":"n"}} 37 47 {"error": {"class": "GenericError", "desc": "NBD server already has export named 'n'"}} 48 + {"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "bitmap":"b2"}} 38 49 {"error": {"class": "GenericError", "desc": "Enabled bitmap 'b2' incompatible with readonly export"}} 50 + {"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "bitmap":"b3"}} 39 51 {"error": {"class": "GenericError", "desc": "Bitmap 'b3' is not found"}} 52 + {"execute":"nbd-server-add", "arguments":{"device":"n", "name":"n2", "writable":true, "bitmap":"b2"}} 40 53 {"return": {}} 41 54 exports available: 2 42 55 export: 'n' ··· 84 97 85 98 === End qemu NBD server === 86 99 100 + {"execute":"nbd-server-remove", "arguments":{"name":"n"}} 87 101 {"return": {}} 102 + {"execute":"nbd-server-remove", "arguments":{"name":"n2"}} 88 103 {"return": {}} 104 + {"execute":"nbd-server-remove", "arguments":{"name":"n2"}} 89 105 {"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}} 106 + {"execute":"nbd-server-stop"} 90 107 {"return": {}} 108 + {"execute":"nbd-server-stop"} 91 109 {"error": {"class": "GenericError", "desc": "NBD server not running"}} 110 + {"execute":"quit"} 92 111 {"return": {}} 93 112 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 94 113
+3
tests/qemu-iotests/229.out
··· 3 3 Formatting 'TEST_DIR/d.IMGFMT', fmt=IMGFMT size=1048576 4 4 wrote 2097152/2097152 bytes at offset 0 5 5 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 6 + {'execute': 'qmp_capabilities'} 6 7 {"return": {}} 7 8 8 9 === Starting drive-mirror, causing error & stop === 9 10 11 + {'execute': 'drive-mirror', 'arguments': {'device': 'testdisk', 'format': 'IMGFMT', 'target': 'TEST_DIR/d.IMGFMT', 'sync': 'full', 'mode': 'existing', 'on-source-error': 'stop', 'on-target-error': 'stop' }} 10 12 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "testdisk"}} 11 13 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "testdisk"}} 12 14 {"return": {}} ··· 15 17 16 18 === Force cancel job paused in error state === 17 19 20 + {'execute': 'block-job-cancel', 'arguments': { 'device': 'testdisk', 'force': true}} 18 21 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "testdisk"}} 19 22 {"return": {}} 20 23 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "aborting", "id": "testdisk"}}
+6
tests/qemu-iotests/249.out
··· 2 2 Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576 3 3 Formatting 'TEST_DIR/t.IMGFMT.int', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.base 4 4 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/t.IMGFMT.int 5 + { 'execute': 'qmp_capabilities' } 5 6 {"return": {}} 6 7 7 8 === Send a write command to a drive opened in read-only mode (1) 8 9 10 + { 'execute': 'human-monitor-command', 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} 9 11 {"return": "Block node is read-onlyrn"} 10 12 11 13 === Run block-commit on base using an invalid filter node name 12 14 15 + { 'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'none1', 'top-node': 'int', 'filter-node-name': '1234'}} 13 16 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 14 17 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "null", "id": "job0"}} 15 18 {"error": {"class": "GenericError", "desc": "Invalid node name"}} 16 19 17 20 === Send a write command to a drive opened in read-only mode (2) 18 21 22 + { 'execute': 'human-monitor-command', 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} 19 23 {"return": "Block node is read-onlyrn"} 20 24 21 25 === Run block-commit on base using the default filter node name 22 26 27 + { 'execute': 'block-commit', 'arguments': {'job-id': 'job0', 'device': 'none1', 'top-node': 'int'}} 23 28 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "job0"}} 24 29 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "job0"}} 25 30 {"return": {}} ··· 31 36 32 37 === Send a write command to a drive opened in read-only mode (3) 33 38 39 + { 'execute': 'human-monitor-command', 'arguments': {'command-line': 'qemu-io none0 "aio_write 0 2k"'}} 34 40 {"return": "Block node is read-onlyrn"} 35 41 *** done
+9
tests/qemu-iotests/common.qemu
··· 123 123 # until either timeout, or a response. If it is not set, or <=0, 124 124 # then the command is only sent once. 125 125 # 126 + # If neither $silent nor $mismatch_only is set, and $cmd begins with '{', 127 + # echo the command before sending it the first time. 128 + # 126 129 # If $qemu_error_no_exit is set, then even if the expected response 127 130 # is not seen, we will not exit. $QEMU_STATUS[$1] will be set it -1 in 128 131 # that case. ··· 152 155 shift $(($# - 2)) 153 156 fi 154 157 158 + # Display QMP being sent, but not HMP (since HMP already echoes its 159 + # input back to output); decide based on leading '{' 160 + if [ -z "$silent" ] && [ -z "$mismatch_only" ] && 161 + [ "$cmd" != "${cmd#\{}" ]; then 162 + echo "${cmd}" | _filter_testdir | _filter_imgfmt 163 + fi 155 164 while [ ${count} -gt 0 ] 156 165 do 157 166 echo "${cmd}" >&${QEMU_IN[${h}]}