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