ST(4D)                             Devices                            ST(4D)
NAME
       st - driver for SCSI tape devices
SYNOPSIS
       st@target,lun:l,m,h,c,ubnDESCRIPTION
       The 
st device driver provides a standard interface to various 
SCSI       tape devices. See 
mtio(4I) for details.
       To determine if the 
st device driver supports your tape device, SPARC
       users should enter the following on a command line:
         % strings /kernel/drv/sparcv9/st | grep -i <tape device name>
       x86 users can do the following to determine if the 
st device driver
       supports a particular tape device:
         % strings /kernel/drv/st | grep -i <tape device name>
       The driver can be opened with either rewind on close or no rewind on
       close options. It can also be opened with the 
O_NDELAY (see 
open(2))
       option when there is no tape inserted in the drive. A maximum of four
       tape formats per device are supported (see 
FILES below). The tape
       format is specified using the device name. (Tape format is also
       referred to as tape density).
       Following are a list of SCSI commands that can be executed while
       another host reserves the tape drive. The commands are:
         SCMD_TEST_UNIT_READY
         SCMD_REQUEST_SENSE
         SCMD_READ_BLKLIM
         SCMD_INQUIRY
         SCMD_RESERVE
         SCMD_RELEASE
         SCMD_DOORLOCK
         SCMD_REPORT_DENSITIES
         SCMD_LOG_SENSE_G1
         SCMD_PERSISTENT_RESERVE_IN
         SCMD_PERSISTENT_RESERVE_OUT
         SCMD_REPORT_LUNS
       In multi-initiator environments, the driver will not reserve  the
       tape drive if above commands are issued. For other SCSI commands, the
       driver reserves the tape drive and releases the drive at close if  it
       has been reserved. Refer to the MTIOCRESERVE and MTIOCRELEASE ioctls
       in 
mtio(4I) for information about how to allow a tape drive to remain
       reserved upon close. See the flag options below for information about
       disabling this feature.
       If a SCSI-3 persistent reservation is done through the driver, the
       driver disables all existing SCSI-2 reservations.
       If the tape drive is opened in O_NDELAY mode, no reservation occurs
       during the open, as per the POSIX standard (see 
standards(7)).
       However, if a command not found in the above list is used, a
       reservation will occur to provide reserve/release functionality
       before the command is issued.
   Persistent Errors and Asynchronous Tape Operation
       The 
st driver now supports persistent errors (see 
mtio(4I) and
       asynchronous tape operations (see 
mtio(4I), 
aioread(3C), and       
aiowrite(3C)).
   Read Operation
       If the driver is opened for reading in a different format than the
       tape is written in, the driver overrides the user-selected format.
       For example, if a 1/4" cartridge tape is written in QIC-24 format and
       opened for reading in QIC-150, the driver detects a read failure on
       the first read and automatically switches to QIC-24 to read the data.
       Note that if the low density format is used, no indication is given
       that the driver has overridden the format you selected. Other formats
       issue a warning message to inform you of an overridden format
       selection. Some devices automatically perform this function and do
       not require driver support (1/2" reel tape drive, for example).
   Write Operation
       Writing from the beginning of tape is performed in the user-specified
       format.  The original tape format is used for appending onto
       previously written tapes.
   Tape Configuration
       The 
st driver has a built-in configuration table for most Sun-
       supported tape drives. For those tape drives that are not in the
       table, the 
st driver tries to read the configuration from the tape
       drive through optional SCSI-3 commands. To support the addition of
       third party tape devices which are not in the  built-in configuration
       table or not able to report their configuration, device information
       can be supplied in 
st.conf as global properties that apply to each
       node, or as properties that are applicable to one node only. By
       supplying the information in 
st.conf, the built-in configuration is
       overridden and the 
st driver will not query the configuration from
       tape drives. The 
st driver looks for the property called 
tape-config-       list. The value of this property is a list of triplets, where each
       triplet consists of three strings.
       The formal syntax is:
         tape-config-list = <triplet> [, <triplet> *];
       where
         <triplet> := <vid+pid>, <pretty print>, <data-property-name>
       and
         <data-property-name> = <version>, <type>, <bsize>,
                 <options>, <number of densities>,
                 <density> [, <density>*], <default-density>;
       or
         <data-property-name> = <version 2>, <type>, <bsize>,
                   <options>, <number of densities>,
                   <density> [, <density>*], <default-density>,
                   <non-motion time-out>, <I/O time-out>,
                   <rewind time-out>, <space time-out>,
                   <load time-out>, <unload time-out>,
                   <erase time-out>;
       A semicolon (
;) is used to terminate a prototype devinfo node
       specification. Individual elements listed within the specification
       should not be separated by a semicolon. (Refer to 
driver.conf(5) for
       more information.)       
<vid+pid> is the string that is returned by the tape device on a 
SCSI       inquiry command. This string may contain any character in the range       
0x20-0x7e. Characters such as " " " (double quote) or " ' " (single
       quote), which are not permitted in property value strings, are
       represented by their octal equivalent (for example, 
\042 and 
\047).
       Trailing spaces may be truncated.       
<pretty print> is used to report the device on the console. This
       string may have zero length, in which case the 
<vid+pid> will be used
       to report the device.       
<data-property-name> is the name of the property which contains all
       the tape configuration values (such as 
<type>, 
<bsize>, etc.)
       corresponding for the tape drive for the specified 
<vid+pid>.       
<version> is a version number and should be 1 or 2. In the future,
       higher version numbers may be used to allow for changes in the syntax
       of the 
<data-property-name> value list.       
<type> is a type field. Valid types are defined in       
/usr/include/sys/mtio.h. For third party tape configuration, the
       following generic types are recommended:       
MT_ISQIC       0x32       
MT_ISREEL      0x33       
MT_ISDAT       0x34       
MT_IS8MM       0x35       
MT_ISOTHER     0x36       
MT_ISTAND25G   0x37       
MT_ISDLT       0x38       
MT_ISSTK9840   0x39       
MT_ISBMDLT1    0x3A       
MT_LTO         0x3B       
<bsize> is the preferred block size of the tape device. The value
       should be 
0 for variable block size devices.       
<options> is a bit pattern representing the devices, as defined in       
/usr/include/sys/scsi/targets/stdef.h. Valid flags for tape
       configuration are shown in the following table. Note that this table
       does not list flags that are non-configurable in 
st.conf (including       
ST_KNOWS_MEDIA which uses the media type reported from the mode
       select data to select the correct density code).       
ST_VARIABLE                            0x0001       
ST_QIC                                 0x0002       
ST_REEL                                0x0004       
ST_BSF                                 0x0008       
ST_BSR                                 0x0010       
ST_LONG_ERASE                          0x0020       
ST_AUTODEN_OVERRIDE                    0x0040       
ST_NOBUF                               0x0080       
ST_KNOWS_EOD                           0x0200       
ST_UNLOADABLE                          0x0400       
ST_SOFT_ERROR_REPORTING                0x0800       
ST_LONG_TIMEOUTS                       0x1000       
ST_NO_RECSIZE_LIMIT                    0x8000       
ST_MODE_SEL_COMP                       0x10000       
ST_NO_RESERVE_RELEASE                  0x20000       
ST_READ_IGNORE_ILI                     0x40000       
ST_READ_IGNORE_EOFS                    0x80000       
ST_SHORT_FILEMARKS                     0x100000       
ST_EJECT_TAPE_ON_CHANGER_FAILURE       0x200000       
ST_RETRY_ON_RECOVERED_DEFERRED_ERROR   0x400000       
ST_WORMABLE                            0x1000000       
ST_VARIABLE           The flag indicates the tape device supports variable length
           record sizes.       
ST_QIC           The flag indicates a Quarter Inch Cartridge (QIC) tape device.       
ST_REEL           The flag indicates a 1/2-inch reel tape device.       
ST_BSF           If flag is set, the device supports backspace over EOF marks (bsf
           - see 
mt(1)).       
ST_BSR           If flag is set, the tape device supports the backspace record
           operation (bsr - see 
mt(1)). If the device does not support bsr,
           the 
st driver emulates the action by rewinding the tape and using
           the forward space record (fsf) operation to forward the tape to
           the correct file. The driver then uses forward space record (fsr
           - see 
mt(1)) to forward the tape to the correct record.       
ST_LONG_ERASE           The flag indicates the tape device needs a longer time than
           normal to erase.       
ST_AUTODEN_OVERRIDE           The auto-density override flag. The device is capable of
           determining the tape density automatically without issuing a
           "mode-select"/"mode-sense command."       
ST_NOBUF           The flag disables the device's ability to perform buffered
           writes. A buffered write occurs when the device acknowledges the
           completion of a write request after the data has been written to
           the device's buffer, but before all of the data has been written
           to the tape.       
ST_KNOWS_EOD           If flag is set, the device can determine when EOD (End of Data)
           has been reached. When this flag is set, the 
st driver uses fast
           file skipping.  Otherwise, file skipping happens one file at a
           time.       
ST_UNLOADABLE           The flag indicates the device will not complain if the 
st driver
           is unloaded and loaded again (see 
modload(8) and 
modunload(8)).
           That is, the driver will return the correct inquiry string.       
ST_SOFT_ERROR_REPORTING           The flag indicates the tape device will perform a "request sense"
           or "log sense" command when the device is closed. Currently, only
           Exabyte and 
DAT drives support this feature.       
ST_LONG_TIMEOUTS           The flag indicates the tape device requires timeouts that are
           five times longer than usual for normal operation.       
ST_NO_RECSIZE_LIMIT           The flag applies to variable-length tape devices. If this flag is
           set, the record size is not limited to a 64 Kbyte record size.
           The record size is only limited by the smaller of either the
           record size supported by the device or the maximum DMA transfer
           size of the system. (Refer to 
Large Record Sizes and 
WARNINGS.)
           The maximum block size that will not be broken into smaller
           blocks can be determined from the mt_bf returned from the
           MTIOCGET ioctl().  This number is the lesser of the upper block
           limit returned by the drive from READ BLOCK LIMITS command and
           the dma-max property set by the Host Bus Adapter (HBA) to which
           the drive is attached.       
ST_MODE_SEL_COMP           If the 
ST_MODE_SEL_COMP flag is set, the driver determines which
           of the two mode pages the device supports for selecting or
           deselecting compression. It first tries the Data Compression mode
           page (
0x0F); if this fails, it tries the Device Configuration
           mode page (
0x10). Some devices, however, may need a specific
           density code for selecting or deselecting compression.  Please
           refer to the device specific 
SCSI manual. When the flag is set,
           compression is enabled only if the "c" or "u" device is used.
           Note that when the lower 2 densities of a drive are identically
           configured and the upper 2 densities are identically configured,
           but the lower and upper differ from each other and
           ST_MODE_SEL_COMP is set, the "m" node sets compression 
on for the
           lower density code (for example, 0x42) and the "c" and "u" nodes
           set compression 
on for the higher density (for example, 0x43).
           For any other device densities, compression is disabled.       
ST_NO_RESERVE_RELEASE           The 
ST_NO_RESERVE_RELEASE flag disables the use of reserve on
           open and release on close. If an attempt to use a ioctl of           
MTRESERVE or 
MTRELEASE on a drive with this flag set, it will
           return an error of 
ENOTTY (inappropriate ioctl for device).       
ST_READ_IGNORE_ILI           The 
ST_READ_IGNORE_ILI flag is applicable only to variable block
           devices which support the SILI bit option. The 
ST_READ_IGNORE_ILI           flag indicates that SILI (suppress incorrect length indicator)
           bit will be set during reads.  When this flag is set, short reads
           (requested read size is less than the record size on the tape)
           will be successful and the number of bytes transferred will be
           equal to the record size on the tape. The tape will be positioned
           at the start of the next record skipping over the extra data (the
           remaining data has been has been lost). Long reads (requested
           read size is more than the record size on the tape) will see a
           large performance gain when this flag is set, due to overhead
           reduction. When this flag is not set, short reads will return an
           error of 
ENOMEM.       
ST_READ_IGNORE_EOFS           The 
ST_READ_IGNORE_EOFS flag is applicable only to 1/2" Reel Tape
           drives and when performing consecutive reads only. It should not
           be used for any other tape command. Usually End-of-recorded-media
           (EOM) is indicated by two EOF marks on 1/2" tape and application
           cannot read past EOM. When this flag is set, two EOF marks no
           longer indicate EOM allowing applications to read past two EOF
           marks. In this case it is the responsibility of the application
           to detect end-of-recorded-media (EOM). When this flag is set,
           tape operations (like MTEOM) which positions the tape at end-of-
           recorded-media will fail since detection of end-of-recorded-media
           (EOM) is to be handled by the application.  This flag should be
           used when backup applications have embedded double filemarks
           between files.       
ST_SHORT_FILEMARKS           The 
ST_SHORT_FILEMARKS flag is applicable only to EXABYTE 8mm
           tape drives which supports short filemarks. When this flag is
           set, short filemarks is used for writing filemarks. Short
           filemarks could lead to tape incompatible with some otherwise
           compatible device. By default long filemarks will be used for
           writing filemarks.       
ST_EJECT_TAPE_ON_CHANGER_FAILURE           If 
ST_EJECT_TAPE_ON_CHANGER_FAILURE flag is set, the tape is
           ejected automatically if the tape cartridge is trapped in the
           medium due to positioning problems of the medium changer.
           The following ASC/ASCQ keys are defined to the reasons for
           causing tape ejection if 
ST_EJECT_TAPE_ON_CHANGER_FAILURE option
           is set to 0x200000:
           Sense  ASC/ASCQ  Description
           Key
           4      15/01     Mechanical Failure
           4      44/00     Internal Target Failure
           2      53/00     Media Load or Eject Failed
           4      53/00     Media Load or Eject Failed
           4      53/01     Unload Tape Failure       
ST_RETRY_ON_RECOVERED_DEFERRED_ERROR           If 
ST_RETRY_ON_RECOVERED_DEFERRED_ERROR flag is set, the 
st           driver will retry the last write if this cmd caused a check
           condition with error code 0x71 and sense code 0x01. Some tape
           drives, notably the IBM 3090, require this option.       
ST_WORMABLE           When 
ST_WORMABLE is set, 
st attempts to detect the presence of
           WORM media in the device.       
<number of densities> is the number of densities specified. Each tape
       drive can support up to four densities. The value entered should
       therefore be between 
1 and 
4; if less than 
4, the remaining densities
       will be assigned a value of 
0x0.       
<density> is a single-byte hexadecimal number. It can either be found
       in the device specification manual or be obtained from the device
       vendor.       
<default-density> has a value between 
0 and (<number of densities> -       
1).       
<non-motion time-out> Time in seconds that the drive should be able
       to perform any SCSI command that doesn't require tape to be moved.
       This includes mode sense, mode select, reserve, release, read block
       limits, and test unit ready.       
<I/O time-out> Time in seconds to perform data transfer I/O to or
       from tape including worst case error recovery.       
<rewind time-out> Time in seconds to rewind from anywhere on tape to
       BOT including worst case recovery forcing buffered write data to
       tape.       
<space time-out> Time in seconds to space to any file, block or end
       of data on tape. Including worst case when any form of cataloging is
       invalid.       
<load time-out> Time in seconds to load tape and be ready to transfer
       first block. This should include worst case recovery reading tape
       catalog or drive specific operations done at load.       
<unload time-out> Time in seconds to unload tape. Should include
       worst case time to write to catalog, unthread, and tape cartridge
       unloading. Also should include worst case time for any drive specific
       operations that are preformed at unload. Should not include rewind
       time as the driver rewinds tape before issuing the unload.       
<erase time-out> Time in seconds to preform a full (BOT to EOT) erase
       of longest medium with worst case error recovery.
   Device Statistics Support
       Each device maintains I/O statistics both for the device and for each
       partition allocated on that device. For each device/partition, the
       driver accumulates reads, writes, bytes read, and bytes written. The
       driver also takes hi-resolution time stamps at queue entry and exit
       points, which facilitates monitoring the residence time and
       cumulative residence-length product for each queue.
       Each device also has error statistics associated with it. These must
       include counters for hard errors, soft errors and transport errors.
       Other data may be implemented as required.
IOCTLS
       The behavior of 
SCSI tape positioning ioctls is the same across all
       devices which support them. (Refer to 
mtio(4I).) However, not all
       devices support all ioctls. The driver returns an 
ENOTTY error on
       unsupported ioctls.
       The retension ioctl only applies to 1/4" cartridge tape devices. It
       is used to restore tape tension, thus improving the tape's soft error
       rate after extensive start-stop operations or long-term storage.
       In order to increase performance of variable-length tape devices
       (particularly when they are used to read/write small record sizes),
       two operations in the 
MTIOCTOP ioctl, 
MTSRSZ and 
MTGRSZ, can be used
       to set and get fixed record lengths. The ioctl also works with fixed-
       length tape drives which allow multiple record sizes. The min/max
       limits of record size allowed on a driver are found by using a SCSI-2       
READ BLOCK LIMITS command to the device. If this command fails, the
       default min/max record sizes allowed are 1 byte and 63k bytes. An
       application that needs to use a different record size opens the
       device, sets the size with the 
MTSRSZ ioctl, and then continues with
       I/O. The scope of the change in record size remains until the device
       is closed. The next open to the device resets the record size to the
       default record size (retrieved from 
st.conf).
       Note that the error status is reset by the 
MTIOCGET get status ioctl
       call or by the next read, write, or other ioctl operation. If no
       error has occurred (sense key is 
0), the current file and record
       position is returned.
ERRORS
       EACCES                 The driver is opened for write access and the tape is
                 write-protected or the tape unit is reserved by another
                 host.       
EBUSY                 The tape drive is in use by another process. Only one
                 process can use the tape drive at a time. The driver will
                 allow a grace period for the other process to finish before
                 reporting this error.       
EINVAL                 The number of bytes read or written is not a multiple of
                 the physical record size (fixed-length tape devices only).       
EIO                 During opening, the tape device is not ready because either
                 no tape is in the drive, or the drive is not on-line. Once
                 open, this error is returned if the requested I/O transfer
                 could not be completed.       
ENOTTY                 This indicates that the tape device does not support the
                 requested ioctl function.       
ENXIO                 During opening, the tape device does not exist.       
ENOMEM                 This indicates that the record size on the tape drive is
                 more than the requested size during read operation.
EXAMPLES
       Example 1: Global tape-config list property
       The following is an example of a global 
tape-config-list property:
         tape-config-list =
         "Magic DAT", "Magic 4mm Helical Scan", "magic-data",
         "Major Appliance", "Major Appliance Tape", "major-tape";
         magic-data  = 1,0x34,1024,0x1639,4,0,0x8c,0x8c,0x8c,3;
         major-tape = 2,0x3c,0,0x18619,4,0x0,0x0,0x0,0x0,
                      3,0,0,30,120,0,0,36000;
         name="st" class="scsi"
                   target=0 lun=0;
         name="st" class="scsi"
                   target=1 lun=0;
         name="st" class="scsi"
                   target=2 lun=0;
                   .
                   .
                   .
         name="st" class="scsi"
                   target=6 lun=0;
       Example 2: Tape-config-list property applicable to target 2 only
       The following is an example of a tape-config-list property applicable
       to target 2 only:
         name="st" class="scsi"
                 target=0 lun=0;
         name="st" class="scsi"
                 target=1 lun=0;
         name="st" class="scsi"
                 target=2 lun=0
                 tape-config-list =
                 "Magic   DAT", "Magic 4mm Helical Scan", "magic-data"
                 magic-data = 1,0x34,1024,0x1639,4,0,0x8c,0x8c,0x8c,3;
         name="st" class="scsi"
                 target=3 lun=0;
                   .
                   .
                   .
         name="st" class="scsi"
                 target=6 lun=0;
   Large Record Sizes
       To support applications such as seismic programs that require large
       record sizes, the flag 
ST_NO_RECSIZE_LIMIT must be set in drive
       option in the configuration entry. A SCSI tape drive that needs to
       transfer large records should 
OR this flag with other flags in the
       'options' field in 
st.conf. (Refer to 
Tape Configuration.) By
       default, this flag is set for the built-in config entries of Archive       
DAT and Exabyte drives.
       If this flag is set, the 
st driver issues a SCSI-2 
READ BLOCK LIMITS       command to the device to determine the maximum record size allowed by
       it. If the command fails, 
st continues to use the maximum record
       sizes mentioned in the 
mtio(4I) man page.
       If the command succeeds, 
st restricts the maximum transfer size of a
       variable-length device to the minimum of that record size and the
       maximum 
DMA size that the host adapter can handle. Fixed-length
       devices are bound by the maximum 
DMA size allocated by the machine.
       Note that tapes created with a large record size may not be readable
       by earlier releases or on other platforms.
       (Refer to the 
WARNINGS section for more information.)
   EOT Handling
       The Emulex drives have only a physical end of tape (PEOT); thus it is
       not possible to write past EOT. All other drives have a logical end
       of tape (
LEOT) before 
PEOT to guarantee flushing the data onto the
       tape.  The amount of storage between 
LEOT and 
PEOT varies from less
       than 1 Mbyte to about 20 Mbyte, depending on the tape drive.
       If 
EOT is encountered while writing an Emulex, no error is reported
       but the number of bytes transferred is 
0 and no further writing is
       allowed.  On all other drives, the first write that encounters 
EOT       will return a short count or 
0. If a short count is returned, then
       the next write will return 
0. After a zero count is returned, the
       next write returns a full count or short count. A following write
       returns 
0 again. It is important that the number and size of trailer
       records be kept as small as possible to prevent data loss. Therefore,
       writing after 
EOT is not recommended.
       Reading past 
EOT is transparent to the user. Reading is stopped only
       by reading EOF's. For 1/2" reel devices, it is possible to read off
       the end of the reel if one reads past the two file marks which mark
       the end of recorded media.
FILES
       /kernel/drv/st.conf           driver configuration file       
/usr/include/sys/mtio.h           structures and definitions for mag tape io control commands       
/usr/include/sys/scsi/targets/stdef.h           definitions for 
SCSI tape drives       
/dev/rmt/[0- 127][l,m,h,u,c][b][n]           where 
l,m,h,u,c specifies the density (low, medium, high,
           ultra/compressed), 
b the optional BSD behavior (see 
mtio(4I)),
           and 
n the optional no rewind behavior. For example, 
/dev/rmt/0lbn           specifies unit 0, low density, BSD behavior, and no rewind.
           For 1/2" reel tape devices (HP-88780), the densities are:           
l   800 BPI density           
m   1600 BPI density           
h   6250 BPI density           
c   data compression
               (not supported on all modules)
           For 8mm tape devices (Exabyte 8200/8500/8505):           
l     Standard 2 Gbyte format           
m     5 Gbyte format (8500, 8505 only)           
h,c   5 Gbyte compressed format (8505 only)
           For 4mm 
DAT tape devices (Archive Python):           
l       Standard format           
m,h,c   data compression
           For all QIC (other than QIC-24) tape devices:           
l,m,h,c   density of the tape cartridge type
                     (not all devices can read and
                     write all formats)
           For QIC-24 tape devices (Emulex MT-02):           
l       QIC-11 Format           
m,h,c   QIC-24 Format
SEE ALSO
       mt(1), 
open(2), 
read(2), 
write(2), 
aioread(3C), 
aiowrite(3C),       
kstat(3KSTAT), 
esp(4D), 
isp(4D), 
mtio(4I), 
driver.conf(5), 
scsi(5),       
standards(7), 
modload(8), 
modunload(8), 
ioctl(9E)DIAGNOSTICS
       The 
st driver diagnostics may be printed to the console or messages
       file.
       Each diagnostic is dependent on the value of the system variable       
st_error_level. 
st_error_level may be set in the 
/etc/system file.
       The default setting for 
st_error_level is 4 (SCSI_ERR_RETRYABLE)
       which is suitable for most configurations since only actual fault
       diagnostics are printed. Settings range from values 0 (SCSI_ERR_ALL)
       which is most verbose, to 6 (SCSI_ERR_NONE) which is least verbose.
       See 
stdef.h for the full list of error-levels. SCSI_ERR_ALL level the
       amount of diagnostic information is likely to be excessive and
       unnecessary.
       The st driver diagnostics are described below:
         Error for Command: <scsi_cmd_name()> Error Level:<error_class>
         Requested Block: <blkno>  Error Block: <err_blkno>
         Vendor: <name>: Serial Number: <inq_serial>
         Sense Key: <es_key> ASC: 0x<es_add_code> (scsi_asc_ascq_name()>), ASCQ:
         0x<es_qual_code>, FRU: 0x<ex_fru_code>
       where <error_class> may be any one of the following: "All,"
       "Unknown," "Informational," "Recovered," "Retryable," "Fatal"
       The command indicated by <scsi_cmd_name> failed. Requested Block
       represents the block where the transfer started. Error Block
       represents the block that caused the error. Sense Key, ASC, ASCQ and
       FRU information is returned by the target in response to a request
       sense command. See SCSI protocol documentation for description of
       Sense Key, ASC, ASCQ, FRU.
       The st driver attempts to validate entries in the 
st.conf file. Each
       field in the entry is checked for upper and lower limits and invalid
       bits set.  The fields are named as follows in config string order:
                 conf version
                 drive type
                 block size
                 options
                 number of densities
                 density code
                 default density
                 non motion timeout
                 I/O timeout
                 space timeout
                 load timeout
                 unload timeout
                 erase timeout
       The 
st.conf diagnostics are described below:
         <con-name> <field-in-err> <problem-with-field>
       where <con-name> is the name of the config string. Where <field-in-
       err> is the field containing invalid entries and where <problem-with-
       field> describes the nature of the invalid entry.
         Write/read: not modulo <n> block size
       The request size for fixed record size devices must be a multiple of
       the specified block size.
         Recovery by resets failed
       After a transport error, the driver attempted to recover by issuing a
       device reset and then a bus reset if device reset failed. These
       recoveries failed.
         Periodic head cleaning required
       The driver reported that periodic head cleaning is now required. This
       diagnostic is generated either due to a threshold number of retries,
       or due to the device communicating to the driver that head cleaning
       is required.
         Soft error rate (<n>%) during writing/reading was too high
       The soft error rate has exceeded the threshold specified by the
       vendor.
         SCSI transport failed: reason 'xxxx': {retrying|giving up}
       The Host Bus Adapter (HBA) has failed to transport a command to the
       target for the reason stated. The driver will either retry the
       command or, ultimately, give up.
         Tape not inserted in drive
       A media access command was attempted while there was no tape inserted
       into the specified drive. In this case, the drive returns sense key
       of DRIVE NOT READY.
         Transport rejected
       The Host Bus Adapter (HBA) driver is not accepting commands after
       failing to successfully transport a scsi packet to the target. The
       actual status received by the 
st driver from the underlying HBA
       driver was either TRAN_FATAL_ERROR or TRAN_BADPKT.
         Retrying command
       The 
st driver failed to complete a command. However the command is
       retryable and will be retried.
         Giving up
       The 
st driver has exhausted retries or otherwise is unable to retry
       the command and so is giving up.
         No target struct for st%d
       The 
st driver failed to obtain state information because the
       requested state structure was not allocated. The specified device was
       probably not attached.
         File mark detected
       The operation detected an end of file mark. (File marks signify the
       end of a file on the tape media).
         End-of-media detected
       The operation reached the end of the tape media.
         Exabyte soft error reporting failed. DAT soft error reporting failed
       The 
st driver was unable to determine if the soft error threshold had
       been exceeded because it did not successfully read the data it
       requires or did not obtain enough data. This data is retrieved using
       the log sense command.
         Log sense parameter code does not make sense
       The log sense command retrieves hardware statistics that are stored
       on the drive (for example, soft error counts and retries.) If the
       data retrieved from the drive is invalid, this message is printed and
       the data is not used.
         Restoring tape position at fileno=%x, blkno=%lx....
       The 
st driver is positioning to the specified file and block. This
       occurs on an open.
         Failed to restore the last <file/block> position:
         In this state, tape will be loaded at BOT during next open
       The 
st driver could not position to the specified location and will
       revert to the beginning of the tape when the next open is attempted.
         Device does not support compression
       The compression facility of the device was requested. However the
       device does not have a hardware compression capability.
         DAT soft error reset failed
       After DAT soft error reporting, the counters within the device that
       accumulate this sense data need to be re-set. This operation failed.
         Errors after pkt alloc (b_flags=0x%x, b_error=0x%x)
       Memory allocation for a 
scsi packet failed.
         Incorrect length indicator set
       The drive reported the length of data requested in a READ operation,
       was incorrect. Incorrect Length Indicator (ILI) is a very commonly
       used facility in SCSI tape protocol and should not be seen as an
       error per-se. Applications typically probe a new tape with a read of
       any length, using the returned length to the read system call for
       future reads. Along with this operation, an underlying ILI error is
       received. ILI errors are therefore informational only and are masked
       at the default 
st_error_level.
         Data property (%s) has no value
         Data property (%s) incomplete
         Version # for data property (%s) greater than 1
       These diagnostics indicate problems in retrieving the values of the
       various property settings. The 
st driver is in the process of setting
       the property/parameter values for the tape drive using information
       from either the built-in table within the driver or from uncommented
       entries in the 
st.conf file. The effect on the system may be that the
       tape drive may be set with default or generic driver settings which
       may not be appropriate for the actual type of tape drive being used.
         st_attach-RESUME: tape failure tape position will be lost
       On a resume after a power management suspend, the previously known
       tape position is no longer valid. This can occur if the tape was
       changed while the system was in power management suspend. The
       operation will not be retried.
         Write Data Buffering has been deprecated. Your applications should
         continue to work normally. However, they should be ported to use
         Asynchronous I/O.
       Indicates that buffering has been removed from Solaris.
         Cannot detach: fileno=%x, blkno=%lx
       The 
st driver cannot unload because the tape is not positioned at BOT
       (beginning of tape). May indicate hardware problems with the tape
       drive.
         Variable record length I/O
         Fixed record length (%d byte blocks) I/O
       Tape-drives can use either Fixed or Variable record length. If the
       drive uses Fixed length records, then the built in property table or
       the st.conf file will contain a non-zero record-length property. Most
       DAT, Exabyte and DLT drives support Variable record lengths. Many QIC
       format tape drives have historically been of Fixed record length.
         Command will be retried
          un_ncmds: %d can't retry cmd
       These diagnostics are only seen with tape drives with the
       ST_RETRY_ON_RECOVERED_DEFERRED_ERROR bit set. See 
stdef.h for
       explanation of the specific usage of this setting.
WARNINGS
       Effective with Solaris 2.4, the 
ST_NO_RECSIZE_LIMIT flag is set for
       the built-in config entries of the Archive 
DAT and Exabyte drivers by
       default. (Refer to 
Large Record Sizes.) Tapes written with large
       block sizes prior to Solaris 2.4 may cause some applications to fail
       if the number of bytes returned by a read request is less than the
       requested block size (for example, asking for 128 Kbytes and
       receiving less than 64 Kbytes).
       The 
ST_NO_RECSIZE_LIMIT flag can be disabled in the config entry for
       the device as a work-around. (Refer to 
Tape Configuration.) This
       action disables the ability to read and write with large block sizes
       and allows the reading of tapes written prior to Solaris 2.4 with
       large block sizes.
       (Refer to 
mtio(4I) for a description of maximum record sizes.)
BUGS
       Tape devices that do not return a 
BUSY status during tape loading
       prevent user commands from being held until the device is ready. The
       user must delay issuing any tape operations until the tape device is
       ready. This is not a problem for tape devices supplied by Sun
       Microsystems.
       Tape devices that do not report a blank check error at the end of
       recorded media may cause file positioning operations to fail. Some
       tape drives, for example, mistakenly report media error instead of
       blank check error.
                                April 9, 2016                         ST(4D)