« Previous | Next » 

Revision 7d0d6950

ID7d0d69509a966a5328e4fed7d0a942112d431c35

Added by Markus Armbruster about 11 years ago

block: Fix virtual media change for if=none

BlockDriverState member removable controls whether virtual media
change (monitor commands change, eject) is allowed. It is set when
the "type hint" is BDRV_TYPE_CDROM or BDRV_TYPE_FLOPPY.

The type hint is only set by drive_init(). It sets BDRV_TYPE_FLOPPY
for if=floppy. It sets BDRV_TYPE_CDROM for media=cdrom and if=ide,
scsi, xen, or none.

if=ide and if=scsi work, because the type hint makes it a CD-ROM.
if=xen likewise, I think.

For the same reason, if=none works when it's used by ide-drive or
scsi-disk. For other guest devices, there are problems:

  • fdc: you can't change virtual media

    $ qemu [...] -drive if=none,id=foo,... -global isa-fdc.driveA=foo
    QEMU 0.12.50 monitor - type 'help' for more information
    (qemu) eject foo
    Device 'foo' is not removable

    unless you add media=cdrom, but that makes it readonly.

  • virtio: if you add media=cdrom, you can change virtual media. If
    you eject, the guest gets I/O errors. If you change, the guest sees
    the drive's contents suddenly change.
  • scsi-generic: if you add media=cdrom, you can change virtual media.
    I didn't test what that does to the guest or the physical device,
    but it can't be pretty.

Signed-off-by: Markus Armbruster <>
Signed-off-by: Kevin Wolf <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences