]>
Commit | Line | Data |
---|---|---|
f51af04c KW |
1 | wrote 4096/4096 bytes at offset 0 |
2 | 4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | |
3 | ||
4 | === Launch VM === | |
5 | {"execute": "nbd-server-start", "arguments": {"addr": {"data": {"path": "SOCK_DIR/PID-socket"}, "type": "unix"}}} | |
6 | {"return": {}} | |
7 | {"execute": "query-block-exports", "arguments": {}} | |
8 | {"return": []} | |
9 | ||
10 | === Create a read-only NBD export === | |
11 | {"execute": "block-export-add", "arguments": {"id": "export0", "node-name": "fmt", "type": "nbd"}} | |
12 | {"return": {}} | |
13 | {"execute": "query-block-exports", "arguments": {}} | |
14 | {"return": [{"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]} | |
15 | exports available: 1 | |
16 | export: 'fmt' | |
17 | size: 67108864 | |
18 | flags: 0x58f ( readonly flush fua df multi cache ) | |
19 | min block: XXX | |
20 | opt block: XXX | |
21 | max block: XXX | |
22 | available meta contexts: 1 | |
23 | base:allocation | |
24 | ||
25 | ||
26 | === Try a few invalid things === | |
27 | {"execute": "block-export-add", "arguments": {"id": "#invalid", "node-name": "fmt", "type": "nbd"}} | |
28 | {"error": {"class": "GenericError", "desc": "Invalid block export id"}} | |
29 | {"execute": "block-export-add", "arguments": {"id": "export0", "node-name": "fmt", "type": "nbd"}} | |
30 | {"error": {"class": "GenericError", "desc": "Block export id 'export0' is already in use"}} | |
31 | {"execute": "block-export-add", "arguments": {"id": "export1", "node-name": "ro", "type": "nbd", "writable": true}} | |
32 | {"error": {"class": "GenericError", "desc": "Cannot export read-only node as writable"}} | |
33 | {"execute": "block-export-del", "arguments": {"id": "export1"}} | |
34 | {"error": {"class": "GenericError", "desc": "Export 'export1' is not found"}} | |
35 | {"execute": "query-block-exports", "arguments": {}} | |
36 | {"return": [{"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]} | |
37 | ||
38 | === Move export to an iothread === | |
39 | {"execute": "device_add", "arguments": {"drive": "fmt", "driver": "scsi-hd", "id": "sda"}} | |
40 | {"return": {}} | |
41 | {"execute": "query-block-exports", "arguments": {}} | |
42 | {"return": [{"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]} | |
43 | exports available: 1 | |
44 | export: 'fmt' | |
45 | size: 67108864 | |
46 | flags: 0x58f ( readonly flush fua df multi cache ) | |
47 | min block: XXX | |
48 | opt block: XXX | |
49 | max block: XXX | |
50 | available meta contexts: 1 | |
51 | base:allocation | |
52 | ||
53 | ||
d2147169 HR |
54 | === Add export with conflicting iothread === |
55 | {"execute": "device_add", "arguments": {"drive": "null", "driver": "scsi-hd", "id": "sdb"}} | |
56 | {"return": {}} | |
57 | {"execute": "block-export-add", "arguments": {"fixed-iothread": true, "id": "export1", "iothread": "iothread1", "node-name": "null", "type": "nbd", "writable": true}} | |
58 | {"error": {"class": "GenericError", "desc": "Cannot change iothread of active block backend"}} | |
59 | {"execute": "block-export-add", "arguments": {"fixed-iothread": false, "id": "export1", "iothread": "iothread1", "node-name": "null", "type": "nbd", "writable": true}} | |
60 | {"error": {"class": "GenericError", "desc": "Permission conflict on node 'null': permissions 'write' are both required by an unnamed block device (uses node 'null' as 'root' child) and unshared by block device 'sdb' (uses node 'null' as 'root' child)."}} | |
61 | ||
f51af04c KW |
62 | === Add a writable export === |
63 | {"execute": "block-export-add", "arguments": {"description": "This is the writable second export", "id": "export1", "name": "export1", "node-name": "fmt", "type": "nbd", "writable": true, "writethrough": true}} | |
30ebb9aa | 64 | {"error": {"class": "GenericError", "desc": "Permission conflict on node 'fmt': permissions 'write' are both required by an unnamed block device (uses node 'fmt' as 'root' child) and unshared by block device 'sda' (uses node 'fmt' as 'root' child)."}} |
f51af04c KW |
65 | {"execute": "device_del", "arguments": {"id": "sda"}} |
66 | {"return": {}} | |
67 | {"data": {"device": "sda", "path": "/machine/peripheral/sda"}, "event": "DEVICE_DELETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}} | |
68 | {"execute": "device_add", "arguments": {"drive": "fmt", "driver": "scsi-hd", "id": "sda", "share-rw": true}} | |
69 | {"return": {}} | |
70 | {"execute": "block-export-add", "arguments": {"description": "This is the writable second export", "id": "export1", "name": "export1", "node-name": "fmt", "type": "nbd", "writable": true, "writethrough": true}} | |
71 | {"return": {}} | |
72 | {"execute": "query-block-exports", "arguments": {}} | |
73 | {"return": [{"id": "export1", "node-name": "fmt", "shutting-down": false, "type": "nbd"}, {"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]} | |
74 | exports available: 2 | |
75 | export: 'fmt' | |
76 | size: 67108864 | |
77 | flags: 0x58f ( readonly flush fua df multi cache ) | |
78 | min block: XXX | |
79 | opt block: XXX | |
80 | max block: XXX | |
81 | available meta contexts: 1 | |
82 | base:allocation | |
83 | export: 'export1' | |
84 | description: This is the writable second export | |
85 | size: 67108864 | |
3698f162 | 86 | flags: 0xded ( flush fua trim zeroes df multi cache fast-zero ) |
f51af04c KW |
87 | min block: XXX |
88 | opt block: XXX | |
89 | max block: XXX | |
90 | available meta contexts: 1 | |
91 | base:allocation | |
92 | ||
93 | ||
94 | === Connect qemu-io to export1, try removing exports === | |
95 | read 4096/4096 bytes at offset 0 | |
96 | 4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | |
97 | ||
98 | wrote 4096/4096 bytes at offset 4096 | |
99 | 4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | |
100 | ||
101 | {"execute": "block-export-del", "arguments": {"id": "export1"}} | |
102 | {"error": {"class": "GenericError", "desc": "export 'export1' still in use"}} | |
103 | {"execute": "block-export-del", "arguments": {"id": "export0"}} | |
104 | {"return": {}} | |
105 | [{"data": {"id": "export0"}, "event": "BLOCK_EXPORT_DELETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}] | |
106 | {"execute": "query-block-exports", "arguments": {}} | |
107 | {"return": [{"id": "export1", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]} | |
108 | exports available: 1 | |
109 | export: 'export1' | |
110 | description: This is the writable second export | |
111 | size: 67108864 | |
3698f162 | 112 | flags: 0xded ( flush fua trim zeroes df multi cache fast-zero ) |
f51af04c KW |
113 | min block: XXX |
114 | opt block: XXX | |
115 | max block: XXX | |
116 | available meta contexts: 1 | |
117 | base:allocation | |
118 | ||
119 | ||
120 | === Connect qemu-io again, try force removing === | |
121 | {"execute": "block-export-del", "arguments": {"id": "export1"}} | |
122 | {"error": {"class": "GenericError", "desc": "export 'export1' still in use"}} | |
123 | {"execute": "block-export-del", "arguments": {"id": "export1", "mode": "hard"}} | |
124 | {"return": {}} | |
125 | read failed: Input/output error | |
126 | ||
127 | {"execute": "query-block-exports", "arguments": {}} | |
128 | {"return": []} | |
129 | exports available: 0 | |
130 | ||
131 | ||
132 | === Shut down QEMU === |