Re: NEC 6x external scsi cdrom with kernel 2.2.3?

Jens Axboe (axboe@image.dk)
Tue, 4 May 1999 13:46:42 +0200


--3uo+9/B/ebqu+fSQ
Content-Type: text/plain; charset=us-ascii

On Tue, Mar 16 1999, Tuan Hoang wrote:
> Hi,
>
> I used to have a plextor 12x scsi internal (worked fine) but now I'm
> stuck with an external nec 6x scsi. xcdroast doesn't seem
> to recognize an cd's which I have inside the cdrom. I can
> mount the cdrom on it but I noticed that in dmesg that
> it says that there are illegal requests before hand.
>
> sr1: CDROM (ioctl) reports ILLEGAL REQUEST.
> sr1: CDROM (ioctl) reports ILLEGAL REQUEST.
> sr1: CDROM (ioctl) reports ILLEGAL REQUEST.
> sr1: CDROM (ioctl) reports ILLEGAL REQUEST.
> ISO 9660 Extensions: RRIP_1991A
>
> I'm using an adaptec 2940 ultra pci scsi on a Tyan board with
> an AMD K6-2 350. Also I'm using Red Hat 5.2 with all the updated rpms
> as of this writing and kernel 2.2.3.
> I'm wondering if the illegal requests are what's causing xcdroast to fail.

I recently bumped into this myself. It seems the NEC drive fails the
capabilites probe and the sense check only checks for invalid opcode,
where the probe will result in a invalid field in cdb. Could you try
this patch? Or get 2.2.7-ac1, which included it and lots of other
things for shutting up the SCSI CD-ROM subsystem a bit.

-- 
*  Jens Axboe <axboe@image.dk>
*  Linux CD-ROM Maintainer

--3uo+9/B/ebqu+fSQ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="sr_ioctl.diff"

diff -ur --exclude-from /home/axboe/cdrom/exclude-from virgin/drivers/scsi/sr_ioctl.c linux/drivers/scsi/sr_ioctl.c --- virgin/drivers/scsi/sr_ioctl.c Thu Feb 25 01:27:54 1999 +++ linux/drivers/scsi/sr_ioctl.c Sun Apr 25 18:55:06 1999 @@ -120,9 +122,11 @@ if (!quiet) printk(KERN_ERR "sr%d: CDROM (ioctl) reports ILLEGAL " "REQUEST.\n", target); - if (SCpnt->sense_buffer[12] == 0x20 && + if ((SCpnt->sense_buffer[12] == 0x20 || + SCpnt->sense_buffer[12] == 0x24) && SCpnt->sense_buffer[13] == 0x00) { /* sense: Invalid command operation code */ + /* or Invalid field in cdb */ err = -EDRIVE_CANT_DO_THIS; } else { err = -EINVAL;

--3uo+9/B/ebqu+fSQ--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/