scsi_tape(7)scsi_tape(7)NAMEscsi_tape - SCSI sequential access device driver
DESCRIPTION
SCSI sequential-access (tape) devices store a sequence of data blocks.
Data can be read and written using either fixed or variable sized block
mode. If supported by the device, variable sized block mode is nor‐
mally used (even when all blocks are the same size). Fixed sized block
mode is generally only used for tape devices which do not support vari‐
able sized blocks. Fixed sized block mode can be used on some tape
devices which support variable sized blocks to increase I/O perfor‐
mance.
Generally SCSI tape devices are controlled through the (see mt(7))
generic tape device interface. This section describes features that
are specific to SCSI tape devices.
The ioctl (see scsi(7)) can be used to determine remaining tape capac‐
ity for some tape devices. The field indicates the "natural" block
size of the device. This value may or may not be the current block
size of the device. The number of blocks, indicated by the field, is
an estimate of how much data can be written on the remaining media. A
zero size is returned for devices that do not provide remaining-capac‐
ity information. The quantity of data that can actually be written may
be higher or lower than indicated, depending on such factors as block
size, media defects, data compression, and ability to maintain stream‐
ing.
To improve performance, most SCSI tape devices have caches. Read-cache
use, called "read ahead", causes the tape drive to read data in antici‐
pation of read requests. Read ahead is only apparent to users in the
increased performance that it produces. Write-cache use is called
"immediate reporting". Immediate reporting increases I/O performance
by reporting a completed write status before the data being written is
actually committed to media. This allows the application program to
supply additional data so that continuous media motion, called "stream‐
ing", can be achieved. The ioctl can be used to determine if immedi‐
ate-reporting functionality is currently being used by the device. The
value "1" indicates immediate reporting is enabled. By default, the
device driver attempts to enable immediate reporting. The ioctl can be
used to explicitly enable or disable immediate reporting. A zero value
disables immediate reporting. The value "1" enables immediate report‐
ing. The ioctl command can be used to cause any cached data to be
written (committed) to media. Note that the device immediate reporting
mode set by the ioctl survives between and calls, but not through sys‐
tem reboot.
The ioctl indicates the device's current block size. A block size of
zero indicates the device is in variable-sized-block mode. A non-zero
block size indicates the device is in fixed-sized-block mode.
The ioctl changes the current block size to the specified number of
bytes. Setting the block size to zero specifies that variable-sized-
block mode should be used. Any non-zero block size specifies that
fixed-sized-block mode should be used. By default, the device driver
attempts to set the block size to zero during open. If variable-sized-
block mode is not supported by the device, the driver selects an appro‐
priate block size for fixed-sized-block mode use. Note that the device
block size set by the ioctl survives between and calls, but not through
system reboot.
The ioctl indicates the device's maximum and minimum fixed block-size
limits. The device's minimum fixed block size is indicated by the
field. The field contains the smaller of the maximum block size sup‐
ported by the device and the maximum block size supported by the system
This is the largest valid block size for the specific combination of
device, driver, and host system being used.
The ioctl can be used to determine the current media position for some
devices. For devices that support this capability, the resultant value
can be used to reposition the media to the same position in the future.
The ioctl can be used to cause media repositioning on some devices.
For devices that support this capability, media repositioning via this
mechanism can generally be completed more quickly than might be simi‐
larly accomplished using record, filemark, or setmark spacing. The
argument value specified should be the result of a previous for that
media volume.
The following is included from
/* ioctl support for SCSI tape commands */
#define SIOC_GET_IR _IOR('S', 14, int)
#define SIOC_SET_IR _IOW('S', 15, int)
#define SIOC_GET_BLOCK_SIZE _IOR('S', 30, int)
#define SIOC_SET_BLOCK_SIZE _IOW('S', 31, int)
#define SIOC_GET_BLOCK_LIMITS _IOW('S', 32, struct scsi_block_limits)
#define SIOC_GET_POSITION _IOR('S', 33, int)
#define SIOC_SET_POSITION _IOW('S', 34, int)
/* structure for SIOC_GET_BLOCK_LIMITS ioctl */
struct scsi_block_limits {
unsigned min_blk_size;
unsigned max_blk_size;
};
WARNINGS
SCSI bus and device resets cause some devices to reposition media to
beginning-of-tape (BOT). This unintentional media repositioning can
cause loss of data. The driver causes the first subsequent attempt to
fail as an indication of potential data loss.
The driver does not write filemarks at close if the media has been pro‐
grammatically repositioned. Applications that reposition the media
prior to closing the device should write any required tapemarks.
SEE ALSOmknod(1M), mt(7), scsi(7).
scsi_tape(7)