From: Kevin Wolf <kwolf@redhat.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Stefan Hajnoczi <stefanha@gmail.com>,
Alexander Graf <agraf@suse.de>,
Programmingkid <programmingkidx@gmail.com>
Subject: Re: [Qemu-devel] [Qemu-ppc] real cdrom access failure
Date: Mon, 10 Jun 2013 17:15:24 +0200 [thread overview]
Message-ID: <20130610151524.GM3636@dhcp-200-207.str.redhat.com> (raw)
In-Reply-To: <51B5E69D.8000002@suse.de>
Am 10.06.2013 um 16:45 hat Andreas Färber geschrieben:
> 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.
Not necessary, qstring_from_str() creates a copy anyway. I can't test
it, but does the following work for you?
Kevin
diff --git a/block/raw-posix.c b/block/raw-posix.c
index c0ccf27..90ce9f8 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -1350,6 +1350,7 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags)
qemu_close(fd);
}
filename = bsdPath;
+ qdict_put(options, "filename", qstring_from_str(filename));
}
if ( mediaIterator )
prev parent reply other threads:[~2013-06-10 15:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.30226.1370762837.22519.qemu-ppc@nongnu.org>
[not found] ` <4E830D81-854D-4697-9BCC-4C51D852D132@gmail.com>
[not found] ` <12387A41-C7DA-474B-AB20-820779E8FDC2@suse.de>
[not found] ` <069A6C85-FB1D-4B86-BC98-5BA2455A0135@gmail.com>
2013-06-10 13:41 ` [Qemu-devel] [Qemu-ppc] real cdrom access failure Alexander Graf
2013-06-10 14:22 ` Andreas Färber
2013-06-10 14:33 ` Kevin Wolf
2013-06-10 14:45 ` Andreas Färber
2013-06-10 15:15 ` Kevin Wolf [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130610151524.GM3636@dhcp-200-207.str.redhat.com \
--to=kwolf@redhat.com \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=programmingkidx@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).