Subject: Re: proposal: sys/dkio.h
To: Michael Graff <explorer@flame.org>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: tech-kern
Date: 01/29/1996 14:12:34
On Sun, 28 Jan 1996 23:05:03 -0600 
 "Michael Graff" <explorer@flame.org> wrote:

 > Don't forget eject in there...

That was listed above.  I've actually done something slightly different 
that what I've posted previously.  See below.

 > I hacked the sd.c driver to do the eject call, (it wasn't tough, of
 > course) but either I messed up or it doesn't want to eject my zip
 > drive.

The trick is that you need to unlock the disk pack.  On a ZIP, you have 
to do something like this before the eject is performed:

	scsi_prevent(sd->sc_link, PR_ALLOW, 0);

The CD-ROM driver implementes CDIOC{PREVENT,ALLOW}.  I originally modeled 
the DIOC{PREVENT,ALLOW} ioctls after these.  However, I took Chris's 
suggestion and implemented a single ioctl for disk, cdroms, floppies, 
etc. called DIOCLCKPACK which takes an int argument: 0 for unlock, 
non-zero for lock.

So, all removable-media drivers which support eject commands now 
implement DIOCLCKPACK and DIOCEJECT.  I've modified eject(1) to 
understand this new interface.  There is now a single eject_disk() 
function instead of eject_floppy(), eject_cdrom(), and eject_disk().

If someone would like to verify for me that this works properly with 
their ZIPs, I'd appreciate it.

--------------------------------------------------------------------------
Jason R. Thorpe                                       thorpej@nas.nasa.gov
NASA Ames Research Center                               Home: 408.866.1912
NAS: M/S 258-6                                          Work: 415.604.0935
Moffett Field, CA 94035                                Pager: 415.428.6939