| QA output created by 081 |
| |
| == creating quorum files == |
| Formatting 'TEST_DIR/1.IMGFMT', fmt=IMGFMT size=10485760 |
| Formatting 'TEST_DIR/2.IMGFMT', fmt=IMGFMT size=10485760 |
| Formatting 'TEST_DIR/3.IMGFMT', fmt=IMGFMT size=10485760 |
| |
| == writing images == |
| wrote 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking quorum write == |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == corrupting image == |
| wrote 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking quorum correction == |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking mixed reference/option specification == |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "QUORUM_REPORT_BAD", "data": {"node-name": "drive2", "sectors-count": 20480, "sector-num": 0, "type": "read"}} |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| {"return": ""} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| |
| == using quorum rewrite corrupted mode == |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking that quorum has corrected the corrupted file == |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == using quorum rewrite corrupted mode without WRITE permission == |
| -- corrupting -- |
| wrote 1048576/1048576 bytes at offset 1048576 |
| 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| -- running quorum -- |
| Testing: -blockdev file,node-name=file1,filename=TEST_DIR/1.IMGFMT -blockdev file,node-name=file2,filename=TEST_DIR/2.IMGFMT -blockdev file,node-name=file3,filename=TEST_DIR/3.IMGFMT -blockdev { |
| "driver": "quorum", |
| "node-name": "quorum", |
| "read-only": true, |
| "vote-threshold": 2, |
| "rewrite-corrupted": true, |
| "children": [ "file1", "file2", "file3" ] |
| } -device virtio-scsi,id=scsi -device scsi-hd,id=quorum-drive,bus=scsi.0,drive=quorum |
| QMP_VERSION |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "QUORUM_REPORT_BAD", "data": {"node-name": "file2", "sectors-count": 20480, "sector-num": 0, "type": "read"}} |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| {"return": ""} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| -- checking that the image has been corrected -- |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == breaking quorum == |
| wrote 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| wrote 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking that quorum is broken == |
| read failed: Input/output error |
| |
| == checking the blkverify mode with broken content == |
| quorum: offset=0 bytes=10485760 contents mismatch at offset 0 |
| |
| == writing the same data to both files == |
| wrote 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| wrote 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking the blkverify mode with valid content == |
| read 10485760/10485760 bytes at offset 0 |
| 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) |
| |
| == checking the blkverify mode with invalid settings == |
| qemu-io: can't open: blkverify=on can only be set if there are exactly two files and vote-threshold is 2 |
| |
| == dynamically adding a child to a quorum == |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"error": {"class": "GenericError", "desc": "Cannot add a child to a quorum in blkverify mode"}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| |
| == dynamically removing a child from a quorum == |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"return": {}} |
| {"error": {"class": "GenericError", "desc": "The number of children cannot be lower than the vote threshold 2"}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"error": {"class": "GenericError", "desc": "blkverify=on can only be set if there are exactly two files and vote-threshold is 2"}} |
| {"error": {"class": "GenericError", "desc": "Cannot find device=drive0-quorum nor node_name=drive0-quorum"}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| Testing: |
| QMP_VERSION |
| {"return": {}} |
| {"return": {}} |
| {"error": {"class": "GenericError", "desc": "The number of children cannot be lower than the vote threshold 2"}} |
| {"return": {}} |
| {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} |
| |
| *** done |