summaryrefslogtreecommitdiff
path: root/static/netbsd/man4/st.4
diff options
context:
space:
mode:
Diffstat (limited to 'static/netbsd/man4/st.4')
-rw-r--r--static/netbsd/man4/st.4457
1 files changed, 457 insertions, 0 deletions
diff --git a/static/netbsd/man4/st.4 b/static/netbsd/man4/st.4
new file mode 100644
index 00000000..f1841abb
--- /dev/null
+++ b/static/netbsd/man4/st.4
@@ -0,0 +1,457 @@
+.\" $NetBSD: st.4,v 1.25 2010/03/22 18:58:31 joerg Exp $
+.\"
+.\" 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.
+.\"
+.Dd August 23, 1996
+.Dt ST 4
+.Os
+.Sh NAME
+.Nm st
+.Nd SCSI/ATAPI tape driver
+.Sh SYNOPSIS
+.Cd "st* at scsibus? target ? lun ?"
+.Cd "st1 at scsibus0 target 4 lun 0"
+.Cd "st* at atapibus? drive ? flags 0x0000"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for
+.Tn SCSI
+and Advanced Technology Attachment Packet Interface
+.Pq Tn ATAPI
+tape drives.
+It allows a tape drive to be run in several different
+modes depending on minor numbers and supports several different
+.Sq sub-modes .
+The device can have both a
+.Em raw
+interface and a
+.Em block
+interface; however, only the raw interface is usually used (or recommended).
+.Pp
+.Tn SCSI
+and
+.Tn ATAPI
+devices have a relatively high level interface and talk to the system via a
+.Tn SCSI
+or
+.Tn ATAPI
+adapter and a
+.Tn SCSI
+or
+.Tn ATAPI
+adapter driver
+(e.g.
+.Xr ahc 4 ,
+.Xr pciide 4 ) .
+A
+.Tn SCSI
+or
+.Tn ATAPI
+adapter must also be separately configured into the system before a
+.Tn SCSI
+or
+.Tn ATAPI
+tape can be configured.
+.Pp
+As the
+.Tn SCSI
+or
+.Tn ATAPI
+adapter is probed during boot, the
+.Tn SCSI
+or
+.Tn ATAPI
+bus is scanned for devices.
+Any devices found which answer as
+.Sq Em Sequential
+type devices will be attached to the
+.Nm
+driver.
+.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 an
+.Sq unmount device ,
+referred to as sub-mode 00 below.
+An example is
+.Pa /dev/rst0 .
+.It
+Using the
+.Dv MTOFFL
+.Xr ioctl 2
+command, reachable through the
+.Sq Cm offline
+command of
+.Xr mt 1 .
+.It
+Opening a different mode will implicitly unmount the tape, thereby
+closing off the mode that was previously mounted.
+All parameters will be loaded freshly from the new mode
+(See below for more on modes).
+.El
+.Sh MODES AND SUB-MODES
+There are several different
+.Sq operation
+modes.
+These are controlled by bits 2 and 3 of the minor number
+and are designed to allow users to easily read and write different
+formats of tape on devices that allow multiple formats.
+The parameters for each mode can be set individually by hand with the
+.Xr mt 1
+command.
+When a device corresponding to a particular mode is first
+mounted, The operating parameters for that mount session are copied
+from that mode.
+Further changes to the parameters during the session will change
+those in effect for the session but not those set in the operation mode.
+To change the parameters for an operation mode, one must compile
+them into the
+.Dq Em quirk
+table in the driver's source code.
+.Pp
+In addition to the operating modes mentioned above, 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.
+.It 11
+This is Control mode, which allows the tape driver to be opened without a tape
+inserted to allow various ioctls (e.g. MTIOCGET or MTIOCTOP to set density
+or blocksize) and raw SCSI command on
+through. I/O can be done in this mode, if desired, with the same
+rewind/eject behaviour as mode 01. This isn't really an 'action taken
+on close' type of distinction, but this seems to be the place to put
+this mode.
+.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.
+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 an EOF (as above, if
+the file mark is never read, it remains for the next process to
+read if in no-rewind mode).
+.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 don't understand why) that certain types of tape do
+not actually write two file marks to tape, but when read, report a
+.Sq 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 EOM HANDLING
+Attempts to write past EOM and how EOM is reported are handled slightly
+differently based upon whether EARLY WARNING recognition is enabled in
+the driver.
+.Pp
+If EARLY WARNING recognitions is
+.Em not
+enabled, then detection
+of EOM (as reported in SCSI Sense Data with an EOM indicator)
+causes the write operation to be flagged with I/O error (EIO).
+This has the effect for the user application of not knowing actually
+how many bytes were read (since the return of the
+.Xr read 2
+system call is set to \(mi1).
+.Pp
+If EARLY WARNING recognition
+.Em is
+enabled, then detection of EOM
+(as reported in SCSI Sense Data with an EOM indicator)
+has no immediate effect except that
+the driver notes that EOM has been detected. If the write completing
+didn't transfer all data that was requested, then the residual count
+(counting bytes
+.Em not
+written)
+is returned to the user application. In any event, the next attempt
+to write (if that is the next action the user application takes)
+is immediately completed with no data transferred, and a residual
+returned to the user application indicating that no data was transferred.
+This is the traditional UNIX EOF indication. The state that EOM had
+been seen is then cleared.
+.Pp
+In either mode of operation, the driver does not prohibit the
+user application from writing more data, if it chooses to do so. This
+will continue up until the physical end of media, which is usually
+signalled internally to the driver as a CHECK CONDITION with
+the Sense Key set to VOLUME OVERFLOW. When this or any otherwise
+unhandled error occurs, an error return of EIO will be transmitted
+to the user application. This does indeed mean that if EARLY WARNING
+is enables and the device continues to set EOM indicators prior to
+hitting physical end of media, that an indeterminate number of 'short write
+returns' as described in the previous paragraph will occur. However, the
+expected user application behaviour (in common with other systems) is
+to close the tape and rewind and request another tape upon the receipt
+of the first EOM indicator, possibly after writing one trailer record.
+.Sh KERNEL CONFIGURATION
+Because different tape drives behave differently, there is a
+mechanism within the source to
+.Nm
+to quickly and conveniently recognize and deal with brands and
+models of drive that have special requirements.
+.Pp
+There is a table (called the
+.Dq Em quirk table )
+in which the identification strings of known errant drives can be stored.
+Alongside each is a set of flags that allows the setting
+of densities and blocksizes for each of the modes, along with a
+set of `QUIRK' flags that can be used to enable or disable sections
+of code within the driver if a particular drive is recognized.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+calls apply to
+.Tn SCSI
+tapes.
+Some also apply to other tapes.
+They are defined in the header file
+.In sys/mtio.h .
+.\"
+.\" Almost all of this discussion belongs in a separate mt(4)
+.\" manual page, since it is common to all magnetic tapes.
+.\"
+.Pp
+.Bl -tag -width MTIOCEEOT
+.It Dv MTIOCGET
+.Pq Li "struct mtget"
+Retrieve the status and parameters of the tape. Error status
+and residual is unlatched and cleared by the driver when it receives
+this ioctl.
+.It Dv MTIOCTOP
+.Pq Li "struct mtop"
+Perform a multiplexed operation.
+The argument structure is as follows:
+.Bd -literal -offset indent
+struct mtop {
+ short mt_op;
+ daddr_t mt_count;
+};
+.Ed
+.Pp
+The following operation values are defined for
+.Va mt_op :
+.Bl -tag -width MTSELDNSTY
+.It Dv MTWEOF
+Write
+.Va mt_count
+end of file marks at the present head position.
+.It Dv MTFSF
+Skip over
+.Va mt_count
+file marks.
+Leave the head on the EOM side of the last skipped file mark.
+.It Dv MTBSF
+Skip
+.Em backwards
+over
+.Va mt_count
+file marks.
+Leave the head on the BOM (beginning of media)
+side of the last skipped file mark.
+.It Dv MTFSR
+Skip forwards over
+.Va mt_count
+records.
+.It Dv MTBSR
+Skip backwards over
+.Va mt_count
+records.
+.It Dv MTREW
+Rewind the device to the beginning of the media.
+.It Dv MTOFFL
+Rewind the media (and, if possible, eject).
+Even if the device cannot eject the media it will often no longer
+respond to normal requests.
+.It Dv MTNOP
+No-op; set status only.
+.It Dv MTERASE
+Erase the media from current position. If the field
+.Va mt_count
+is nonzero, a full erase is done (from current position to end of
+media). If
+.Va mt_count
+is zero, only an erase gap is written. It is hard to say which
+drives support only one but not the other option
+.It Dv MTCACHE
+Enable controller buffering.
+.It Dv MTNOCACHE
+Disable controller buffering.
+.It Dv MTSETBSIZ
+Set the blocksize to use for the device/mode.
+If the device is capable of variable blocksize operation, and the
+blocksize is set to 0, then the drive will be driven in variable mode.
+This parameter is in effect for the present mount session only, unless
+the device was opened in Control Mode (in which case this set value persists
+until a reboot).
+.It Dv MTSETDNSTY
+Set the density value (see
+.Xr mt 1 )
+to use when running in the mode opened (minor bits 2 and 3).
+This parameter is in effect for the present
+mount session only, unless the device was opened in Control Mode (in which
+case this set value persists until a reboot).
+Any byte sized value may be specified. Note that
+only a very small number of them will actually usefully work. The
+rest will cause the tape drive to spit up.
+.It Dv MTCMPRESS
+Enable or disable tape drive data compression.
+Typically tape drives will quite contentedly ignore settings on
+reads, and will probably keep you from changing density for writing
+anywhere but BOT.
+.It Dv MTEWARN
+Enable or disable EARLY WARNING at EOM behaviour (using the count
+as a boolean value).
+.El
+.It Dv MTIOCRDSPOS
+.Pq Li "uint32_t"
+Read device logical block position.
+Not all drives support this option.
+.It Dv MTIOCRDHPOS
+.Pq Li "uint32_t"
+Read device hardware block position.
+Not all drives support this option.
+.It Dv MTIOCSLOCATE
+.Pq Li "uint32_t"
+Position the tape to the specified device logical block position.
+.It Dv MTIOCHLOCATE
+.Pq Li "uint32_t"
+Position the tape to the specified hardware block position.
+Not all drives support this option.
+.El
+.Sh FILES
+.Bl -tag -width /dev/[n][e]rst[0-9] -compact
+.It Pa /dev/[n][e]rst[0-9]
+general form:
+.It Pa /dev/rst0
+Mode 0, Rewind on close
+.It Pa /dev/nrst0
+Mode 1, No rewind on close
+.It Pa /dev/erst0
+Mode 2, Eject on close (if capable)
+.It Pa /dev/enrst0
+Mode 3, Control Mode (elsewise like mode 0)
+.El
+.Sh SEE ALSO
+.Xr mt 1 ,
+.Xr intro 4 ,
+.Xr mtio 4 ,
+.Xr scsi 4
+.Sh HISTORY
+This
+.Nm
+driver was originally written for
+.Tn Mach
+2.5 by Julian Elischer, and was ported to
+.Nx
+by Charles Hannum.
+This man page was edited for
+.Nx
+by Jon Buller.
+.Sh BUGS
+The selection of compression could possibly also be usefully done
+as with a minor device bit.