freebsd-skq/sys/cam
Matt Jacob 499d2a2a5c Extend unit numbers to a full 10 bits (split into sections
of the minor). Establish and use a control mode open. Control
mode opens may open the device without locking, but are prohibited
from all but some ioctls. MTIOCGET always works. MTIOCERRSTAT
works, but the clearing of latched error status is contingent
upon whether another application has the device open, in which
case an interruptible perip acquire is done. MTSETBSIZ, MTSETDNSTY
and MTCOMP also require a periph aquire.

Relative fileno and blkno are tracked. Note that just about any
error will make these undefined, and if you space to EOD or use
hardware block positioning, these are also lost until the next
UNLOAD or REWIND.

Driver state is also tracked and recorded in the unit softc
to be passed back in mt_dsreg for a MTIOCGET call.
Thanks to Dan Strick for suggesting this.

Reintroduce 2 filemarks at EOD for all but QIC devices. I
really think it's wrong, but there is a lot of 3rd party
software that depends upon this (not the least of which is
tcopy). Introduce a SA_QUIRK_1FM to ensure that some devices
can be marked as only being able to do 1 FM at EOD.

At samount time force a load to BOT if we aren't mounted. If the
LOAD command fails, use the REWIND command (e.g., for the IBM 3590
which for some gawdawful reason doesn't support the LOAD (to BOT)
command).

Also at samount time, if you don't know fixed or variable, try to
*set* to one of the known fixed (or variable, for special case)
density codes. We only have to do this once per boot, so it's not
that painful. This is another way to try and figure out the wierd
QIC devices without having to quirk everything in the universe.

A substantial amount of cleanup as to what operations can and what
operations cannot be retried. Don't retry space operations if they
fail- it'll just lead to lossage.

Not yet done is invalidating mounts correctly after errors. ENOTIME.
1999-02-05 07:32:52 +00:00
..
scsi Extend unit numbers to a full 10 bits (split into sections 1999-02-05 07:32:52 +00:00
cam_ccb.h Expand the hba_misc fied in the Path Inquiry ccb to allow a controller driver 1998-12-10 04:05:49 +00:00
cam_conf.h
cam_debug.h Add a CAM_DEBUG_XPT define (to debug XPT layer only). Add a CAM_DEBUGGED 1998-12-05 23:55:48 +00:00
cam_extend.c
cam_extend.h
cam_periph.c This is a rather large commit that encompasses the new swapper, 1999-01-21 08:29:12 +00:00
cam_periph.h Fix a problem with the way we handled device invalidation when attaching 1998-10-22 22:16:56 +00:00
cam_queue.c
cam_queue.h Add definitions for TAILQ, LIST, and SLIST ccb_hdr queues. 1998-12-15 08:12:03 +00:00
cam_sim.c
cam_sim.h
cam_xpt_periph.h
cam_xpt_sim.h Fix warnings preparing for -Wall -Wcast-qual 1999-01-27 20:09:21 +00:00
cam_xpt.c Fix warnings preparing for -Wall -Wcast-qual 1999-01-27 20:09:21 +00:00
cam_xpt.h
cam.c cam.c: 1998-09-22 04:53:23 +00:00
cam.h