The boot image boot53c8xx+mcd.img contains both the NCR/Symbios 53c8xx SCSI driver and a fix which causes mcd drives work correctly for installation. If you have a mitsumi cdrom and have been unable to install Red Hat Linux 4.0 from CDROM, please try using this boot image to do the installation. This is not a supported boot image. When you install from this disk, a `stock' kernel with both a modular 53c8xx.o driver and the original mcd.o driver will be installed on your system. In order to access your SCSI adapter, you may need to install the kernel from the boot53c8xx.img boot image, according to the instructions in the README file in this directory. You may wish to try the mcdx driver to see if it works with your Mitsumi CD-ROM. Alternatively, if you wish to compile your own kernel with the fixed mcd module, the patch is included below. It has also been incorporated into the official Linux kernel sources. If we release a new kernel-modules package, it will include the fixed module; you can build you own fixed module from the sources included in the file /updates/i386/kernel-source-2.0.18-6.i386.rpm --- mcd.c.nodelay Fri Oct 25 14:44:07 1996 +++ mcd.c Wed Nov 13 11:10:16 1996 @@ -61,6 +61,10 @@ 07 July 1995 Modifications by Andrew J. Kroll Bjorn Ekwall added unregister_blkdev to mcd_init() + + Michael K. Johnson added retries on open + for slow drives which take a while to recognize that they contain + a CD. */ #include @@ -1095,6 +1099,7 @@ mcd_open(struct inode *ip, struct file *fp) { int st; + int count = 0; if (mcdPresent == 0) return -ENXIO; /* no hardware */ @@ -1106,9 +1111,16 @@ mcd_invalidate_buffers(); - st = statusCmd(); /* check drive status */ - if (st == -1) - return -EIO; /* drive doesn't respond */ + do { + st = statusCmd(); /* check drive status */ + if (st == -1) + return -EIO; /* drive doesn't respond */ + if ((st & MST_READY) == 0) { /* no disk? wait a sec... */ + current->state = TASK_INTERRUPTIBLE; + current->timeout = jiffies + HZ; + schedule(); + } + } while (((st & MST_READY) == 0) && count++ < MCD_RETRY_ATTEMPTS); if ((st & MST_READY) == 0) /* no disk in drive */ {