081.out (6036B)
1 QA output created by 081 2 3 == creating quorum files == 4 Formatting 'TEST_DIR/1.IMGFMT', fmt=IMGFMT size=10485760 5 Formatting 'TEST_DIR/2.IMGFMT', fmt=IMGFMT size=10485760 6 Formatting 'TEST_DIR/3.IMGFMT', fmt=IMGFMT size=10485760 7 8 == writing images == 9 wrote 10485760/10485760 bytes at offset 0 10 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 11 12 == checking quorum write == 13 read 10485760/10485760 bytes at offset 0 14 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 15 read 10485760/10485760 bytes at offset 0 16 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 17 read 10485760/10485760 bytes at offset 0 18 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 19 20 == corrupting image == 21 wrote 10485760/10485760 bytes at offset 0 22 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 23 24 == checking quorum correction == 25 read 10485760/10485760 bytes at offset 0 26 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 27 28 == checking mixed reference/option specification == 29 Testing: 30 QMP_VERSION 31 {"return": {}} 32 {"return": {}} 33 {"return": {}} 34 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "QUORUM_REPORT_BAD", "data": {"node-name": "drive2", "sectors-count": 20480, "sector-num": 0, "type": "read"}} 35 read 10485760/10485760 bytes at offset 0 36 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 37 {"return": ""} 38 {"return": {}} 39 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 40 41 42 == using quorum rewrite corrupted mode == 43 read 10485760/10485760 bytes at offset 0 44 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 45 46 == checking that quorum has corrected the corrupted file == 47 read 10485760/10485760 bytes at offset 0 48 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 49 50 == using quorum rewrite corrupted mode without WRITE permission == 51 -- corrupting -- 52 wrote 1048576/1048576 bytes at offset 1048576 53 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 54 55 -- running quorum -- 56 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 { 57 "driver": "quorum", 58 "node-name": "quorum", 59 "read-only": true, 60 "vote-threshold": 2, 61 "rewrite-corrupted": true, 62 "children": [ "file1", "file2", "file3" ] 63 } -device virtio-scsi,id=scsi -device scsi-hd,id=quorum-drive,bus=scsi.0,drive=quorum 64 QMP_VERSION 65 {"return": {}} 66 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "QUORUM_REPORT_BAD", "data": {"node-name": "file2", "sectors-count": 20480, "sector-num": 0, "type": "read"}} 67 read 10485760/10485760 bytes at offset 0 68 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 69 {"return": ""} 70 {"return": {}} 71 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 72 73 -- checking that the image has been corrected -- 74 read 10485760/10485760 bytes at offset 0 75 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 76 77 == breaking quorum == 78 wrote 10485760/10485760 bytes at offset 0 79 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 80 wrote 10485760/10485760 bytes at offset 0 81 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 82 83 == checking that quorum is broken == 84 read failed: Input/output error 85 86 == checking the blkverify mode with broken content == 87 quorum: offset=0 bytes=10485760 contents mismatch at offset 0 88 89 == writing the same data to both files == 90 wrote 10485760/10485760 bytes at offset 0 91 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 92 wrote 10485760/10485760 bytes at offset 0 93 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 94 95 == checking the blkverify mode with valid content == 96 read 10485760/10485760 bytes at offset 0 97 10 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 98 99 == checking the blkverify mode with invalid settings == 100 qemu-io: can't open: blkverify=on can only be set if there are exactly two files and vote-threshold is 2 101 102 == dynamically adding a child to a quorum == 103 Testing: 104 QMP_VERSION 105 {"return": {}} 106 {"return": {}} 107 {"return": {}} 108 {"return": {}} 109 {"return": {}} 110 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 111 112 Testing: 113 QMP_VERSION 114 {"return": {}} 115 {"return": {}} 116 {"return": {}} 117 {"error": {"class": "GenericError", "desc": "Cannot add a child to a quorum in blkverify mode"}} 118 {"return": {}} 119 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 120 121 122 == dynamically removing a child from a quorum == 123 Testing: 124 QMP_VERSION 125 {"return": {}} 126 {"return": {}} 127 {"return": {}} 128 {"return": {}} 129 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 130 131 Testing: 132 QMP_VERSION 133 {"return": {}} 134 {"return": {}} 135 {"error": {"class": "GenericError", "desc": "The number of children cannot be lower than the vote threshold 2"}} 136 {"return": {}} 137 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 138 139 Testing: 140 QMP_VERSION 141 {"return": {}} 142 {"error": {"class": "GenericError", "desc": "blkverify=on can only be set if there are exactly two files and vote-threshold is 2"}} 143 {"error": {"class": "GenericError", "desc": "Cannot find device='drive0-quorum' nor node-name='drive0-quorum'"}} 144 {"return": {}} 145 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 146 147 Testing: 148 QMP_VERSION 149 {"return": {}} 150 {"return": {}} 151 {"error": {"class": "GenericError", "desc": "The number of children cannot be lower than the vote threshold 2"}} 152 {"return": {}} 153 {"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} 154 155 *** done