Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
SA(4)		       FreeBSD Kernel Interfaces Manual			 SA(4)

     sa	-- SCSI	Sequential Access device driver

     device sa

     The sa driver provides support for	all SCSI devices of the	sequential
     access class that are attached to the system through a supported SCSI
     Host Adapter.  The	sequential access class	includes tape and other	linear
     access devices.

     A SCSI Host adapter must also be separately configured into the system
     before a SCSI sequential access device can	be configured.

     The sa driver is based around the concept of a ``mount session'', which
     is	defined	as the period between the time that a tape is mounted, and the
     time when it is unmounted.	 Any parameters	set during a mount session
     remain in effect for the remainder	of the session or until	replaced.  The
     tape can be unmounted, bringing the session to a close in several ways.
     These include:

     1.	  Closing a `rewind device', referred to as sub-mode 00	below.	An
	  example is /dev/sa0.

     2.	  Using	the MTOFFL ioctl(2) command, reachable through the `offline'
	  command of mt(1).

     It	should be noted	that tape devices are exclusive	open devices, except
     in	the case where a control mode device is	opened.	 In the	latter case,
     exclusive access is only sought when needed (e.g.,	to set parameters).

     Bits 0 and	1 of the minor number are interpreted as `sub-modes'.  The
     sub-modes differ in the action taken when the device is closed:

     00	   A close will	rewind the device; if the tape has been	written, then
	   a file mark will be written before the rewind is requested.	The
	   device is unmounted.

     01	   A close will	leave the tape mounted.	 If the	tape was written to, a
	   file	mark will be written.  No other	head positioning takes place.
	   Any further reads or	writes will occur directly after the last
	   read, or the	written	file mark.

     10	   A close will	rewind the device.  If the tape	has been written, then
	   a file mark will be written before the rewind is requested.	On
	   completion of the rewind an unload command will be issued.  The
	   device is unmounted.

     SCSI tapes	may run	in either `variable' or	`fixed'	block-size modes.
     Most QIC-type devices run in fixed	block-size mode, where most nine-track
     tapes and many new	cartridge formats allow	variable block-size.  The dif-
     ference between the two is	as follows:

     Variable block-size: Each write made to the device	results	in a single
     logical record written to the tape.  One can never	read or	write part of
     a record from tape	(though	you may	request	a larger block and read	a
     smaller record); nor can one read multiple	blocks.	 Data from a single
     write is therefore	read by	a single read.	The block size used may	be any
     value supported by	the device, the	SCSI adapter and the system (usually
     between 1 byte and	64 Kbytes, sometimes more).

     When reading a variable record/block from the tape, the head is logically
     considered	to be immediately after	the last item read, and	before the
     next item after that.  If the next	item is	a file mark, but it was	never
     read, then	the next process to read will immediately hit the file mark
     and receive an end-of-file	notification.

     Fixed block-size: Data written by the user	is passed to the tape as a
     succession	of fixed size blocks.  It may be contiguous in memory, but it
     is	considered to be a series of independent blocks.  One may never	write
     an	amount of data that is not an exact multiple of	the blocksize.	One
     may read and write	the same data as a different set of records, In	other
     words, blocks that	were written together may be read separately, and

     If	one requests more blocks than remain in	the file, the drive will
     encounter the file	mark.  Because there is	some data to return (unless
     there were	no records before the file mark), the read will	succeed,
     returning that data, The next read	will return immediately	with a value
     of	0.  (As	above, if the file mark	is never read, it remains for the next
     process to	read if	in no-rewind mode.)

     The handling of file marks	on write is automatic.	If the user has	writ-
     ten to the	tape, and has not done a read since the	last write, then a
     file mark will be written to the tape when	the device is closed.  If a
     rewind is requested after a write,	then the driver	assumes	that the last
     file on the tape has been written,	and ensures that there are two file
     marks written to the tape.	 The exception to this is that there seems to
     be	a standard (which we follow, but don't understand why) that certain
     types of tape do not actually write two file marks	to tape, but when
     read, report a `phantom' file mark	when the last file is read.  These
     devices include the QIC family of devices.	 (It might be that this	set of
     devices is	the same set as	that of	fixed block devices.  This has not
     been determined yet, and they are treated as separate behaviors by	the
     driver at this time.)

     The sa driver supports all	of the ioctls of mtio(4).

     /dev/[n][e]sa[0-9]	 general form:
     /dev/sa0		 Rewind	on close
     /dev/nsa0		 No rewind on close
     /dev/esa0		 Eject on close	(if capable)
     /dev/sa0.ctl	 Control mode device (to examine state while another
			 program is accessing the device, e.g.).

     This driver lacks many of the hacks required to deal with older devices.
     Many older	SCSI-1 devices may not work properly with this driver yet.

     Additionally, certain tapes (QIC tapes mostly) that were written under
     FreeBSD 2.X aren't	automatically read correctly with this driver: you may
     need to explicitly	set variable block mode	or set to the blocksize	that
     works best	for your device	in order to read tapes written under FreeBSD

     Fine grained density and compression mode support that is bound to	spe-
     cific device names	needs to be added.

     Support for fast indexing by use of partitions is missing.


     mt(1), scsi(4)

     The sa driver was written for the CAM SCSI	subsystem by Justin T. Gibbs
     and Kenneth Merry.	 Many ideas were gleaned from the st device driver
     written and ported	from Mach 2.5 by Julian	Elischer.

     The current owner of record is Matthew Jacob who has suffered too many
     years of breaking tape drivers.

FreeBSD	9.2			 June 6, 1999			   FreeBSD 9.2


Want to link to this manual page? Use this URL:

home | help