qemu/tests/qemu-iotests/307.out
Eric Blake 56cf9d0471 nbd/client: Request extended headers during negotiation
All the pieces are in place for a client to finally request extended
headers.  Note that we must not request extended headers when qemu-nbd
is used to connect to the kernel module (as nbd.ko does not expect
them, but expects us to do the negotiation in userspace before handing
the socket over to the kernel), but there is no harm in all other
clients requesting them.

Extended headers are not essential to the information collected during
'qemu-nbd --list', but probing for it gives us one more piece of
information in that output.  Update the iotests affected by the new
line of output.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Message-ID: <20230925192229.3186470-23-eblake@redhat.com>
2023-10-05 11:02:08 -05:00

137 lines
6.2 KiB
Text

wrote 4096/4096 bytes at offset 0
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
=== Launch VM ===
{"execute": "nbd-server-start", "arguments": {"addr": {"data": {"path": "SOCK_DIR/PID-socket"}, "type": "unix"}}}
{"return": {}}
{"execute": "query-block-exports", "arguments": {}}
{"return": []}
=== Create a read-only NBD export ===
{"execute": "block-export-add", "arguments": {"id": "export0", "node-name": "fmt", "type": "nbd"}}
{"return": {}}
{"execute": "query-block-exports", "arguments": {}}
{"return": [{"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]}
exports available: 1
export: 'fmt'
size: 67108864
flags: 0x58f ( readonly flush fua df multi cache )
min block: XXX
opt block: XXX
max block: XXX
transaction size: 64-bit
available meta contexts: 1
base:allocation
=== Try a few invalid things ===
{"execute": "block-export-add", "arguments": {"id": "#invalid", "node-name": "fmt", "type": "nbd"}}
{"error": {"class": "GenericError", "desc": "Invalid block export id"}}
{"execute": "block-export-add", "arguments": {"id": "export0", "node-name": "fmt", "type": "nbd"}}
{"error": {"class": "GenericError", "desc": "Block export id 'export0' is already in use"}}
{"execute": "block-export-add", "arguments": {"id": "export1", "node-name": "ro", "type": "nbd", "writable": true}}
{"error": {"class": "GenericError", "desc": "Cannot export read-only node as writable"}}
{"execute": "block-export-del", "arguments": {"id": "export1"}}
{"error": {"class": "GenericError", "desc": "Export 'export1' is not found"}}
{"execute": "query-block-exports", "arguments": {}}
{"return": [{"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]}
=== Move export to an iothread ===
{"execute": "device_add", "arguments": {"drive": "fmt", "driver": "scsi-hd", "id": "sda"}}
{"return": {}}
{"execute": "query-block-exports", "arguments": {}}
{"return": [{"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]}
exports available: 1
export: 'fmt'
size: 67108864
flags: 0x58f ( readonly flush fua df multi cache )
min block: XXX
opt block: XXX
max block: XXX
transaction size: 64-bit
available meta contexts: 1
base:allocation
=== Add export with conflicting iothread ===
{"execute": "device_add", "arguments": {"drive": "null", "driver": "scsi-hd", "id": "sdb"}}
{"return": {}}
{"execute": "block-export-add", "arguments": {"fixed-iothread": true, "id": "export1", "iothread": "iothread1", "node-name": "null", "type": "nbd", "writable": true}}
{"error": {"class": "GenericError", "desc": "Cannot change iothread of active block backend"}}
{"execute": "block-export-add", "arguments": {"fixed-iothread": false, "id": "export1", "iothread": "iothread1", "node-name": "null", "type": "nbd", "writable": true}}
{"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)."}}
=== Add a writable export ===
{"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}}
{"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)."}}
{"execute": "device_del", "arguments": {"id": "sda"}}
{"return": {}}
{"data": {"device": "sda", "path": "/machine/peripheral/sda"}, "event": "DEVICE_DELETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}
{"execute": "device_add", "arguments": {"drive": "fmt", "driver": "scsi-hd", "id": "sda", "share-rw": true}}
{"return": {}}
{"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}}
{"return": {}}
{"execute": "query-block-exports", "arguments": {}}
{"return": [{"id": "export1", "node-name": "fmt", "shutting-down": false, "type": "nbd"}, {"id": "export0", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]}
exports available: 2
export: 'fmt'
size: 67108864
flags: 0x58f ( readonly flush fua df multi cache )
min block: XXX
opt block: XXX
max block: XXX
transaction size: 64-bit
available meta contexts: 1
base:allocation
export: 'export1'
description: This is the writable second export
size: 67108864
flags: 0xded ( flush fua trim zeroes df multi cache fast-zero )
min block: XXX
opt block: XXX
max block: XXX
transaction size: 64-bit
available meta contexts: 1
base:allocation
=== Connect qemu-io to export1, try removing exports ===
read 4096/4096 bytes at offset 0
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 4096/4096 bytes at offset 4096
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
{"execute": "block-export-del", "arguments": {"id": "export1"}}
{"error": {"class": "GenericError", "desc": "export 'export1' still in use"}}
{"execute": "block-export-del", "arguments": {"id": "export0"}}
{"return": {}}
[{"data": {"id": "export0"}, "event": "BLOCK_EXPORT_DELETED", "timestamp": {"microseconds": "USECS", "seconds": "SECS"}}]
{"execute": "query-block-exports", "arguments": {}}
{"return": [{"id": "export1", "node-name": "fmt", "shutting-down": false, "type": "nbd"}]}
exports available: 1
export: 'export1'
description: This is the writable second export
size: 67108864
flags: 0xded ( flush fua trim zeroes df multi cache fast-zero )
min block: XXX
opt block: XXX
max block: XXX
transaction size: 64-bit
available meta contexts: 1
base:allocation
=== Connect qemu-io again, try force removing ===
{"execute": "block-export-del", "arguments": {"id": "export1"}}
{"error": {"class": "GenericError", "desc": "export 'export1' still in use"}}
{"execute": "block-export-del", "arguments": {"id": "export1", "mode": "hard"}}
{"return": {}}
read failed: Input/output error
{"execute": "query-block-exports", "arguments": {}}
{"return": []}
exports available: 0
=== Shut down QEMU ===