*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> st (4)              



NAME    [Toc]    [Back]

     st - SCSI tape driver

SYNOPSIS    [Toc]    [Back]

     st* at scsibus? target ? lun ?
     #st0 at scsibus0 target 4 lun 0  (fixed-configuration  example)

DESCRIPTION    [Toc]    [Back]

     The st driver provides support for SCSI tape drives.  It allows a tape
     drive to be run in several different modes depending on  minor numbers and
     supports  several  different  ``sub-modes''.  The device can
have both a raw
     interface and a block interface; however, only the  raw  interface is usually
 used (or recommended).

     SCSI devices have a relatively high level interface and talk
to the system
 via a SCSI adapter and  a  SCSI  adapter  driver  (e.g.,
ahc(4)).  A SCSI
     adapter  must  also be separately configured into the system
before a SCSI
     tape can be configured.

     As the SCSI adapter is probed during boot, the SCSI  bus  is
scanned for
     devices.   Any  devices  found  which answer as `Sequential'
type devices
     will be attached to the st driver.

MOUNT SESSIONS    [Toc]    [Back]

     The st 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 an ``unmount device'', referred to as sub-mode
00 below.  An
          example is /dev/rst0.

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

     3.    Opening  a  different mode will implicitly unmount the
tape, thereby
          closing off the mode that was previously mounted.   All
          will  be  loaded freshly from the new mode.  (See below
for more on

MODES AND SUB-MODES    [Toc]    [Back]

     There are several different `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 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 ``quirk'' table in the driver's
source code.

     In addition to the operating modes mentioned above,  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.

     11    Reserved.  Currently unused.

BLOCKING MODES    [Toc]    [Back]

     SCSI tapes may run in either `variable'  or  `fixed'  blocksize modes.
     Most  QIC-type devices run in fixed block-size mode, whereas
most ninetrack
 tapes and many new cartridge  formats  allow  variable
     The difference 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
     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.)

FILE MARK HANDLING    [Toc]    [Back]

     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 ``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.  This has not  yet
been determined,
  and  they  are  treated as separate behaviors by the
driver at this


     Because different tape drives behave differently, there is a
     within  the  source to st to quickly and conveniently recognize and deal
     with brands and models of drive that have  special  requirements.

     There  is  a table (called the ``quirk table'') in which the
     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.

IOCTLS    [Toc]    [Back]

     The following ioctl(2) calls apply to SCSI tapes.  Some also
apply to
     other   tapes.    They   are  defined  in  the  header  file

     MTIOCGET   (struct mtget) Retrieve the status and parameters
of the tape.

     MTIOCTOP    (struct  mtop)  Perform a multiplexed operation.
The argument
                structure is as follows:

                      struct mtop {
                              short   mt_op;
                              daddr_t mt_count;

                The following operation values  are  defined  for

                MTWEOF       Write  mt_count end of file marks at
the present
                            head position.

                MTFSF       Skip over mt_count file marks.  Leave
the head on
                            the EOM side of the last skipped file

                MTBSF       Skip  backwards  over  mt_count  file
marks.  Leave
                            the head on the BOM (beginning of media) side of
                            the last skipped file mark.

                MTFSR       Skip forwards over mt_count  records.

                MTBSR       Skip backwards over mt_count records.

                MTREW       Rewind the device to the beginning of
the media.

                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.

                MTNOP       No-op; set status only.

                MTCACHE     Enable controller buffering.

                MTNOCACHE   Disable controller buffering.

                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

                MTSETDNSTY   Set the density value (see 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.

     MTIOCIEOT  Set end-of-tape processing  (not  presently  supported for st devices).

     MTIOCEEOT   Set  end-of-tape  processing (not presently supported for st devices).

FILES    [Toc]    [Back]

     /dev/[n][e]rst[0-9]  general form
     /dev/rst0            Mode 0, rewind on close
     /dev/nrst0           Mode 2, No rewind on close
     /dev/erst0           Mode 3, Eject on close (if capable)

SEE ALSO    [Toc]    [Back]

     mt(1), intro(4), mtio(4), scsi(4), wt(4)

HISTORY    [Toc]    [Back]

     This st driver was originally written for Mach 2.5 by Julian
     and  was  ported to NetBSD by Charles Hannum.  This man page
was edited for
     NetBSD by Jon Buller.

OpenBSD     3.6                         August      23,      1996
[ Back ]
 Similar pages
Name OS Title
scsi_tape HP-UX SCSI sequential access (tape) device driver
tps IRIX SCSI tape interface
st Linux SCSI tape device
tape Tru64 SCSI magnetic tape interface
tz Tru64 SCSI magnetic tape interface
nsp FreeBSD Workbit Ninja SCSI-3 based PC-Card SCSI host adapter driver
mtc OpenBSD UNIBUS MSCP tape controller driver
wt FreeBSD Archive/Wangtek cartridge tape driver
wt OpenBSD Archive/Wangtek cartridge tape driver
cd FreeBSD SCSI CD-ROM driver
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service