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

[Xen-changelog] If the 'cdrom=' option is specified in the definition file but media is



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID fd526926e0d1c0671295aa7f4b952186c9345173
# Parent  408f51a850f47af4db20f43f281935909d502511
If the 'cdrom=' option is specified in the definition file but media is 
not found in the CD drive then main() in vl.c exits and the guest appears 
to hang.  This patch modifies vl.c slightly to check for the presents of 
media.  If the cdrom cannot be opened then the cd entry is removed from 
hd_filename[] and bs_table[] allowing the guest to continue initializing. 
If the guest requires the CD media then the guest should report, gracefully
or otherwise, that it's missing.

From: Ross Maxfield <rmaxfiel@xxxxxxxxxx>

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>

diff -r 408f51a850f4 -r fd526926e0d1 tools/ioemu/vl.c
--- a/tools/ioemu/vl.c  Mon Apr 10 16:14:36 2006
+++ b/tools/ioemu/vl.c  Mon Apr 10 16:17:07 2006
@@ -3243,8 +3243,17 @@
     /* we always create the cdrom drive, even if no disk is there */
     bdrv_init();
     if (has_cdrom) {
-        bs_table[2] = bdrv_new("cdrom");
-        bdrv_set_type_hint(bs_table[2], BDRV_TYPE_CDROM);
+        int fd;
+        if ( (fd = open(hd_filename[2], O_RDONLY | O_BINARY)) < 0) {
+                hd_filename[2]=NULL;
+                bs_table[2]=NULL;
+                fprintf(logfile, "Could not open CD %s.\n", hd_filename[i]);
+        }
+        else {
+                close(fd);
+                bs_table[2] = bdrv_new("cdrom");
+                bdrv_set_type_hint(bs_table[2], BDRV_TYPE_CDROM);
+        }
     }
 
     /* open the virtual block devices */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.