summaryrefslogtreecommitdiffstats
path: root/share/man/man4/sa.4
diff options
context:
space:
mode:
Diffstat (limited to 'share/man/man4/sa.4')
-rw-r--r--share/man/man4/sa.4311
1 files changed, 311 insertions, 0 deletions
diff --git a/share/man/man4/sa.4 b/share/man/man4/sa.4
new file mode 100644
index 0000000..aa72f68
--- /dev/null
+++ b/share/man/man4/sa.4
@@ -0,0 +1,311 @@
+.\" Copyright (c) 1996
+.\" Julian Elischer <julian@FreeBSD.org>. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\"
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 23, 2013
+.Dt SA 4
+.Os
+.Sh NAME
+.Nm sa
+.Nd SCSI Sequential Access device driver
+.Sh SYNOPSIS
+.Cd device sa
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for all
+.Tn SCSI
+devices of the sequential access class that are attached to the system
+through a supported
+.Tn SCSI
+Host Adapter.
+The sequential access class includes tape and other linear access devices.
+.Pp
+A
+.Tn SCSI
+Host
+adapter must also be separately configured into the system
+before a
+.Tn SCSI
+sequential access device can be configured.
+.Sh MOUNT SESSIONS
+The
+.Nm
+driver is based around the concept of a
+.Dq Em 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:
+.Bl -enum
+.It
+Closing a `rewind device',
+referred to as sub-mode 00 below.
+An example is
+.Pa /dev/sa0 .
+.It
+Using the MTOFFL
+.Xr ioctl 2
+command, reachable through the
+.Sq Cm offline
+command of
+.Xr mt 1 .
+.El
+.Pp
+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).
+.Sh SUB-MODES
+Bits 0 and 1 of the minor number are interpreted as
+.Sq sub-modes .
+The sub-modes differ in the action taken when the device is closed:
+.Bl -tag -width XXXX
+.It 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.
+.It 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.
+.It 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.
+.El
+.Sh BLOCKING MODES
+.Tn SCSI
+tapes may run in either
+.Sq Em variable
+or
+.Sq Em fixed
+block-size modes.
+Most
+.Tn QIC Ns -type
+devices run in fixed block-size mode, where most nine-track tapes and
+many new cartridge formats allow variable block-size.
+The difference between the two is as follows:
+.Bl -inset
+.It 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
+.Em 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
+.Tn SCSI
+adapter and the system (usually between 1 byte and 64 Kbytes,
+sometimes more).
+.Pp
+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.
+.It 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 vice-versa.
+.Pp
+If one requests more blocks than remain in the file, the drive will
+encounter the file mark.
+As 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.)
+.El
+.Sh BLOCK SIZES
+By default, the driver will NOT accept reads or writes to a tape device that
+are larger than may be written to or read from the mounted tape using a single
+write or read request.
+Because of this, the application author may have confidence that his wishes
+are respected in terms of the block size written to tape.
+For example, if the user tries to write a 256KB block to the tape, but the
+controller can handle no more than 128KB, the write will fail.
+The previous
+.Fx
+behavior, prior to
+.Fx
+10.0,
+was to break up large reads or writes into smaller blocks when going to the
+tape.
+The problem with that behavior, though, is that it hides the actual on-tape
+block size from the application writer, at least in variable block mode.
+.Pp
+If the user would like his large reads and writes broken up into separate
+pieces, he may set the following loader tunables.
+Note that these tunables WILL GO AWAY in
+.Fx 11.0 .
+They are provided for transition purposes only.
+.Bl -tag -width 12
+.It kern.cam.sa.allow_io_split
+.Pp
+This variable, when set to 1, will configure all
+.Nm
+devices to split large buffers into smaller pieces when needed.
+.It kern.cam.sa.%d.allow_io_split
+.Pp
+This variable, when set to 1, will configure the given
+.Nm
+unit to split large buffers into multiple pieces.
+This will override the global setting, if it exists.
+.El
+.Pp
+There are several
+.Xr sysctl 8
+variables available to view block handling parameters:
+.Bl -tag -width 12
+.It kern.cam.sa.%d.allow_io_split
+.Pp
+This variable allows the user to see, but not modify, the current I/O split
+setting.
+The user is not permitted to modify this setting so that there is no chance
+of behavior changing for the application while a tape is mounted.
+.It kern.cam.sa.%d.maxio
+.Pp
+This variable shows the maximum I/O size in bytes that is allowed by the
+combination of kernel tuning parameters (MAXPHYS, DFLTPHYS) and the
+capabilities of the controller that is attached to the tape drive.
+Applications may look at this value for a guide on how large an I/O may be
+permitted, but should keep in mind that the actual maximum may be
+restricted further by the tape drive via the
+.Tn SCSI
+READ BLOCK LIMITS command.
+.It kern.cam.sa.%d.cpi_maxio
+.Pp
+This variable shows the maximum I/O size supported by the controller, in
+bytes, that is reported via the CAM Path Inquiry CCB (XPT_PATH_INQ).
+If this is 0, that means that the controller has not reported a maximum I/O
+size.
+.El
+.Sh FILE MARK HANDLING
+The handling of file marks on write is automatic.
+If the user has
+written 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 do not
+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.)
+.Sh IOCTLS
+The
+.Nm
+driver supports all of the ioctls of
+.Xr mtio 4 .
+.Sh FILES
+.Bl -tag -width /dev/[n][e]sa[0-9] -compact
+.It Pa /dev/[n][e]sa[0-9]
+general form:
+.It Pa /dev/sa0
+Rewind on close
+.It Pa /dev/nsa0
+No rewind on close
+.It Pa /dev/esa0
+Eject on close (if capable)
+.It Pa /dev/sa0.ctl
+Control mode device (to examine state while another program is
+accessing the device, e.g.).
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr mt 1
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written for the
+.Tn CAM
+.Tn SCSI
+subsystem by
+.An Justin T. Gibbs
+and
+.An Kenneth Merry .
+Many ideas were gleaned from the
+.Nm st
+device driver written and ported from
+.Tn Mach
+2.5
+by
+.An Julian Elischer .
+.Pp
+The current owner of record is
+.An Matthew Jacob
+who has suffered too many
+years of breaking tape drivers.
+.Sh BUGS
+This driver lacks many of the hacks required to deal with older devices.
+Many older
+.Tn SCSI-1
+devices may not work properly with this driver yet.
+.Pp
+Additionally, certain
+tapes (QIC tapes mostly) that were written under
+.Fx
+2.X
+are not 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
+.Fx
+2.X.
+.Pp
+Fine grained density and compression mode support that is bound to specific
+device names needs to be added.
+.Pp
+Support for fast indexing by use of partitions is missing.
OpenPOWER on IntegriCloud