From: brad@optilink.COM (Brad Yearwood)
Newsgroups: comp.os.linux
Subject: Toshiba 3301 CD-ROM drives (Sun CD drive, too)
Date: 28 Dec 92 04:43:53 GMT
Organization: Optilink Corporation, Petaluma, CA

In article <1992Dec27.053434.5519@netcom.com>, qualtrak@netcom.com (Qual Trak) writes:
> 
> Everything seems to be working fine ( I did have to get the ps sources
> and compile them) except I can't talk to my CD-ROM (Toshiba XM-3301TA
> Rev:  0272.

People have complained recently that Toshiba 3301 CD-ROM drives don't
seem to work.  Under 0.99.1, I have been trying to use a Future Domain
TMC-1660 SCSI controller with each of two types of CD-ROM drives:

  Sun Microsystems P/N 595-1929-04, claims on probe to be a Sony CDU-8012

  Toshiba TXM3301E1, purchased for use with a Sun, claims on probe to
    be XM-3301TA, firmware revision 0272

A NEC CDR-73 works perfectly.  An old Texel DM-3020 (not a current model,
and this particular one has been through a power supply failure, so it may
be damaged) often mounts a 9660 filesystem OK, but shows some frequency of
various SCSI complaints.

I try the following on the Sun and Toshiba drives:

mount -r -t /dev/scd0 /cdrom

I get a kernel panic complaining that "a multi-volume CD somehow got mounted".
I did some experiments with hex dump code inside isofs/inode.c, and with
using "dd if=/dev/scd0 of=/tmp/foo bs=2048 count=100" to see what would happen
when I attempted to read the CD-ROM sequentially.  The results lead me to the
following conclusion.

These two drives are apparently jimmied in firmware to emulate 512-byte
sector sizes.  This is very handy in making them look more like normal
SCSI disks, but it is not very handy in making them look like the usual
2048-byte sector CD-ROMs.  Perhaps some special SCSI command is available
to put one or the other into a 2048-byte mode, but I have no detailed
documentation.

As a test, I put some rude hacks into kernel/blk_dev/scsi/sr.c to try to
undo a lot of what it does: re-blocking 512-byte requests from the block
I/O system into 2048-byte requests to the drive.

When I do this, both drives appear to work.  Performance on the Sun drive
is abysmal (perhaps due at least in part to the fact that I tried to
simplify the rude hacks some by cutting out scatter/gather support), but
performance on the Toshiba seems OK.

The changes are almost entirely untested, and as the holidays are ending,
I need to return various CD-ROM drives to the systems I swiped them
from (actually, I need to return the entire 486 machine to the group I swiped
it from), so it is not feasible for me to put in any responsible amount
of testing.  If you send a note promising that you won't use or pass
them around as tested, working, or smoothly integrated code, I'll email
a copy of the diffs (against a baseline of 0.99.1).

Because this Toshiba drive was purchased for use with Sun systems, there
is some chance that it is a special configuration which emulates 512-byte
sectors, and that the problems which people have reported with other Toshiba
3301 drives might have a different cause.

Brad Yearwood   brad@optilink.com   {uunet, pyramid}!optilink!brad
Petaluma, CA

Newsgroups: comp.os.linux
From: david@prism.demon.co.uk (David Metcalfe)