Re: [Qemu-devel] [Qemu-ppc] real cdrom access failure

2013-06-10 Thread 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.


Alex



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 :). Also Changing qemu-ppc@ to 
qemu-devel@, as this is 100% unrelated to the ppc target.



Alex




Re: [Qemu-devel] [Qemu-ppc] real cdrom access failure

2013-06-10 Thread Andreas Färber
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.


 Alex


 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. :/

Andreas

 Also Changing qemu-ppc@ to
 qemu-devel@, as this is 100% unrelated to the ppc target.
 
 
 Alex

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg



Re: [Qemu-devel] [Qemu-ppc] real cdrom access failure

2013-06-10 Thread 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.
 
 
  Alex
 
 
  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.

Kevin



Re: [Qemu-devel] [Qemu-ppc] real cdrom access failure

2013-06-10 Thread Andreas Färber
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



Re: [Qemu-devel] [Qemu-ppc] real cdrom access failure

2013-06-10 Thread Kevin Wolf
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 )