[comp.periphs.scsi] Standardized drivers...

hyc@math.lsa.umich.edu (Howard Chu) (06/17/90)

In article <12378@cbmvax.commodore.com> jesup@cbmvax (Randell Jesup) writes:
>In article <8575@goofy.Apple.COM> Smyers.S@AppleLink.Apple.COM (Scott Smyers) writes:
>>Hopefully this state of affairs will improve in the future.  The SCSI CAM 
>>committee has formed to address this exact issue.  I was a member of that 
>>committee for about the first 10 meetings and at every meeting someone 
>>brings up a problem exactly like you're describing - "I already have a 
>>SCSI bus on my PC - why can't I buy brand X SCSI device and plug it in?"  
>>God and ANSI willing, some day, you will.
>
>	We already have this on the Amiga.  We have a protocol called
>"scsidirect" which allows you to pass a control structure to the device
>driver, which will then send your command (and optionally retrieve any
>sense information).  The structure used looks like this:
[copyrighted material omitted...]

This seems like a lot of trouble to go to. The Atari ST has a lobotomized
version of SCSI on the main board. Atari and a few other companies make
host adapters that translate between Atari DMA and a full SCSI interface.
All of these guys give you their own device driver with their host adapter,
but all of the drivers work with all of the host adapters. (I've mixed and
matched since some of them support external real-time clocks, one performs
write verification, some generate "media changed" signals for removable
media, etc...)

They all use the common command set and they all work fine with just about
any disk I've been able to find. I had assumed that the same case existed
on the Mac and Amiga, and always wondered why it was so much trouble adding
new drives to Suns & such. (With a PC it's a foregone conclusion that there's
no standard way to do anything. But that's what you get when the basic
computer design lists keyboards, displays, and disk drives as optional
equipment...) When I add a drive to my ST, I run the formatter program,
click on a SCSI ID & LUN, and the drive name & geometry appear onscreen.
I can set it up with GEMDOS, MSDOS, Minix, or Mac-HFS partitions with equal
ease.

On the other hand, adding a brand X drive to a Sun or DECstation can only
be described as an extended exercise in meaningless frustration. Assuming
you can find the right cables and connectors, and determine whether X
"official" peripheral has internal termination or not, you then have to
tell the stupid formatters what kind of drive you're trying to use, how
many heads, cylinders, sectors per track, etc. etc... You have to calculate
partition sizes in blocks, calculate offsets for start of each partition, 
etc., and god help you if you newfs and mount overlapping partitions.
(Of course, prior to getting even this far, you need to know what kind of
SCSI controller is installed and what address it lives at on the bus...
Geeze! Kernels autoconfigure themselves, what's so hard about configuring
a disk automatically?)
--
  -- Howard Chu @ University of Michigan
  ... the glass is always greener on the side ...

jesup@cbmvax.commodore.com (Randell Jesup) (07/17/90)

In article <1990Jun17.113043.20473@math.lsa.umich.edu> hyc@math.lsa.umich.edu (Howard Chu) writes:
>In article <12378@cbmvax.commodore.com> jesup@cbmvax (Randell Jesup) writes:
>>	We already have this on the Amiga.  We have a protocol called
>>"scsidirect" which allows you to pass a control structure to the device
>>driver, which will then send your command (and optionally retrieve any
>>sense information).  The structure used looks like this:
>[copyrighted material omitted...]
>
>This seems like a lot of trouble to go to. The Atari ST has a lobotomized
>version of SCSI on the main board. Atari and a few other companies make
>host adapters that translate between Atari DMA and a full SCSI interface.

	It's not much trouble, it's only used for "unusual" uses of the SCSI
bus, where the programs needs real control.  Normal usage (read,write,format,
etc) go through the normal device-independant exec device interface.  Note
that SCSIDirect made is quite simple to write very user-friendly automated
setup programs that can work on any controller.  There are a couple different
ones, and they work interchangably.

	To deal with %&*# companies that don't correctly support SCSI we 
use a number of fall-backs in determining a reasonable geometry (while SCSI
is entirely block-based, our filesystems still want to partition on "cylinder"
boundaries).  The final fall-back if nothing else works is a read capacity
to find the size of the drive, and then another to find the first "slowdown"
on the drive (and assume that's the cylinder size).  Overall, this works
pretty well, and wastes few blocks, even on zone-recorded disks.

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.cbm.commodore.com  BIX: rjesup  
Common phrase heard at Amiga Devcon '89: "It's in there!"