qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [Bug 1799766] [NEW] -device does not work as -drive do


From: Yannick Duchêne
Subject: [Qemu-devel] [Bug 1799766] [NEW] -device does not work as -drive do
Date: Wed, 24 Oct 2018 18:53:23 -0000

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]