]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man4/st.4
inotify.7: Add missing #include in example program
[thirdparty/man-pages.git] / man4 / st.4
CommitLineData
fea681da 1.\" Copyright 1995 Robert K. Nichols (Robert.K.Nichols@att.com)
e2af0daf 2.\" Copyright 1999-2005 Kai Mäkisara (Kai.Makisara@kolumbus.fi)
fea681da 3.\"
93015253 4.\" %%%LICENSE_START(VERBATIM)
fea681da
MK
5.\" Permission is granted to make and distribute verbatim copies of this
6.\" manual provided the copyright notice and this permission notice are
7.\" preserved on all copies.
8.\"
9.\" Permission is granted to copy and distribute modified versions of this
10.\" manual under the conditions for verbatim copying, provided that the
11.\" entire resulting derived work is distributed under the terms of a
12.\" permission notice identical to this one.
e2af0daf 13.\"
fea681da
MK
14.\" Since the Linux kernel and libraries are constantly changing, this
15.\" manual page may be incorrect or out-of-date. The author(s) assume no
16.\" responsibility for errors or omissions, or for damages resulting from
17.\" the use of the information contained herein. The author(s) may not
18.\" have taken the same level of care in the production of this manual,
19.\" which is licensed free of charge, as they might when working
20.\" professionally.
e2af0daf 21.\"
fea681da
MK
22.\" Formatted or processed versions of this manual, if unaccompanied by
23.\" the source, must acknowledge the copyright and authors of this work.
4b72fb64 24.\" %%%LICENSE_END
e8426ca2 25.TH ST 4 2020-04-11 "Linux" "Linux Programmer's Manual"
fea681da
MK
26.SH NAME
27st \- SCSI tape device
28.SH SYNOPSIS
29.nf
30.B #include <sys/mtio.h>
68e4db0a 31.PP
fea681da 32.BI "int ioctl(int " fd ", int " request " [, (void *)" arg3 "]);"
e40c76c0
MK
33.BI "int ioctl(int " fd ", MTIOCTOP, (struct mtop *)" mt_cmd );
34.BI "int ioctl(int " fd ", MTIOCGET, (struct mtget *)" mt_status );
35.BI "int ioctl(int " fd ", MTIOCPOS, (struct mtpos *)" mt_pos );
fea681da
MK
36.fi
37.SH DESCRIPTION
38The
39.B st
40driver provides the interface to a variety of SCSI tape devices.
41Currently, the driver takes control of all detected devices of type
cba04495 42\(lqsequential-access\(rq.
fea681da
MK
43The
44.B st
45driver uses major device number 9.
46.PP
c13182ef
MK
47Each device uses eight minor device numbers.
48The lowermost five bits
fea681da 49in the minor numbers are assigned sequentially in the order of
c13182ef
MK
50detection.
51In the 2.6 kernel, the bits above the eight lowermost bits are
e51d6af5 52concatenated to the five lowermost bits to form the tape number.
e2af0daf 53The minor numbers can be grouped into
fea681da
MK
54two sets of four numbers: the principal (auto-rewind) minor device numbers,
55.IR n ,
e2af0daf 56and the \(lqno-rewind\(rq device numbers,
cba04495 57.RI ( n " + 128)."
fea681da 58Devices opened using the principal device number will be sent a
e40c76c0
MK
59.BR REWIND
60command when they are closed.
fea681da
MK
61Devices opened using the \(lqno-rewind\(rq device number will not.
62(Note that using an auto-rewind device for positioning the tape with,
63for instance, mt does not lead to the desired result: the tape is
64rewound after the mt command and the next command starts from the
65beginning of the tape).
66.PP
67Within each group, four minor numbers are available to define
68devices with different characteristics (block size, compression,
c13182ef
MK
69density, etc.)
70When the system starts up, only the first device is available.
71The other three are activated when the default
6387216b
MK
72characteristics are defined (see below).
73(By changing compile-time
fea681da
MK
74constants, it is possible to change the balance between the maximum
75number of tape drives and the number of minor numbers for each
c13182ef
MK
76drive.
77The default allocation allows control of 32 tape drives.
fea681da
MK
78For instance, it is possible to control up to 64 tape drives
79with two minor numbers for different options.)
80.PP
81Devices are typically created by:
e646a1ba 82.PP
a6e2f128 83.in +4n
e646a1ba 84.EX
2bc2f479
MK
85mknod \-m 666 /dev/st0 c 9 0
86mknod \-m 666 /dev/st0l c 9 32
87mknod \-m 666 /dev/st0m c 9 64
88mknod \-m 666 /dev/st0a c 9 96
89mknod \-m 666 /dev/nst0 c 9 128
90mknod \-m 666 /dev/nst0l c 9 160
91mknod \-m 666 /dev/nst0m c 9 192
92mknod \-m 666 /dev/nst0a c 9 224
b8302363 93.EE
a6e2f128 94.in
fea681da
MK
95.PP
96There is no corresponding block device.
97.PP
98The driver uses an internal buffer that has to be large enough to hold
c13182ef
MK
99at least one tape block.
100In kernels before 2.1.121, the buffer is
101allocated as one contiguous block.
102This limits the block size to the
fea681da 103largest contiguous block of memory the kernel allocator can provide.
c4b7e5ac
MK
104The limit is currently 128\ kB for 32-bit architectures and
105256\ kB for 64-bit architectures.
c13182ef
MK
106In newer kernels the driver
107allocates the buffer in several parts if necessary.
108By default, the
109maximum number of parts is 16.
110This means that the maximum block size
c4b7e5ac 111is very large (2\ MB if allocation of 16 blocks of 128\ kB succeeds).
fea681da
MK
112.PP
113The driver's internal buffer size is determined by a compile-time
114constant which can be overridden with a kernel startup option.
115In addition to this, the driver tries to allocate a larger temporary
cf50118f 116buffer at run time if necessary.
c13182ef 117However, run-time allocation of large
fea681da
MK
118contiguous blocks of memory may fail and it is advisable not to rely
119too much on dynamic buffer allocation with kernels older than 2.1.121
120(this applies also to demand-loading the driver with kerneld or kmod).
121.PP
122The driver does not specifically support any tape drive brand or
c13182ef
MK
123model.
124After system start-up the tape device options are defined by
e2af0daf
MK
125the drive firmware.
126For example, if the drive firmware selects fixed-block mode,
c13182ef
MK
127the tape device uses fixed-block mode.
128The options can
fea681da 129be changed with explicit
5e21af3a 130.BR ioctl (2)
fea681da 131calls and remain in effect when the device is closed and reopened.
24b74457 132Setting the options affects both the auto-rewind and the nonrewind
fea681da
MK
133device.
134.PP
135Different options can be specified for the different devices within
c13182ef
MK
136the subgroup of four.
137The options take effect when the device is
138opened.
139For example, the system administrator can define
e2af0daf
MK
140one device that writes in fixed-block mode with a certain block size,
141and one which writes in variable-block mode (if the drive supports
fea681da
MK
142both modes).
143.PP
144The driver supports
145.B tape partitions
c13182ef
MK
146if they are supported by the drive.
147(Note that the tape partitions
148have nothing to do with disk partitions.
149A partitioned tape can be
150seen as several logical tapes within one medium.)
151Partition support has to be enabled with an
5e21af3a 152.BR ioctl (2).
1e321034 153The tape
fea681da
MK
154location is preserved within each partition across partition changes.
155The partition used for subsequent tape operations is
c13182ef 156selected with an
5e21af3a 157.BR ioctl (2).
1e321034 158The partition switch is executed together with
fea681da 159the next tape operation in order to avoid unnecessary tape
c13182ef
MK
160movement.
161The maximum number of partitions on a tape is defined by a
162compile-time constant (originally four).
163The driver contains an
5e21af3a 164.BR ioctl (2)
1e321034 165that can format a tape with either one or two partitions.
fea681da
MK
166.PP
167Device
8478ee02 168.I /dev/tape
fea681da
MK
169is usually created as a hard or soft link to the default tape device
170on the system.
e2af0daf
MK
171.PP
172Starting from kernel 2.6.2, the driver exports in the sysfs directory
0daa9e92 173.I /sys/class/scsi_tape
e2af0daf 174the attached devices and some parameters assigned to the devices.
73d8cece 175.SS Data transfer
e2af0daf
MK
176The driver supports operation in both fixed-block mode and
177variable-block mode (if supported by the drive).
178In fixed-block mode the drive
fea681da 179writes blocks of the specified size and the block size is not
e2af0daf
MK
180dependent on the byte counts of the write system calls.
181In variable-block mode one tape block is written for each write call
182and the byte
c13182ef
MK
183count determines the size of the corresponding tape block.
184Note that
e2af0daf 185the blocks on the tape don't contain any information about the
fea681da
MK
186writing mode: when reading, the only important thing is to use
187commands that accept the block sizes on the tape.
188.PP
e2af0daf 189In variable-block mode the read byte count does not have to match
c13182ef
MK
190the tape block size exactly.
191If the byte count is larger than the
fea681da 192next block on tape, the driver returns the data and the function
c13182ef
MK
193returns the actual block size.
194If the block size is larger than the
9787e2b6 195byte count, an error is returned.
fea681da 196.PP
e2af0daf 197In fixed-block mode the read byte counts can be arbitrary if
fea681da 198buffering is enabled, or a multiple of the tape block size if
c13182ef
MK
199buffering is disabled.
200Kernels before 2.1.121 allow writes with
201arbitrary byte count if buffering is enabled.
202In all other cases
fea681da
MK
203(kernel before 2.1.121 with buffering disabled or newer kernel) the
204write byte count must be a multiple of the tape block size.
205.PP
e2af0daf 206In the 2.6 kernel, the driver tries to use direct transfers between the user
c13182ef
MK
207buffer and the device.
208If this is not possible, the driver's internal buffer
209is used.
210The reasons for not using direct transfers include improper alignment
e2af0daf 211of the user buffer (default is 512 bytes but this can be changed by the HBA
90500431 212driver), one or more pages of the user buffer not reachable by the
f78ed33a 213SCSI adapter, and so on.
e2af0daf 214.PP
fea681da
MK
215A filemark is automatically written to tape if the last tape operation
216before close was a write.
217.PP
218When a filemark is encountered while reading, the following
c13182ef
MK
219happens.
220If there are data remaining in the buffer when the filemark
221is found, the buffered data is returned.
222The next read returns zero
223bytes.
224The following read returns data from the next file.
225The end of
fea681da 226recorded data is signaled by returning zero bytes for two consecutive
c13182ef
MK
227read calls.
228The third read returns an error.
2b2581ee 229.SS Ioctls
c13182ef 230The driver supports three
5e21af3a 231.BR ioctl (2)
1e321034 232requests.
fea681da
MK
233Requests not recognized by the
234.B st
235driver are passed to the
236.B SCSI
237driver.
238The definitions below are from
8478ee02 239.IR /usr/include/linux/mtio.h :
73d8cece 240.SS MTIOCTOP \(em perform a tape operation
fea681da
MK
241.PP
242This request takes an argument of type
5049da5b 243.IR "(struct mtop\ *)" .
fea681da 244Not all drives support all operations.
a9b4ebbc
MK
245The driver returns an
246.B EIO
247error if the drive rejects an operation.
fea681da 248.PP
088a639b 249.in +4n
b8302363 250.EX
e40c76c0 251/* Structure for MTIOCTOP \- mag tape op command: */
fea681da 252struct mtop {
cf0a9ace
MK
253 short mt_op; /* operations defined below */
254 int mt_count; /* how many of them */
fea681da 255};
b8302363 256.EE
e40c76c0 257.in
fea681da 258.PP
2c1c7df6 259Magnetic tape operations for normal tape use:
0019177e 260.TP
e40c76c0 261.B MTBSF
fea681da 262Backward space over
f19a0f03 263.I mt_count
fea681da 264filemarks.
e40c76c0
MK
265.TP
266.B MTBSFM
fea681da 267Backward space over
f19a0f03 268.I mt_count
fea681da
MK
269filemarks.
270Reposition the tape to the EOT side of the last filemark.
e40c76c0
MK
271.TP
272.B MTBSR
fea681da 273Backward space over
f19a0f03 274.I mt_count
fea681da 275records (tape blocks).
e40c76c0
MK
276.TP
277.B MTBSS
fea681da 278Backward space over
f19a0f03 279.I mt_count
fea681da 280setmarks.
e40c76c0
MK
281.TP
282.B MTCOMPRESSION
fea681da 283Enable compression of tape data within the drive if
f19a0f03 284.I mt_count
c7094399 285is nonzero and disable compression if
f19a0f03 286.I mt_count
c13182ef
MK
287is zero.
288This command uses the MODE page 15 supported by most DATs.
e40c76c0
MK
289.TP
290.B MTEOM
fea681da 291Go to the end of the recorded media (for appending files).
e40c76c0
MK
292.TP
293.B MTERASE
c13182ef
MK
294Erase tape.
295With 2.6 kernel, short erase (mark tape empty) is performed if the
296argument is zero.
2b9b829d 297Otherwise, long erase (erase all) is done.
e40c76c0
MK
298.TP
299.B MTFSF
fea681da 300Forward space over
f19a0f03 301.I mt_count
fea681da 302filemarks.
e40c76c0
MK
303.TP
304.B MTFSFM
fea681da 305Forward space over
f19a0f03 306.I mt_count
fea681da
MK
307filemarks.
308Reposition the tape to the BOT side of the last filemark.
e40c76c0
MK
309.TP
310.B MTFSR
fea681da 311Forward space over
f19a0f03 312.I mt_count
fea681da 313records (tape blocks).
e40c76c0
MK
314.TP
315.B MTFSS
fea681da 316Forward space over
f19a0f03 317.I mt_count
fea681da 318setmarks.
e40c76c0
MK
319.TP
320.B MTLOAD
c13182ef
MK
321Execute the SCSI load command.
322A special case is available for some HP
323autoloaders.
324If
f19a0f03 325.I mt_count
08362d55
MK
326is the constant
327.B MT_ST_HPLOADER_OFFSET
328plus a number, the number is
fea681da 329sent to the drive to control the autoloader.
e40c76c0
MK
330.TP
331.B MTLOCK
fea681da 332Lock the tape drive door.
e40c76c0
MK
333.TP
334.B MTMKPART
c13182ef
MK
335Format the tape into one or two partitions.
336If
f19a0f03 337.I mt_count
8661af11 338is positive, it gives the size of partition 1 and partition
401117dc
MK
3390 contains the rest of the tape.
340If
f19a0f03 341.I mt_count
fea681da 342is zero, the tape is formatted into one partition.
9787e2b6
MK
343From kernel version 4.6,
344.\" commit 8038e6456a3e6f5c4759e0d73c4f9165b90c93e7
345a negative
8661af11 346.I mt_count
401117dc
MK
347specifies the size of partition 0 and
348the rest of the tape contains partition 1.
349The physical ordering of partitions depends on the drive.
fea681da 350This command is not allowed for a drive unless the partition support
e40c76c0
MK
351is enabled for the drive (see
352.BR MT_ST_CAN_PARTITIONS
353below).
354.TP
355.B MTNOP
5503c85e 356No op\(emflushes the driver's buffer as a side effect.
979c2c91 357Should be used before reading status with
e40c76c0
MK
358.BR MTIOCGET .
359.TP
360.B MTOFFL
fea681da 361Rewind and put the drive off line.
e40c76c0
MK
362.TP
363.B MTRESET
fea681da 364Reset drive.
e40c76c0
MK
365.TP
366.B MTRETEN
3f1c1b0a 367Re-tension tape.
e40c76c0
MK
368.TP
369.B MTREW
fea681da 370Rewind.
e40c76c0
MK
371.TP
372.B MTSEEK
fea681da 373Seek to the tape block number specified in
f19a0f03 374.IR mt_count .
e40c76c0
MK
375This operation requires either a SCSI-2 drive that supports the
376.B LOCATE
fea681da
MK
377command (device-specific address)
378or a Tandberg-compatible SCSI-1 drive (Tandberg, Archive
e40c76c0 379Viper, Wangtek, ...).
fea681da 380The block number should be one that was previously returned by
e40c76c0
MK
381.BR MTIOCPOS
382if device-specific addresses are used.
383.TP
384.B MTSETBLK
fea681da 385Set the drive's block length to the value specified in
f19a0f03 386.IR mt_count .
fea681da 387A block length of zero sets the drive to variable block size mode.
e40c76c0
MK
388.TP
389.B MTSETDENSITY
fea681da 390Set the tape density to the code in
f19a0f03 391.IR mt_count .
fea681da
MK
392The density codes supported by a drive can be found from the drive
393documentation.
e40c76c0
MK
394.TP
395.B MTSETPART
fea681da 396The active partition is switched to
f19a0f03 397.IR mt_count .
c13182ef
MK
398The partitions are numbered from zero.
399This command is not allowed for
fea681da 400a drive unless the partition support is enabled for the drive (see
e40c76c0
MK
401.B MT_ST_CAN_PARTITIONS
402below).
403.TP
404.B MTUNLOAD
fea681da 405Execute the SCSI unload command (does not eject the tape).
e40c76c0
MK
406.TP
407.B MTUNLOCK
fea681da 408Unlock the tape drive door.
e40c76c0
MK
409.TP
410.B MTWEOF
e2af0daf 411Write
f19a0f03 412.I mt_count
fea681da 413filemarks.
e40c76c0
MK
414.TP
415.B MTWSM
fea681da 416Write
f19a0f03 417.I mt_count
fea681da 418setmarks.
fea681da 419.PP
2c1c7df6 420Magnetic tape operations for setting of device options (by the superuser):
0019177e 421.TP
e40c76c0 422.B MTSETDRVBUFFER
fea681da 423Set various drive and driver options according to bits encoded in
f19a0f03 424.IR mt_count .
e2af0daf 425These consist of the drive's buffering mode, a set of Boolean driver
fea681da 426options, the buffer write threshold, defaults for the block size and
74aace8a 427density, and timeouts (only in kernels 2.1 and later).
980bec5d 428A single operation can affect only one item in the list below (the
fea681da 429Booleans counted as one item.)
fea681da
MK
430.IP
431A value having zeros in the high-order 4 bits will be used to set the
432drive's buffering mode.
433The buffering modes are:
434.RS 12
435.IP 0 4
979c2c91 436The drive will not report
e40c76c0
MK
437.BR GOOD
438status on write commands until the data
fea681da 439blocks are actually written to the medium.
fea681da 440.IP 1
979c2c91 441The drive may report
e40c76c0
MK
442.BR GOOD
443status on write commands as soon as all the
fea681da
MK
444data has been transferred to the drive's internal buffer.
445.IP 2
979c2c91 446The drive may report
e40c76c0
MK
447.BR GOOD
448status on write commands as soon as (a) all
fea681da
MK
449the data has been transferred to the drive's internal buffer, and
450(b) all buffered data from different initiators has been successfully
451written to the medium.
fea681da 452.RE
e40c76c0 453.IP
fea681da 454To control the write threshold the value in
f19a0f03 455.I mt_count
fea681da 456must include the constant
e40c76c0 457.BR MT_ST_WRITE_THRESHOLD
87f6d861 458bitwise ORed with a block count in the low 28 bits.
fea681da
MK
459The block count refers to 1024-byte blocks, not the physical block
460size on the tape.
461The threshold cannot exceed the driver's internal buffer size (see
e40c76c0 462DESCRIPTION, above).
fea681da
MK
463.IP
464To set and clear the Boolean options
465the value in
f19a0f03 466.I mt_count
e40c76c0
MK
467must include one of the constants
468.BR MT_ST_BOOLEANS ,
979c2c91 469.BR MT_ST_SETBOOLEANS ,
e40c76c0
MK
470.BR MT_ST_CLEARBOOLEANS ,
471or
472.BR MT_ST_DEFBOOLEANS
87f6d861 473bitwise ORed with
fea681da 474whatever combination of the following options is desired.
e40c76c0
MK
475Using
476.BR MT_ST_BOOLEANS
477the options can be set to the values
c13182ef 478defined in the corresponding bits.
e40c76c0
MK
479With
480.BR MT_ST_SETBOOLEANS
979c2c91 481the options can be selectively set and with
e40c76c0 482.BR MT_ST_DEFBOOLEANS
fea681da
MK
483selectively cleared.
484.IP ""
485The default options for a tape device are set with
e40c76c0 486.BR MT_ST_DEFBOOLEANS .
24b74457 487A nonactive tape device (e.g., device with
fea681da 488minor 32 or 160) is activated when the default options for it are
c13182ef
MK
489defined the first time.
490An activated device inherits from the device
fea681da
MK
491activated at start-up the options not set explicitly.
492.IP ""
493The Boolean options are:
fea681da 494.RS
979c2c91 495.TP
e40c76c0 496.BR MT_ST_BUFFER_WRITES " (Default: true)"
e2af0daf 497Buffer all write operations in fixed-block mode.
fea681da
MK
498If this option is false and the drive uses a fixed block size, then
499all write operations must be for a multiple of the block size.
ae03dc66 500This option must be set false to write reliable multivolume archives.
ddf54565 501.TP
e40c76c0 502.BR MT_ST_ASYNC_WRITES " (Default: true)"
e2af0daf 503When this option is true, write operations return immediately without
fea681da
MK
504waiting for the data to be transferred to the drive if the data fits
505into the driver's buffer.
506The write threshold determines how full the buffer must be before a
507new SCSI write command is issued.
508Any errors reported by the drive will be held until the next
509operation.
ae03dc66 510This option must be set false to write reliable multivolume archives.
e40c76c0
MK
511.TP
512.BR MT_ST_READ_AHEAD " (Default: true)"
fea681da 513This option causes the driver to provide read buffering and
e2af0daf 514read-ahead in fixed-block mode.
fea681da
MK
515If this option is false and the drive uses a fixed block size, then
516all read operations must be for a multiple of the block size.
e40c76c0
MK
517.TP
518.BR MT_ST_TWO_FM " (Default: false)"
fea681da
MK
519This option modifies the driver behavior when a file is closed.
520The normal action is to write a single filemark.
c3235368 521If the option is true, the driver will write two filemarks and
fea681da 522backspace over the second one.
fea681da
MK
523.IP
524Note:
525This option should not be set true for QIC tape drives since they are
526unable to overwrite a filemark.
527These drives detect the end of recorded data by testing for blank tape
c13182ef
MK
528rather than two consecutive filemarks.
529Most other current drives also
fea681da
MK
530detect the end of recorded data and using two filemarks is usually
531necessary only when interchanging tapes with some other systems.
e40c76c0
MK
532.TP
533.BR MT_ST_DEBUGGING " (Default: false)"
fea681da 534This option turns on various debugging messages from the driver
e40c76c0
MK
535(effective only if the driver was compiled with
536.B DEBUG
c7094399 537defined nonzero).
e40c76c0
MK
538.TP
539.BR MT_ST_FAST_EOM " (Default: false)"
979c2c91 540This option causes the
e40c76c0
MK
541.B MTEOM
542operation to be sent directly to the
fea681da
MK
543drive, potentially speeding up the operation but causing the driver to
544lose track of the current file number normally returned by the
e40c76c0
MK
545.B MTIOCGET
546request.
547If
548.B MT_ST_FAST_EOM
c3235368 549is false, the driver will respond to an
e40c76c0
MK
550.B MTEOM
551request by forward spacing over files.
979c2c91 552.TP
e40c76c0 553.BR MT_ST_AUTO_LOCK " (Default: false)"
ee01213e 554When this option is true, the drive door is locked when the device file is
fea681da 555opened and unlocked when it is closed.
979c2c91 556.TP
e40c76c0 557.BR MT_ST_DEF_WRITES " (Default: false)"
fea681da
MK
558The tape options (block size, mode, compression, etc.) may change
559when changing from one device linked to a drive to another device
560linked to the same drive depending on how the devices are
c13182ef
MK
561defined.
562This option defines when the changes are enforced by the
fea681da 563driver using SCSI-commands and when the drives auto-detection
c13182ef
MK
564capabilities are relied upon.
565If this option is false, the driver
566sends the SCSI-commands immediately when the device is changed.
567If the
fea681da 568option is true, the SCSI-commands are not sent until a write is
c13182ef 569requested.
036d0b6d 570In this case, the drive firmware is allowed to detect the
fea681da
MK
571tape structure when reading and the SCSI-commands are used only to
572make sure that a tape is written according to the correct specification.
979c2c91 573.TP
e40c76c0 574.BR MT_ST_CAN_BSR " (Default: false)"
fea681da
MK
575When read-ahead is used, the tape must sometimes be spaced backward to the
576correct position when the device is closed and the SCSI command to
5fab2e7c 577space backward over records is used for this purpose.
c13182ef 578Some older
fea681da 579drives can't process this command reliably and this option can be used
c13182ef
MK
580to instruct the driver not to use the command.
581The end result is that,
e2af0daf 582with read-ahead and fixed-block mode, the tape may not be correctly
c13182ef
MK
583positioned within a file when the device is closed.
584With 2.6 kernel, the
e2af0daf 585default is true for drives supporting SCSI-3.
e40c76c0
MK
586.TP
587.BR MT_ST_NO_BLKLIMS " (Default: false)"
588Some drives don't accept the
589.B "READ BLOCK LIMITS"
590SCSI command.
591If this is used, the driver does not use the command.
c13182ef 592The drawback is
fea681da
MK
593that the driver can't check before sending commands if the selected
594block size is acceptable to the drive.
e40c76c0
MK
595.TP
596.BR MT_ST_CAN_PARTITIONS " (Default: false)"
fea681da 597This option enables support for several partitions within a
c13182ef
MK
598tape.
599The option applies to all devices linked to a drive.
e40c76c0
MK
600.TP
601.BR MT_ST_SCSI2LOGICAL " (Default: false)"
fea681da
MK
602This option instructs the driver to use the logical block addresses
603defined in the SCSI-2 standard when performing the seek and tell
e40c76c0
MK
604operations (both with
605.B MTSEEK
606and
607.B MTIOCPOS
608commands and when changing tape
c13182ef 609partition).
2b9b829d 610Otherwise, the device-specific addresses are used.
fea681da 611It is highly advisable to set this option if the drive supports the
c13182ef
MK
612logical addresses because they count also filemarks.
613There are some
33a0ccb2 614drives that support only the logical block addresses.
979c2c91 615.TP
e40c76c0 616.BR MT_ST_SYSV " (Default: false)"
a3d4007c 617When this option is enabled, the tape devices use the System V
c13182ef 618semantics.
2b9b829d 619Otherwise, the BSD semantics are used.
c13182ef 620The most important
fea681da 621difference between the semantics is what happens when a device used
80b50848 622for reading is closed: in System V semantics the tape is spaced forward
fea681da 623past the next filemark if this has not happened while using the
c13182ef
MK
624device.
625In BSD semantics the tape position is not changed.
979c2c91 626.TP
e40c76c0 627.BR MT_NO_WAIT " (Default: false)"
e2af0daf
MK
628Enables immediate mode (i.e., don't wait for the command to finish) for some
629commands (e.g., rewind).
e40c76c0
MK
630.PP
631An example:
e646a1ba 632.PP
088a639b 633.in +4n
e646a1ba 634.EX
e40c76c0
MK
635struct mtop mt_cmd;
636mt_cmd.mt_op = MTSETDRVBUFFER;
637mt_cmd.mt_count = MT_ST_BOOLEANS |
638 MT_ST_BUFFER_WRITES | MT_ST_ASYNC_WRITES;
639ioctl(fd, MTIOCTOP, mt_cmd);
b8302363 640.EE
e40c76c0 641.in
fea681da 642.RE
fea681da
MK
643.IP ""
644The default block size for a device can be set with
e40c76c0
MK
645.B MT_ST_DEF_BLKSIZE
646and the default density code can be set with
647.BR MT_ST_DEFDENSITY .
c13182ef 648The values for the parameters are or'ed
fea681da
MK
649with the operation code.
650.IP ""
651With kernels 2.1.x and later, the timeout values can be set with the
e40c76c0
MK
652subcommand
653.B MT_ST_SET_TIMEOUT
654ORed with the timeout in seconds.
fea681da
MK
655The long timeout (used for rewinds and other commands
656that may take a long time) can be set with
e40c76c0 657.BR MT_ST_SET_LONG_TIMEOUT .
c13182ef 658The kernel defaults are very long to
fea681da 659make sure that a successful command is not timed out with any
c13182ef 660drive.
cb3a997e 661Because of this, the driver may seem stuck even if it is only
c13182ef
MK
662waiting for the timeout.
663These commands can be used to set more
664practical values for a specific drive.
665The timeouts set for one device
fea681da 666apply for all devices linked to the same drive.
e2af0daf
MK
667.IP ""
668Starting from kernels 2.4.19 and 2.5.43, the driver supports a status
669bit which indicates whether the drive requests cleaning.
670The method used by the
671drive to return cleaning information is set using the
e40c76c0
MK
672.B MT_ST_SEL_CLN
673subcommand.
c13182ef
MK
674If the value is zero, the cleaning
675bit is always zero.
676If the value is one, the TapeAlert data defined
677in the SCSI-3 standard is used (not yet implemented).
9bc87ed0 678Values 2\(en17 are
c13182ef
MK
679reserved.
680If the lowest eight bits are >= 18, bits from the extended
681sense data are used.
9bc87ed0
MK
682The bits 9\(en16 specify a mask to select the bits
683to look at and the bits 17\(en23 specify the bit pattern to look for.
e2af0daf 684If the bit pattern is zero, one or more bits under the mask indicate
c13182ef 685the cleaning request.
c7094399 686If the pattern is nonzero, the pattern must match
e2af0daf 687the masked sense data byte.
73d8cece 688.SS MTIOCGET \(em get status
fea681da
MK
689.PP
690This request takes an argument of type
5049da5b 691.IR "(struct mtget\ *)" .
fea681da 692.PP
088a639b 693.in +4n
b8302363 694.EX
e40c76c0 695/* structure for MTIOCGET \- mag tape get status command */
fea681da 696struct mtget {
cf0a9ace
MK
697 long mt_type;
698 long mt_resid;
e2af0daf 699 /* the following registers are device dependent */
cf0a9ace
MK
700 long mt_dsreg;
701 long mt_gstat;
702 long mt_erreg;
e2af0daf 703 /* The next two fields are not always used */
cf0a9ace
MK
704 daddr_t mt_fileno;
705 daddr_t mt_blkno;
fea681da 706};
b8302363 707.EE
e40c76c0 708.in
0019177e
MK
709.TP
710\fImt_type\fP
fea681da 711The header file defines many values for
f19a0f03 712.IR mt_type ,
fea681da 713but the current driver reports only the generic types
e40c76c0
MK
714.B MT_ISSCSI1
715(Generic SCSI-1 tape)
716and
717.B MT_ISSCSI2
718(Generic SCSI-2 tape).
0019177e
MK
719.TP
720\fImt_resid\fP
fea681da 721contains the current tape partition number.
0019177e
MK
722.TP
723\fImt_dsreg\fP
fea681da
MK
724reports the drive's current settings for block size (in the low 24
725bits) and density (in the high 8 bits).
e40c76c0 726These fields are defined by
979c2c91 727.BR MT_ST_BLKSIZE_SHIFT ,
e40c76c0
MK
728.BR MT_ST_BLKSIZE_MASK ,
729.BR MT_ST_DENSITY_SHIFT ,
730and
731.BR MT_ST_DENSITY_MASK .
0019177e
MK
732.TP
733\fImt_gstat\fP
fea681da
MK
734reports generic (device independent) status information.
735The header file defines macros for testing these status bits:
736.RS
737.HP 4
e40c76c0 738\fBGMT_EOF\fP(\fIx\fP):
fea681da 739The tape is positioned just after a filemark
979c2c91 740(always false after an
e40c76c0
MK
741.B MTSEEK
742operation).
fea681da 743.HP
e40c76c0 744\fBGMT_BOT\fP(\fIx\fP):
fea681da 745The tape is positioned at the beginning of the first file (always false
e40c76c0
MK
746after an
747.B MTSEEK
748operation).
fea681da 749.HP
e40c76c0 750\fBGMT_EOT\fP(\fIx\fP):
fea681da
MK
751A tape operation has reached the physical End Of Tape.
752.HP
e40c76c0 753\fBGMT_SM\fP(\fIx\fP):
fea681da 754The tape is currently positioned at a setmark
e40c76c0
MK
755(always false after an
756.B MTSEEK
757operation).
fea681da 758.HP
e40c76c0 759\fBGMT_EOD\fP(\fIx\fP):
fea681da
MK
760The tape is positioned at the end of recorded data.
761.HP
e40c76c0 762\fBGMT_WR_PROT\fP(\fIx\fP):
fea681da
MK
763The drive is write-protected.
764For some drives this can also mean that the drive does not support
765writing on the current medium type.
766.HP
e40c76c0 767\fBGMT_ONLINE\fP(\fIx\fP):
fea681da 768The last
5e21af3a 769.BR open (2)
fea681da
MK
770found the drive with a tape in place and ready for operation.
771.HP
e40c76c0 772\fBGMT_D_6250\fP(\fIx\fP), \fBGMT_D_1600\fP(\fIx\fP), \fBGMT_D_800\fP(\fIx\fP):
fea681da
MK
773This \(lqgeneric\(rq status information reports the current
774density setting for 9-track \(12" tape drives only.
775.HP
e40c76c0 776\fBGMT_DR_OPEN\fP(\fIx\fP):
fea681da
MK
777The drive does not have a tape in place.
778.HP
e40c76c0 779\fBGMT_IM_REP_EN\fP(\fIx\fP):
c13182ef
MK
780Immediate report mode.
781This bit is set if there are no guarantees that
fea681da 782the data has been physically written to the tape when the write call
c13182ef
MK
783returns.
784It is set zero only when the driver does not buffer data and
fea681da 785the drive is set not to buffer data.
e2af0daf 786.HP
e40c76c0 787\fBGMT_CLN\fP(\fIx\fP):
c13182ef 788The drive has requested cleaning.
74aace8a 789Implemented in kernels since 2.4.19 and 2.5.43.
fea681da 790.RE
0019177e
MK
791.TP
792\fImt_erreg\fP
fea681da 793The only field defined in
f19a0f03 794.I mt_erreg
fea681da 795is the recovered error count in the low 16 bits (as defined by
e40c76c0
MK
796.BR MT_ST_SOFTERR_SHIFT
797and
b1fec1d1 798.BR MT_ST_SOFTERR_MASK ).
fea681da
MK
799Due to inconsistencies in the way drives report recovered errors, this
800count is often not maintained (most drives do not by default report
801soft errors but this can be changed with a SCSI MODE SELECT command).
0019177e
MK
802.TP
803\fImt_fileno\fP
fea681da
MK
804reports the current file number (zero-based).
805This value is set to \-1 when the file number is unknown (e.g., after
e40c76c0
MK
806.BR MTBSS
807or
808.BR MTSEEK ).
0019177e
MK
809.TP
810\fImt_blkno\fP
fea681da
MK
811reports the block number (zero-based) within the current file.
812This value is set to \-1 when the block number is unknown (e.g., after
e40c76c0
MK
813.BR MTBSF ,
814.BR MTBSS ,
815or
816.BR MTSEEK ).
73d8cece 817.SS MTIOCPOS \(em get tape position
fea681da
MK
818.PP
819This request takes an argument of type
5049da5b 820.I "(struct mtpos\ *)"
fea681da
MK
821and reports the drive's notion of the current tape block number,
822which is not the same as
f19a0f03 823.I mt_blkno
e40c76c0
MK
824returned by
825.BR MTIOCGET .
979c2c91 826This drive must be a SCSI-2 drive that supports the
e40c76c0 827.B "READ POSITION"
fea681da
MK
828command (device-specific address)
829or a Tandberg-compatible SCSI-1 drive (Tandberg, Archive
830Viper, Wangtek, ... ).
831.PP
088a639b 832.in +4n
b8302363 833.EX
e40c76c0 834/* structure for MTIOCPOS \- mag tape get position command */
cf0a9ace
MK
835struct mtpos {
836 long mt_blkno; /* current block number */
fea681da 837};
b8302363 838.EE
e40c76c0 839.in
47297adb 840.SH RETURN VALUE
e40c76c0
MK
841.TP
842.B EACCES
fea681da
MK
843An attempt was made to write or erase a write-protected tape.
844(This error is not detected during
5e21af3a 845.BR open (2).)
e40c76c0
MK
846.TP
847.B EBUSY
fea681da
MK
848The device is already in use or the driver was unable to allocate a
849buffer.
e40c76c0
MK
850.TP
851.B EFAULT
852The command parameters point to memory not belonging to the calling
853process.
854.TP
855.B EINVAL
fea681da 856An
5e21af3a 857.BR ioctl (2)
e935e108 858had an invalid argument, or a requested block size was invalid.
e40c76c0
MK
859.TP
860.B EIO
861The requested operation could not be completed.
862.TP
863.B ENOMEM
864The byte count in
865.BR read (2)
866is smaller than the next physical block on the tape.
d6bec36e
MK
867(Before 2.2.18 and 2.4.0 the extra bytes have been
868.\" Precisely: Linux 2.6.0-test6
e40c76c0
MK
869silently ignored.)
870.TP
871.B ENOSPC
872A write operation could not be completed because the tape reached
873end-of-medium.
874.TP
875.B ENOSYS
fea681da 876Unknown
5e21af3a 877.BR ioctl (2).
e40c76c0
MK
878.TP
879.B ENXIO
880During opening, the tape device does not exist.
881.TP
882.B EOVERFLOW
883An attempt was made to read or write a variable-length block that is
884larger than the driver's internal buffer.
885.TP
886.B EROFS
887Open is attempted with
888.B O_WRONLY
889or
890.B O_RDWR
891when the tape in the drive is write-protected.
fea681da 892.SH FILES
cee1a3fc 893.TP
cba04495
MK
894.I /dev/st*
895the auto-rewind SCSI tape devices
cee1a3fc 896.TP
cba04495 897.I /dev/nst*
24b74457 898the nonrewind SCSI tape devices
d2dc6294
MK
899.\" .SH AUTHOR
900.\" The driver has been written by Kai M\(:akisara (Kai.Makisara@metla.fi)
901.\" starting from a driver written by Dwayne Forsyth.
902.\" Several other
903.\" people have also contributed to the driver.
fea681da 904.SH NOTES
e40c76c0
MK
905.IP 1. 4
906When exchanging data between systems, both systems have to agree on
c13182ef
MK
907the physical tape block size.
908The parameters of a drive after startup
fea681da 909are often not the ones most operating systems use with these
c13182ef
MK
910devices.
911Most systems use drives in variable-block mode if the drive
912supports that mode.
913This applies to most modern drives, including
914DATs, 8mm helical scan drives, DLTs, etc.
915It may be advisable to use
e40c76c0
MK
916these drives in variable-block mode also in Linux (i.e., use
917.B MTSETBLK
918or
919.B MTSETDEFBLK
920at system startup to set the mode), at least when
c13182ef
MK
921exchanging data with a foreign system.
922The drawback of
fea681da
MK
923this is that a fairly large tape block size has to be used to get
924acceptable data transfer rates on the SCSI bus.
e40c76c0
MK
925.IP 2.
926Many programs (e.g.,
927.BR tar (1))
928allow the user to specify the blocking
c13182ef
MK
929factor on the command line.
930Note that this determines the physical block
e2af0daf 931size on tape only in variable-block mode.
e40c76c0
MK
932.IP 3.
933In order to use SCSI tape drives, the basic SCSI driver,
fea681da 934a SCSI-adapter driver and the SCSI tape driver must be either
c13182ef
MK
935configured into the kernel or loaded as modules.
936If the SCSI-tape
fea681da
MK
937driver is not present, the drive is recognized but the tape support
938described in this page is not available.
e40c76c0
MK
939.IP 4.
940The driver writes error messages to the console/log.
c13182ef 941The SENSE
fea681da
MK
942codes written into some messages are automatically translated to text
943if verbose SCSI messages are enabled in kernel configuration.
e40c76c0
MK
944.IP 5.
945The driver's internal buffering allows good throughput in fixed-block
c13182ef 946mode also with small
5e21af3a 947.BR read (2)
c13182ef 948and
5e21af3a 949.BR write (2)
c13182ef
MK
950byte counts.
951With direct transfers
e2af0daf
MK
952this is not possible and may cause a surprise when moving to the 2.6
953kernel.
954The solution is to tell the software to use larger transfers (often
955telling it to use larger blocks).
956If this is not possible, direct transfers can be disabled.
47297adb 957.SH SEE ALSO
e37e3282 958.BR mt (1)
fea681da 959.PP
cba04495
MK
960The file
961.I drivers/scsi/README.st
962or
963.I Documentation/scsi/st.txt
173fe7e7 964(kernel >= 2.6) in the Linux kernel source tree contains
e37e3282 965the most recent information about the driver and its configuration
173fe7e7 966possibilities