qemu-devel
[Top][All Lists]
Advanced

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

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


From: Yannick Duchêne
Subject: [Qemu-devel] [Bug 1799766] Re: -device does not work as -drive do
Date: Thu, 25 Oct 2018 17:30:39 -0000

Yes, I messed up with `-device`, because I initially tried to do it with
`-device`, later rely only on automatically created device, and so had
automatically created devices.

Thanks for you rich comment, I will study it.

-- 
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]