nbd/server: Add FLAG_PAYLOAD support to CMD_BLOCK_STATUS
[qemu/ericb.git] / tests / qemu-iotests / 223.out
blobb38f0b7963ba4f9bdf3185ade0ce632b5d49b935
1 QA output created by 223
3 === Create partially sparse image, then add dirty bitmaps ===
5 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4194304
6 wrote 2097152/2097152 bytes at offset 1048576
7 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
8 Testing:
9 QMP_VERSION
10 {"return": {}}
11 {"return": {}}
12 {"return": {}}
13 {"return": {}}
14 {"return": {}}
15 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
18 === Write part of the file under active bitmap ===
20 wrote 512/512 bytes at offset 512
21 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
22 wrote 2097152/2097152 bytes at offset 2097152
23 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
25 === End dirty bitmaps, and start serving image over NBD ===
27 {"execute":"qmp_capabilities"}
28 {"return": {}}
29 {"execute":"blockdev-add",
30   "arguments":{"driver":"IMGFMT", "node-name":"n",
31     "file":{"driver":"file", "filename":"TEST_DIR/t.IMGFMT"}}}
32 {"return": {}}
33 {"execute":"block-dirty-bitmap-disable",
34   "arguments":{"node":"n", "name":"b"}}
35 {"return": {}}
36 {"execute":"blockdev-add",
37   "arguments":{"driver":"null-co", "node-name":"null",
38     "size": 4194304}}
39 {"return": {}}
40 {"execute":"block-dirty-bitmap-add",
41   "arguments":{"node":"null", "name":"b3"}}
42 {"return": {}}
44 === Set up NBD with normal access ===
46 {"execute":"nbd-server-add",
47   "arguments":{"device":"n"}}
48 {"error": {"class": "GenericError", "desc": "NBD server not running"}}
49 {"execute":"nbd-server-start",
50   "arguments":{"addr":{"type":"unix",
51     "data":{"path":"SOCK_DIR/nbd"}}}}
52 {"return": {}}
53 {"execute":"nbd-server-start",
54   "arguments":{"addr":{"type":"unix",
55     "data":{"path":"SOCK_DIR/nbd1"}}}}
56 {"error": {"class": "GenericError", "desc": "NBD server already running"}}
57 exports available: 0
58 {"execute":"nbd-server-add",
59   "arguments":{"device":"n", "bitmap":"b"}}
60 {"return": {}}
61 {"execute":"nbd-server-add",
62   "arguments":{"device":"nosuch"}}
63 {"error": {"class": "GenericError", "desc": "Cannot find device='nosuch' nor node-name='nosuch'"}}
64 {"execute":"nbd-server-add",
65   "arguments":{"device":"n"}}
66 {"error": {"class": "GenericError", "desc": "Block export id 'n' is already in use"}}
67 {"execute":"nbd-server-add",
68   "arguments":{"device":"n", "name":"n2",
69   "bitmap":"b2"}}
70 {"error": {"class": "GenericError", "desc": "Enabled bitmap 'b2' incompatible with readonly export"}}
71 {"execute":"nbd-server-add",
72   "arguments":{"device":"n", "name":"n2",
73   "bitmap":"b3"}}
74 {"error": {"class": "GenericError", "desc": "Bitmap 'b3' is not found"}}
75 {"execute":"nbd-server-add",
76   "arguments":{"device":"n", "name":"n2", "writable":true,
77   "description":"some text", "bitmap":"b2"}}
78 {"return": {}}
79 {"execute":"block-export-add",
80   "arguments":{"type": "nbd", "node-name":"n", "id":"n3", "name": "n3",
81   "bitmaps":[{"node":"null","name":"b3"}]}}
82 {"return": {}}
83 exports available: 3
84  export: 'n'
85   size:  4194304
86   flags: 0x158f ( readonly flush fua df multi cache block-status-payload )
87   min block: 1
88   opt block: 4096
89   max block: 33554432
90   transaction size: 64-bit
91   available meta contexts: 2
92    base:allocation
93    qemu:dirty-bitmap:b
94  export: 'n2'
95   description: some text
96   size:  4194304
97   flags: 0x1ded ( flush fua trim zeroes df multi cache fast-zero block-status-payload )
98   min block: 1
99   opt block: 4096
100   max block: 33554432
101   transaction size: 64-bit
102   available meta contexts: 2
103    base:allocation
104    qemu:dirty-bitmap:b2
105  export: 'n3'
106   size:  4194304
107   flags: 0x158f ( readonly flush fua df multi cache block-status-payload )
108   min block: 1
109   opt block: 4096
110   max block: 33554432
111   transaction size: 64-bit
112   available meta contexts: 2
113    base:allocation
114    qemu:dirty-bitmap:b3
116 === Contrast normal status to large granularity dirty-bitmap ===
118 read 512/512 bytes at offset 512
119 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
120 read 524288/524288 bytes at offset 524288
121 512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
122 read 1048576/1048576 bytes at offset 1048576
123 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
124 read 2097152/2097152 bytes at offset 2097152
125 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
126 [{ "start": 0, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
127 { "start": 4096, "length": 1044480, "depth": 0, "present": true, "zero": true, "data": false, "offset": OFFSET},
128 { "start": 1048576, "length": 3145728, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
129 [{ "start": 0, "length": 65536, "depth": 0, "present": false, "zero": false, "data": false},
130 { "start": 65536, "length": 2031616, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
131 { "start": 2097152, "length": 2097152, "depth": 0, "present": false, "zero": false, "data": false}]
133 === Contrast to small granularity dirty-bitmap ===
135 [{ "start": 0, "length": 512, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
136 { "start": 512, "length": 512, "depth": 0, "present": false, "zero": false, "data": false},
137 { "start": 1024, "length": 2096128, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
138 { "start": 2097152, "length": 2097152, "depth": 0, "present": false, "zero": false, "data": false}]
140 === Check bitmap taken from another node ===
142 [{ "start": 0, "length": 4194304, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
144 === End qemu NBD server ===
146 {"execute":"nbd-server-remove",
147   "arguments":{"name":"n"}}
148 {"return": {}}
149 {"execute":"nbd-server-remove",
150   "arguments":{"name":"n2"}}
151 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n"}}
152 {"return": {}}
153 {"execute":"nbd-server-remove",
154   "arguments":{"name":"n2"}}
155 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n2"}}
156 {"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}}
157 {"execute":"nbd-server-stop"}
158 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n3"}}
159 {"return": {}}
160 {"execute":"nbd-server-stop"}
161 {"error": {"class": "GenericError", "desc": "NBD server not running"}}
163 === Set up NBD with iothread access ===
165 {"execute":"x-blockdev-set-iothread",
166   "arguments":{"node-name":"n", "iothread":"io0"}}
167 {"return": {}}
168 {"execute":"nbd-server-add",
169   "arguments":{"device":"n"}}
170 {"error": {"class": "GenericError", "desc": "NBD server not running"}}
171 {"execute":"nbd-server-start",
172   "arguments":{"addr":{"type":"unix",
173     "data":{"path":"SOCK_DIR/nbd"}}}}
174 {"return": {}}
175 {"execute":"nbd-server-start",
176   "arguments":{"addr":{"type":"unix",
177     "data":{"path":"SOCK_DIR/nbd1"}}}}
178 {"error": {"class": "GenericError", "desc": "NBD server already running"}}
179 exports available: 0
180 {"execute":"nbd-server-add",
181   "arguments":{"device":"n", "bitmap":"b"}}
182 {"return": {}}
183 {"execute":"nbd-server-add",
184   "arguments":{"device":"nosuch"}}
185 {"error": {"class": "GenericError", "desc": "Cannot find device='nosuch' nor node-name='nosuch'"}}
186 {"execute":"nbd-server-add",
187   "arguments":{"device":"n"}}
188 {"error": {"class": "GenericError", "desc": "Block export id 'n' is already in use"}}
189 {"execute":"nbd-server-add",
190   "arguments":{"device":"n", "name":"n2",
191   "bitmap":"b2"}}
192 {"error": {"class": "GenericError", "desc": "Enabled bitmap 'b2' incompatible with readonly export"}}
193 {"execute":"nbd-server-add",
194   "arguments":{"device":"n", "name":"n2",
195   "bitmap":"b3"}}
196 {"error": {"class": "GenericError", "desc": "Bitmap 'b3' is not found"}}
197 {"execute":"nbd-server-add",
198   "arguments":{"device":"n", "name":"n2", "writable":true,
199   "description":"some text", "bitmap":"b2"}}
200 {"return": {}}
201 {"execute":"block-export-add",
202   "arguments":{"type": "nbd", "node-name":"n", "id":"n3", "name": "n3",
203   "bitmaps":[{"node":"null","name":"b3"}]}}
204 {"return": {}}
205 exports available: 3
206  export: 'n'
207   size:  4194304
208   flags: 0x158f ( readonly flush fua df multi cache block-status-payload )
209   min block: 1
210   opt block: 4096
211   max block: 33554432
212   transaction size: 64-bit
213   available meta contexts: 2
214    base:allocation
215    qemu:dirty-bitmap:b
216  export: 'n2'
217   description: some text
218   size:  4194304
219   flags: 0x1ded ( flush fua trim zeroes df multi cache fast-zero block-status-payload )
220   min block: 1
221   opt block: 4096
222   max block: 33554432
223   transaction size: 64-bit
224   available meta contexts: 2
225    base:allocation
226    qemu:dirty-bitmap:b2
227  export: 'n3'
228   size:  4194304
229   flags: 0x158f ( readonly flush fua df multi cache block-status-payload )
230   min block: 1
231   opt block: 4096
232   max block: 33554432
233   transaction size: 64-bit
234   available meta contexts: 2
235    base:allocation
236    qemu:dirty-bitmap:b3
238 === Contrast normal status to large granularity dirty-bitmap ===
240 read 512/512 bytes at offset 512
241 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
242 read 524288/524288 bytes at offset 524288
243 512 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
244 read 1048576/1048576 bytes at offset 1048576
245 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
246 read 2097152/2097152 bytes at offset 2097152
247 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
248 [{ "start": 0, "length": 4096, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
249 { "start": 4096, "length": 1044480, "depth": 0, "present": true, "zero": true, "data": false, "offset": OFFSET},
250 { "start": 1048576, "length": 3145728, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
251 [{ "start": 0, "length": 65536, "depth": 0, "present": false, "zero": false, "data": false},
252 { "start": 65536, "length": 2031616, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
253 { "start": 2097152, "length": 2097152, "depth": 0, "present": false, "zero": false, "data": false}]
255 === Contrast to small granularity dirty-bitmap ===
257 [{ "start": 0, "length": 512, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
258 { "start": 512, "length": 512, "depth": 0, "present": false, "zero": false, "data": false},
259 { "start": 1024, "length": 2096128, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
260 { "start": 2097152, "length": 2097152, "depth": 0, "present": false, "zero": false, "data": false}]
262 === Check bitmap taken from another node ===
264 [{ "start": 0, "length": 4194304, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
266 === End qemu NBD server ===
268 {"execute":"nbd-server-remove",
269   "arguments":{"name":"n"}}
270 {"return": {}}
271 {"execute":"nbd-server-remove",
272   "arguments":{"name":"n2"}}
273 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n"}}
274 {"return": {}}
275 {"execute":"nbd-server-remove",
276   "arguments":{"name":"n2"}}
277 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n2"}}
278 {"error": {"class": "GenericError", "desc": "Export 'n2' is not found"}}
279 {"execute":"nbd-server-stop"}
280 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "BLOCK_EXPORT_DELETED", "data": {"id": "n3"}}
281 {"return": {}}
282 {"execute":"nbd-server-stop"}
283 {"error": {"class": "GenericError", "desc": "NBD server not running"}}
284 {"execute":"quit"}
285 {"return": {}}
286 {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
288 === Use qemu-nbd as server ===
290 [{ "start": 0, "length": 65536, "depth": 0, "present": false, "zero": false, "data": false},
291 { "start": 65536, "length": 2031616, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
292 { "start": 2097152, "length": 2097152, "depth": 0, "present": false, "zero": false, "data": false}]
293 [{ "start": 0, "length": 512, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
294 { "start": 512, "length": 512, "depth": 0, "present": false, "zero": false, "data": false},
295 { "start": 1024, "length": 11321, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET}]
296 [{ "start": 12345, "length": 2084807, "depth": 0, "present": true, "zero": false, "data": true, "offset": OFFSET},
297 { "start": 2097152, "length": 2097152, "depth": 0, "present": false, "zero": false, "data": false}]
298 *** done