mirror of https://github.com/xemu-project/xemu.git
iotests/172: Cover -global floppy.drive=...
Use of -global to set a default backend for non-singleton devices is a bad idea. But as long as we permit it, we better test it. Test output demonstrates we screw up when -global floppy clashes with -fda or with -device floppy: according to "info qtree", only the latter backend is attached, but according to "info block", both are. Here's the clash with -device: Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -global floppy.drive=none0 -device floppy,drive=none1,unit=0 dev: isa-fdc, id "" [...] driveA = "" driveB = "" [...] bus: floppy-bus.0 type floppy-bus dev: floppy, id "" unit = 0 (0x0) ---> drive = "none1" [...] none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2) ---> Attached to: /machine/peripheral-anon/device[0] Cache mode: writeback none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2) ---> Attached to: /machine/peripheral-anon/device[0] Removable device: not locked, tray closed Cache mode: writeback /machine/peripheral-anon/device[0] is the floppy created with -device. Test output further demonstrates the "Drive 'FOO' is already in use because it has been automatically connected to another device" error message can be misleading. With '-fda "" -global floppy.drive=floppy0', it's in use because -global reuses -fda's backend. There is no other device involved. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20200622094227.1271650-4-armbru@redhat.com>
This commit is contained in:
parent
2017173968
commit
02b83f7d7c
|
@ -151,6 +151,7 @@ check_floppy_qtree -fdb "$TEST_IMG" -drive if=none,file="$TEST_IMG.2" -global is
|
|||
# Conflicting (-fdX wins)
|
||||
check_floppy_qtree -fda "$TEST_IMG" -drive if=none,file="$TEST_IMG.2" -global isa-fdc.driveA=none0
|
||||
check_floppy_qtree -fdb "$TEST_IMG" -drive if=none,file="$TEST_IMG.2" -global isa-fdc.driveB=none0
|
||||
check_floppy_qtree -fda "$TEST_IMG" -drive if=none,file="$TEST_IMG.2" -global floppy.drive=none0
|
||||
|
||||
echo
|
||||
echo
|
||||
|
@ -192,12 +193,16 @@ check_floppy_qtree -drive if=none,file="$TEST_IMG" -drive if=none,file="$TEST_IM
|
|||
-global isa-fdc.driveB=none0 -device floppy,drive=none1
|
||||
check_floppy_qtree -drive if=none,file="$TEST_IMG" -drive if=none,file="$TEST_IMG.2" \
|
||||
-global isa-fdc.driveB=none0 -device floppy,drive=none1,unit=0
|
||||
check_floppy_qtree -drive if=none,file="$TEST_IMG" \
|
||||
-global floppy.drive=none0 -device floppy,unit=0
|
||||
|
||||
# Conflicting
|
||||
check_floppy_qtree -drive if=none,file="$TEST_IMG" -drive if=none,file="$TEST_IMG.2" \
|
||||
-global isa-fdc.driveA=none0 -device floppy,drive=none1,unit=0
|
||||
check_floppy_qtree -drive if=none,file="$TEST_IMG" -drive if=none,file="$TEST_IMG.2" \
|
||||
-global isa-fdc.driveB=none0 -device floppy,drive=none1,unit=1
|
||||
check_floppy_qtree -drive if=none,file="$TEST_IMG" -drive if=none,file="$TEST_IMG.2" \
|
||||
-global floppy.drive=none0 -device floppy,drive=none1,unit=0
|
||||
|
||||
echo
|
||||
echo
|
||||
|
@ -205,8 +210,10 @@ echo === Attempt to use drive twice ===
|
|||
|
||||
# if=none
|
||||
check_floppy_qtree -drive if=none -device floppy,drive=none0 -device floppy -device floppy,drive=none0
|
||||
check_floppy_qtree -drive if=none -global floppy.drive=none0 -device floppy -device floppy
|
||||
# if=floppy
|
||||
check_floppy_qtree -fda "" -device floppy,drive=floppy0
|
||||
check_floppy_qtree -fda "" -global floppy.drive=floppy0
|
||||
# default if=floppy (not found, because it's created later)
|
||||
check_floppy_qtree -device floppy,drive=floppy0
|
||||
|
||||
|
|
|
@ -860,6 +860,50 @@ sd0: [not inserted]
|
|||
(qemu) quit
|
||||
|
||||
|
||||
Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -global floppy.drive=none0
|
||||
|
||||
dev: isa-fdc, id ""
|
||||
iobase = 1008 (0x3f0)
|
||||
irq = 6 (0x6)
|
||||
dma = 2 (0x2)
|
||||
driveA = ""
|
||||
driveB = ""
|
||||
check_media_rate = true
|
||||
fdtypeA = "auto"
|
||||
fdtypeB = "auto"
|
||||
fallback = "288"
|
||||
isa irq 6
|
||||
bus: floppy-bus.0
|
||||
type floppy-bus
|
||||
dev: floppy, id ""
|
||||
unit = 0 (0x0)
|
||||
drive = "floppy0"
|
||||
logical_block_size = 512 (0x200)
|
||||
physical_block_size = 512 (0x200)
|
||||
min_io_size = 0 (0x0)
|
||||
opt_io_size = 0 (0x0)
|
||||
discard_granularity = 4294967295 (0xffffffff)
|
||||
write-cache = "auto"
|
||||
share-rw = false
|
||||
drive-type = "144"
|
||||
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
|
||||
Attached to: /machine/unattached/device[15]
|
||||
Removable device: not locked, tray closed
|
||||
Cache mode: writeback
|
||||
|
||||
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
|
||||
Attached to: /machine/unattached/device[15]
|
||||
Cache mode: writeback
|
||||
|
||||
ide1-cd0: [not inserted]
|
||||
Attached to: /machine/unattached/device[22]
|
||||
Removable device: not locked, tray closed
|
||||
|
||||
sd0: [not inserted]
|
||||
Removable device: not locked, tray closed
|
||||
(qemu) quit
|
||||
|
||||
|
||||
|
||||
=== Mixing -fdX and -device ===
|
||||
|
||||
|
@ -1438,21 +1482,111 @@ sd0: [not inserted]
|
|||
(qemu) quit
|
||||
|
||||
|
||||
Testing: -drive if=none,file=TEST_DIR/t.qcow2 -global floppy.drive=none0 -device floppy,unit=0
|
||||
|
||||
dev: isa-fdc, id ""
|
||||
iobase = 1008 (0x3f0)
|
||||
irq = 6 (0x6)
|
||||
dma = 2 (0x2)
|
||||
driveA = ""
|
||||
driveB = ""
|
||||
check_media_rate = true
|
||||
fdtypeA = "auto"
|
||||
fdtypeB = "auto"
|
||||
fallback = "288"
|
||||
isa irq 6
|
||||
bus: floppy-bus.0
|
||||
type floppy-bus
|
||||
dev: floppy, id ""
|
||||
unit = 0 (0x0)
|
||||
drive = "none0"
|
||||
logical_block_size = 512 (0x200)
|
||||
physical_block_size = 512 (0x200)
|
||||
min_io_size = 0 (0x0)
|
||||
opt_io_size = 0 (0x0)
|
||||
discard_granularity = 4294967295 (0xffffffff)
|
||||
write-cache = "auto"
|
||||
share-rw = false
|
||||
drive-type = "144"
|
||||
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
|
||||
Attached to: /machine/peripheral-anon/device[0]
|
||||
Removable device: not locked, tray closed
|
||||
Cache mode: writeback
|
||||
|
||||
ide1-cd0: [not inserted]
|
||||
Attached to: /machine/unattached/device[21]
|
||||
Removable device: not locked, tray closed
|
||||
|
||||
sd0: [not inserted]
|
||||
Removable device: not locked, tray closed
|
||||
(qemu) quit
|
||||
|
||||
|
||||
Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -global isa-fdc.driveA=none0 -device floppy,drive=none1,unit=0
|
||||
QEMU_PROG: -device floppy,drive=none1,unit=0: Floppy unit 0 is in use
|
||||
|
||||
Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -global isa-fdc.driveB=none0 -device floppy,drive=none1,unit=1
|
||||
QEMU_PROG: -device floppy,drive=none1,unit=1: Floppy unit 1 is in use
|
||||
|
||||
Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -global floppy.drive=none0 -device floppy,drive=none1,unit=0
|
||||
|
||||
dev: isa-fdc, id ""
|
||||
iobase = 1008 (0x3f0)
|
||||
irq = 6 (0x6)
|
||||
dma = 2 (0x2)
|
||||
driveA = ""
|
||||
driveB = ""
|
||||
check_media_rate = true
|
||||
fdtypeA = "auto"
|
||||
fdtypeB = "auto"
|
||||
fallback = "288"
|
||||
isa irq 6
|
||||
bus: floppy-bus.0
|
||||
type floppy-bus
|
||||
dev: floppy, id ""
|
||||
unit = 0 (0x0)
|
||||
drive = "none1"
|
||||
logical_block_size = 512 (0x200)
|
||||
physical_block_size = 512 (0x200)
|
||||
min_io_size = 0 (0x0)
|
||||
opt_io_size = 0 (0x0)
|
||||
discard_granularity = 4294967295 (0xffffffff)
|
||||
write-cache = "auto"
|
||||
share-rw = false
|
||||
drive-type = "144"
|
||||
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
|
||||
Attached to: /machine/peripheral-anon/device[0]
|
||||
Cache mode: writeback
|
||||
|
||||
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
|
||||
Attached to: /machine/peripheral-anon/device[0]
|
||||
Removable device: not locked, tray closed
|
||||
Cache mode: writeback
|
||||
|
||||
ide1-cd0: [not inserted]
|
||||
Attached to: /machine/unattached/device[21]
|
||||
Removable device: not locked, tray closed
|
||||
|
||||
sd0: [not inserted]
|
||||
Removable device: not locked, tray closed
|
||||
(qemu) quit
|
||||
|
||||
|
||||
|
||||
=== Attempt to use drive twice ===
|
||||
|
||||
Testing: -drive if=none -device floppy,drive=none0 -device floppy -device floppy,drive=none0
|
||||
QEMU_PROG: -device floppy,drive=none0: Drive 'none0' is already in use by another device
|
||||
|
||||
Testing: -drive if=none -global floppy.drive=none0 -device floppy -device floppy
|
||||
QEMU_PROG: -device floppy: can't apply global floppy.drive=none0: Drive 'none0' is already in use by another device
|
||||
|
||||
Testing: -fda -device floppy,drive=floppy0
|
||||
QEMU_PROG: -device floppy,drive=floppy0: Drive 'floppy0' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)
|
||||
|
||||
Testing: -fda -global floppy.drive=floppy0
|
||||
QEMU_PROG: can't apply global floppy.drive=floppy0: Drive 'floppy0' is already in use because it has been automatically connected to another device (did you need 'if=none' in the drive options?)
|
||||
|
||||
Testing: -device floppy,drive=floppy0
|
||||
QEMU_PROG: -device floppy,drive=floppy0: Property 'floppy.drive' can't find value 'floppy0'
|
||||
|
||||
|
|
Loading…
Reference in New Issue