Public bug reported: Copy/paste of https://stackoverflow.com/questions/52929723/qemu-eject- complains-device-is-not-found-while-it-is-there , since I found this bug trying to find an answer to an own question on Stack Overflow.
Below, what was my question the answer I wrote, all exposes the bug. ==================================================================== I need to eject a floppy from QEmu 3.0 monitor, but the command surprisingly fails complaining the device is not found, while it is really there. Listing of devices: (qemu) info block fda: dos-6-22/Dos622-1.img (raw) Attached to: /machine/unattached/device[11] Removable device: not locked, tray closed Cache mode: writeback hda: hda.img (raw) Attached to: /machine/peripheral-anon/device[1] Cache mode: writeback Eject command result: (qemu) eject fda Device 'fda' not found This is so although this documentation says this is how I have to do: https://www.linux-kvm.org/page/Change_cdrom (just that I want to eject the floppy instead of the CD‑ROM). The `change` command complains the same: (qemu) change fda dos-6-22/Dos622-2.img raw Device 'fda' not found Is this a bug or me doing something wrong? I tried using different node names, with always the same result. ==================================================================== I’m posting as an answer, but I’m not strictly sure. I can just say, if I understand correctly, this is a bug. The answer comes in two parts. First part, is a stripped down failing invocation: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -blockdev driver=file,node-name=fda-img,filename=fda.img \ -blockdev driver=raw,node-name=fda,file=fda-img \ -global isa-fdc.driveA=fda (qemu) info block ide1-cd0: [not inserted] Attached to: /machine/unattached/device[19] Removable device: not locked, tray closed sd0: [not inserted] Removable device: not locked, tray closed fda: fda.img (raw) Attached to: /machine/unattached/device[13] Removable device: not locked, tray closed Cache mode: writeback (qemu) eject fda Device 'fda' not found Second part, is the same without the last argument `-global isa- fdc.driveA=fda`: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -blockdev driver=file,node-name=fda-img,filename=fda.img \ -blockdev driver=raw,node-name=fda,file=fda-img (qemu) info block ide1-cd0: [not inserted] Attached to: /machine/unattached/device[19] Removable device: not locked, tray closed floppy0: [not inserted] Attached to: /machine/unattached/device[13] Removable device: not locked, tray closed sd0: [not inserted] Removable device: not locked, tray closed (qemu) eject floppy0 There is more error when `-global isa-fdc.driveA=fda` is removed. However, the documentation says: > -global driver=driver,property=property,value=value > Set default value of driver’s property prop to value, e.g.: > qemu-system-i386 -global ide-hd.physical_block_size=4096 disk-image.img > In particular, you can **use this to set driver properties for devices which > are created automatically by the machine model**. To create a device which is > not created automatically and set properties on it, use -device. > -global driver.prop=value is shorthand for -global driver=driver,property=prop,value=value. The longhand syntax works even when driver contains a dot. What I put a stress on in the quote, suggest I’m not misusing `-global` and that’s most probably a bug. **Update for more details:** It seems using `-drive` instead of `-device` and `driveA` assignment, the result is not the same, although RedHat documentation recommands using `-device` instead of `-drive` and QEmu 3.0 documentation says `-drive` is essentially a shortcut for `-device` (“essentially”, not telling about the difference). Below, two cases, with an except of `info block` and an excerpt of `info qtree`. With this one, `eject floppy0` works: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -drive format=raw,if=floppy,media=disk,file=fda.img \ -device isa-vga,vgamem_mb=1 \ -serial msmouse […] floppy0 (#block156): fda.img (raw) Attached to: /machine/unattached/device[12] Removable device: not locked, tray closed Cache mode: writeback […] 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" With this one, `eject fda` does not work: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -blockdev driver=file,node-name=fda-img,filename=fda.img \ -blockdev driver=raw,node-name=fda,file=fda-img \ -global isa-fdc.driveA=fda \ -device isa-vga,vgamem_mb=1 \ -serial msmouse […] fda: fda.img (raw) Attached to: /machine/unattached/device[12] Removable device: not locked, tray closed Cache mode: writeback […] 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 = "fda" 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" ** Affects: qemu Importance: Undecided Status: New -- You received this bug notification because you are a member of qemu- devel-ml, which is subscribed to QEMU. https://bugs.launchpad.net/bugs/1799766 Title: -device does not work as -drive do Status in QEMU: New Bug description: Copy/paste of https://stackoverflow.com/questions/52929723/qemu-eject- complains-device-is-not-found-while-it-is-there , since I found this bug trying to find an answer to an own question on Stack Overflow. Below, what was my question the answer I wrote, all exposes the bug. ==================================================================== I need to eject a floppy from QEmu 3.0 monitor, but the command surprisingly fails complaining the device is not found, while it is really there. Listing of devices: (qemu) info block fda: dos-6-22/Dos622-1.img (raw) Attached to: /machine/unattached/device[11] Removable device: not locked, tray closed Cache mode: writeback hda: hda.img (raw) Attached to: /machine/peripheral-anon/device[1] Cache mode: writeback Eject command result: (qemu) eject fda Device 'fda' not found This is so although this documentation says this is how I have to do: https://www.linux-kvm.org/page/Change_cdrom (just that I want to eject the floppy instead of the CD‑ROM). The `change` command complains the same: (qemu) change fda dos-6-22/Dos622-2.img raw Device 'fda' not found Is this a bug or me doing something wrong? I tried using different node names, with always the same result. ==================================================================== I’m posting as an answer, but I’m not strictly sure. I can just say, if I understand correctly, this is a bug. The answer comes in two parts. First part, is a stripped down failing invocation: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -blockdev driver=file,node-name=fda-img,filename=fda.img \ -blockdev driver=raw,node-name=fda,file=fda-img \ -global isa-fdc.driveA=fda (qemu) info block ide1-cd0: [not inserted] Attached to: /machine/unattached/device[19] Removable device: not locked, tray closed sd0: [not inserted] Removable device: not locked, tray closed fda: fda.img (raw) Attached to: /machine/unattached/device[13] Removable device: not locked, tray closed Cache mode: writeback (qemu) eject fda Device 'fda' not found Second part, is the same without the last argument `-global isa- fdc.driveA=fda`: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -blockdev driver=file,node-name=fda-img,filename=fda.img \ -blockdev driver=raw,node-name=fda,file=fda-img (qemu) info block ide1-cd0: [not inserted] Attached to: /machine/unattached/device[19] Removable device: not locked, tray closed floppy0: [not inserted] Attached to: /machine/unattached/device[13] Removable device: not locked, tray closed sd0: [not inserted] Removable device: not locked, tray closed (qemu) eject floppy0 There is more error when `-global isa-fdc.driveA=fda` is removed. However, the documentation says: > -global driver=driver,property=property,value=value > Set default value of driver’s property prop to value, e.g.: > qemu-system-i386 -global ide-hd.physical_block_size=4096 disk-image.img > In particular, you can **use this to set driver properties for devices which are created automatically by the machine model**. To create a device which is not created automatically and set properties on it, use -device. > -global driver.prop=value is shorthand for -global driver=driver,property=prop,value=value. The longhand syntax works even when driver contains a dot. What I put a stress on in the quote, suggest I’m not misusing `-global` and that’s most probably a bug. **Update for more details:** It seems using `-drive` instead of `-device` and `driveA` assignment, the result is not the same, although RedHat documentation recommands using `-device` instead of `-drive` and QEmu 3.0 documentation says `-drive` is essentially a shortcut for `-device` (“essentially”, not telling about the difference). Below, two cases, with an except of `info block` and an excerpt of `info qtree`. With this one, `eject floppy0` works: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -drive format=raw,if=floppy,media=disk,file=fda.img \ -device isa-vga,vgamem_mb=1 \ -serial msmouse […] floppy0 (#block156): fda.img (raw) Attached to: /machine/unattached/device[12] Removable device: not locked, tray closed Cache mode: writeback […] 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" With this one, `eject fda` does not work: qemu-system-i386 \ -monitor stdio \ -machine type=isapc,vmport=off \ -blockdev driver=file,node-name=fda-img,filename=fda.img \ -blockdev driver=raw,node-name=fda,file=fda-img \ -global isa-fdc.driveA=fda \ -device isa-vga,vgamem_mb=1 \ -serial msmouse […] fda: fda.img (raw) Attached to: /machine/unattached/device[12] Removable device: not locked, tray closed Cache mode: writeback […] 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 = "fda" 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" To manage notifications about this bug go to: https://bugs.launchpad.net/qemu/+bug/1799766/+subscriptions