qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH] raw-posix.c: remove raw device access for cdrom


From: Programmingkid
Subject: [Qemu-block] [PATCH] raw-posix.c: remove raw device access for cdrom
Date: Wed, 1 Jul 2015 18:13:11 -0400

Fix real cdrom access in Mac OS X so it can be used in QEMU.
It simply removes the r from a device file's name. This
allows for a real cdrom to be accessible to the guest.
It has been successfully tested with a Windows XP guest
in qemu-system-i386. The qemu-system-ppc emulator doesn't
quit anymore, but there is another problem that prevents a 
real cdrom from working.

Signed-off-by: John Arbuckle <address@hidden>

---
 block/raw-posix.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/block/raw-posix.c b/block/raw-posix.c
index a967464..3585ed9 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -2096,6 +2096,16 @@ static int hdev_open(BlockDriverState *bs, QDict *options, int flags,
         kernResult = FindEjectableCDMedia( &mediaIterator );
         kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) );

 

+        /*
+         * Remove the r from cdrom block device if needed.
+         * /dev/rdisk1 would become /dev/disk1.
+         * The r means raw access. It doesn't work well.
+         */
+        int sizeOfString = strlen("/dev/r");
+        if (strncmp("/dev/r", bsdPath, sizeOfString) == 0) {
+            sprintf(bsdPath, "/dev/%s", bsdPath + sizeOfString);
+        }
+
         if ( bsdPath[ 0 ] != '\0' ) {
             strcat(bsdPath,"s0");
             /* some CDs don't have a partition 0 */
-- 
1.7.5.4


reply via email to

[Prev in Thread] Current Thread [Next in Thread]