
Am 20.04.2018 um 10:50 hat Peter Krempa geschrieben:
On Fri, Apr 20, 2018 at 10:41:50 +0200, Kevin Wolf wrote:
Am 20.04.2018 um 09:56 hat Peter Krempa geschrieben:
Is there a special need to use 'host_cdrom' explicitly if the CDROM drive is used? That would complicate things since we don't know when that will happen.
You don't get the full CD-ROM passthrough functionality with host_device. Specifically, if you eject the virtual drive, the physical drive will only be ejected with host_cdrom, and the same is true for lock_medium.
I think we may also make an attempt at detecting physical media change ocassionally with host_cdrom, but I doubt that this is working reliably anyway (the driver function is .bdrv_is_inserted, so it would be polling rather than processing an event; and I'm not sure when it's called).
Hmm, okay, it seems that we in fact should use it. Is there any drawback if host_cdrom is used with a device which is not a CDROM? (e.g. a logical volume containing the image?)
Basically the question is whether we need to add some "smart" handling or we can just assume that if the guest device is a block-backed CDROM we can use that.
Hm, looking at the code, it seems that failure is silently ignored in .bdrv_eject and .bdrv_lock_medium, but .bdrv_is_inserted is implemented like this: ret = ioctl(s->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT); return ret == CDS_DISC_OK; Which probably means that a block device not supporting that ioctl won't be functional at all because the block layer will return -ENOMEDIUM almost everywhere. Kevin