[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 03/16] iotests/172: Cover -global floppy.drive=...
From: |
Markus Armbruster |
Subject: |
[PATCH 03/16] iotests/172: Cover -global floppy.drive=... |
Date: |
Fri, 5 Jun 2020 16:56:12 +0200 |
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>
---
tests/qemu-iotests/172 | 7 ++
tests/qemu-iotests/172.out | 134 +++++++++++++++++++++++++++++++++++++
2 files changed, 141 insertions(+)
diff --git a/tests/qemu-iotests/172 b/tests/qemu-iotests/172
index 714c7527b4..18056bcef7 100755
--- a/tests/qemu-iotests/172
+++ b/tests/qemu-iotests/172
@@ -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
diff --git a/tests/qemu-iotests/172.out b/tests/qemu-iotests/172.out
index 23c44210e8..345e27c294 100644
--- a/tests/qemu-iotests/172.out
+++ b/tests/qemu-iotests/172.out
@@ -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'
--
2.26.2
- Re: [PATCH 14/16] arm/aspeed: Drop aspeed_board_init_flashes() parameter @errp, (continued)
- [PATCH 04/16] fdc: Reject clash between -drive if=floppy and -global isa-fdc, Markus Armbruster, 2020/06/05
- [PATCH 08/16] blockdev: Deprecate -drive with bogus interface type, Markus Armbruster, 2020/06/05
- [PATCH 15/16] sd/pxa2xx_mmci: Don't crash on pxa2xx_mmci_init() error, Markus Armbruster, 2020/06/05
- [PATCH 10/16] qdev: Improve netdev property override error a bit, Markus Armbruster, 2020/06/05
- [PATCH 12/16] qdev: Reject chardev property override, Markus Armbruster, 2020/06/05
- [PATCH 03/16] iotests/172: Cover -global floppy.drive=...,
Markus Armbruster <=
- [PATCH 16/16] sd/milkymist-memcard: Fix error API violation, Markus Armbruster, 2020/06/05
- Re: [PATCH 00/16] Crazy shit around -global (pardon my french), John Snow, 2020/06/10