On Jun 25, 2015, at 2:01 PM, Peter Maydell wrote: > On 25 June 2015 at 18:56, Programmingkid <programmingk...@gmail.com> wrote: >> Nice to hear from you again Laurent. The only way a solution in >> hdev_open() would work is if it could prevent find_image_format() >> from executing. Otherwise find_image_format() would just quit QEMU >> with an error. > > The question you should be asking is "what is Linux doing for > raw CDROM devices that is different, such that it works there > but doesn't work on OSX?". > > It would also be helpful to know which is the case that doesn't > work. Does QEMU fail in all cases, or only if the cdrom drive is > empty, or only if there's a disk in the drive?
QEMU fails if the cdrom is specified "-cdrom /dev/cdrom", and there is no cd in the drive. QEMU also fails with a real cdrom in the drive. > > My initial suspicion is that we need OSX support in raw-posix.c > for handling the host CDROM specially -- note that Linux and > FreeBSD register a bdrv_host_cdrom with an is_inserted > function. The is_inserted function wouldn't make a difference. I did follow the execution of QEMU from find_image_format(). When bdrv_co_io_em() is called, it returns -22. This is where things appear to start to go wrong.