Am 10.06.2013 16:33, schrieb Kevin Wolf: > Am 10.06.2013 um 16:22 hat Andreas Färber geschrieben: >> Am 10.06.2013 15:41, schrieb Alexander Graf: >>> On 06/10/2013 03:39 PM, Programmingkid wrote: >>>> On Jun 9, 2013, at 12:34 PM, Alexander Graf wrote: >>>>> On 09.06.2013, at 18:28, Programmingkid wrote: >>>>> >>>>>> I am trying to access the cdrom drive in QEMU 1.5.0, but can't. This >>>>>> is the error I see: qemu-system-ppc: -cdrom /dev/cdrom: could not >>>>>> open disk image /dev/cdrom: No such file or directory. I think this >>>>>> is a bug with version 1.5.0 on Mac OS X. Anybody else notice this >>>>>> problem? >>>>> Mac OS X doesn't provide a /dev/cdrom link. You have to point it >>>>> directly to the target device. To get a list of available devices, try >>>>> >>>>> $ diskutil list >>>>> >>>>> Also make sure that all partitions and file systems on top of the >>>>> CD-ROM are unmounted (diskutil unmount or just umount), as OSX won't >>>>> allow direct access to /dev/disk1 otherwise. >>>> >>>> The -cdrom /dev/cdrom option always worked in the past. Just not with >>>> version 1.5.0. >>> >>> Hrm. CC'ing Andreas and Peter. They're the best matches to people >>> knowing their way around OSX host support :). >> >> The translation of /dev/cdrom happens in block/raw-posix.c:hdev_open(). >> >> For v1.5.0 a filename parameter was dropped from the block API, so >> currently the Mac OS X code is changing the local variable so the >> modified filename variable never makes it into the QDict *options. :/ > > Oh nice, magic filenames. Whoever thought this was a good idea... > > It's easy enough to fix, just put the string back to the QDict in the > end. It feels wrong to do something like this, but if we have been doing > it before, I guess we must keep doing so.
block.c: * Detect host devices. By convention, /dev/cdrom[N] is always block/raw-posix.c: if (strstart(filename, "/dev/cdrom", NULL)) block/raw-posix.c: if (strstart(filename, "/dev/cdrom", NULL)) { block/raw-win32.c: if (strstart(filename, "/dev/cdrom", NULL)) block/raw-win32.c: if (strstart(filename, "/dev/cdrom", NULL)) { I happened to know about this issue because we have similar downstream block drivers that need to translate the filename and broke with v1.5. I'll look into fixing this if no one beats me to it. We'll probably need a g_strdup() since bsdPath[] is on the stack. Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg