MTIO(4)                 NetBSD Kernel Interfaces Manual                MTIO(4)

     mtio -- generic magnetic tape I/O interface

     #include <sys/ioctl.h>
     #include <sys/types.h>
     #include <sys/mtio.h>

     Magnetic tape has been the computer system backup and data transfer
     medium of choice for decades, because it has historically been cheaper in
     cost per bit stored, and the formats have been designed for portability
     and storage.  However, tape drives have generally been the slowest mass
     storage devices attached to any computer system.

     Magnetic tape comes in a wide variety of formats, from classic 9-track,
     through various Quarter Inch Cartridge (QIC) variants, to more modern
     systems using 8mm video tape, and Digital Audio Tape (DAT).  There have
     also been a variety of proprietary tape systems, including DECtape, and
     IBM 3480.

     Regardless of the specific characteristics of the particular tape trans-
     port mechanism (tape drive), UNIX tape I/O has two interfaces: "block"
     and "raw".  I/O through the block interface of a tape device is similar
     to I/O through the block special device for a disk driver: the individual
     read(2) and write(2) calls can be done in any amount of bytes, but all
     data is buffered through the system buffer cache, and I/O to the device
     is done in 1024 byte sized blocks.  This limitation is sufficiently
     restrictive that the block interface to tape devices is rarely used.

     The "raw" interface differs in that all I/O can be done in arbitrary
     sized blocks, within the limitations for the specific device and device
     driver, and all I/O is synchronous.  This is the most flexible interface,
     but since there is very little that is handled automatically by the ker-
     nel, user programs must implement specific magnetic tape handling rou-
     tines, which puts the onus of correctness on the application programmer.

     Each magnetic tape subsystem has a couple of special devices associated
     with it.

     The block device is usually named for the driver, e.g.  /dev/st0 for unit
     zero of a st(4) SCSI tape drive.

     The raw device name is the block device name with an "r" prepended, e.g.

     By default, the tape driver will rewind the tape drive when the device is
     closed.  To make it possible for multiple program invocations to sequen-
     tially write multiple files on the same tape, a "no rewind on close"
     device is provided, denoted by the letter "n" prepended to the name of
     the device, e.g.  /dev/nst0, /dev/nrst0.

     The mt(1) command can be used to explicitly rewind, or otherwise position
     a tape at a particular point with the no-rewind device.

     Two end-of-file (EOF) markers mark the end of a tape (EOT), and one end-
     of-file marker marks the end of a tape file.

     By default, the tape driver will write two End Of File (EOF) marks and
     rewind the tape when the device is closed after the last write.

     If the tape is not to be rewound it is positioned with the head in
     between the two tape marks, where the next write will over write the sec-
     ond end-of-file marker.

     All of the magnetic tape devices may be manipulated with the mt(1) com-

     A number of ioctl(2) operations are available on raw magnetic tape.
     Please see <sys/mtio.h> for their definitions.

     The manual pages for specific tape device drivers should list their par-
     ticular capabilities and limitations.

     dd(1), mt(1), pax(1), tar(1), st(4), wt(4)

     The mtio manual appeared in 4.2BSD.

     The status should be returned in a device independent format.

     If and when NetBSD is updated to deal with non-512 byte per sector disk
     media through the system buffer cache, perhaps a more sane tape interface
     can be implemented.

NetBSD 8.1                     January 14, 1999                     NetBSD 8.1

You can also request any man page by name and (optionally) by section:


Use the DEFAULT collection to view manual pages for third-party software.

©1994 Man-cgi 1.15, Panagiotis Christias
©1996-2019 Modified for NetBSD by Kimmo Suominen