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