OSDN Git Service

(split) LDP: Restore and add Copyrights for draft pages
[linuxjm/LDP_man-pages.git] / draft / man4 / st.4
1 .\" Copyright 1995 Robert K. Nichols (Robert.K.Nichols@att.com)
2 .\" Copyright 1999-2005 Kai Mäkisara (Kai.Makisara@kolumbus.fi)
3 .\"
4 .\" %%%LICENSE_START(VERBATIM)
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.
13 .\"
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.
21 .\"
22 .\" Formatted or processed versions of this manual, if unaccompanied by
23 .\" the source, must acknowledge the copyright and authors of this work.
24 .\" %%%LICENSE_END
25 .\"*******************************************************************
26 .\"
27 .\" This file was generated with po4a. Translate the source file.
28 .\"
29 .\"*******************************************************************
30 .\"
31 .\" Japanese Version Copyright (c) 1998 ISHIKAWA Mutsumi
32 .\"         all rights reserved.
33 .\" Translated Tue Feb 10 15:09:29 JST 1998
34 .\"     by ISHIKAWA Mutsumi <ishikawa@linux.or.jp>
35 .\" Updated Sun Mar 12 2000 by NAKANO Takeo <nakano@st.seikei.ac.jp>
36 .\" Updated Sun Apr 24 2005 by NAKANO Takeo <nakano@st.seikei.ac.jp
37 .\"
38 .TH ST 4 2010\-09\-04 Linux "Linux Programmer's Manual"
39 .SH 名前
40 st \- SCSI テープデバイス
41 .SH 書式
42 .nf
43 \fB#include <sys/mtio.h>\fP
44 .sp
45 \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIrequest\fP\fB [, (void *)\fP\fIarg3\fP\fB]);\fP
46 \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCTOP, (struct mtop *)\fP\fImt_cmd\fP\fB);\fP
47 \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCGET, (struct mtget *)\fP\fImt_status\fP\fB);\fP
48 \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCPOS, (struct mtpos *)\fP\fImt_pos\fP\fB);\fP
49 .fi
50 .SH 説明
51 \fBst\fP ドライバーは様々な SCSI テープデバイスのインターフェイスを提供する。 現在では、ドライバーは検出された全ての
52 \(lqシーケンシャルアクセス (sequential\-access) \(rq タイプのデバイスへの 制御を行う。 \fBst\fP
53 ドライバーはメジャーデバイス番号 9 を用いる。
54 .PP
55 それぞれのデバイスは 8 つのマイナーデバイス番号を使う。 マイナー番号の低位側の 5 ビットは、検出された順に割り当てられる。 カーネル 2.6
56 では、 低位側 8 ビットよりも上位にあるビット群がこの 5 ビットに連結 (concatenate)  され、テープ番号となる。
57 マイナー番号は、それぞれ 4 つの数字からなる二つのセットに グループ分けされる。 基本 (自動巻き戻し) デバイス番号 \fIn\fP、 および
58 \(lq非巻き戻し (no\-rewind) \(rq デバイス番号 (\fIn\fP + 128).  である。
59 基本デバイス番号を用いてオープンされたデバイスには、 クローズする時に \fBREWIND\fP コマンドが送られる。 \(lq非巻き戻し\(rq
60 デバイス番号を用いてオープンされた場合は \s-1REWIND\s+1 コマンドは送られない (自動巻き戻しデバイスをテープの位置決めに (例えば mt
61 で) 用いても、 望む結果は得られない。テープは mt コマンドの後で巻き戻され、 次のコマンドはテープの先頭から始まってしまう)。
62 .PP
63 それぞれのグループで、異なった特性 (ブロックサイズ・圧縮・ 密度など) のデバイスを定義するために 4 つのマイナー番号が利用できる。
64 システムが起動したときには、最初のデバイスだけが使える。 他の 3 つはデフォルトの特性が定義されて初めて使えるようになる (後述)。
65 (コンパイル時の定数を変更することによって、テープドライブの最大数と、 それぞれのドライブに割り当てられるマイナー番号の個数とを調整できる。
66 デフォルトの割り当てでは 32 台までのテープドライブを制御できる。 例えば 64 台までのテープドライブを、異なったオプションを持つ
67 二つのマイナー番号で制御するようにもできる。)
68 .PP
69 デバイスは普通次のように作られる:
70 .in +4n
71 .nf
72
73 mknod \-m 666 /dev/st0 c 9 0
74 mknod \-m 666 /dev/st0l c 9 32
75 mknod \-m 666 /dev/st0m c 9 64
76 mknod \-m 666 /dev/st0a c 9 96
77 mknod \-m 666 /dev/nst0 c 9 128
78 mknod \-m 666 /dev/nst0l c 9 160
79 mknod \-m 666 /dev/nst0m c 9 192
80 mknod \-m 666 /dev/nst0a c 9 224
81 .fi
82 .in
83 .PP
84 これらには対応するブロックデバイスは存在しない。
85 .PP
86 ドライバは内部バッファを使い、その大きさは少なくともテープの 1 ブロックを保持できるように取られる。 2.1.121 以前のカーネルでは、
87 バッファは連続する一つのブロックとして割り当てられる。この方法だと、 ブロックサイズの最大値はカーネルの割り当て可能な連続メモリブロックに
88 制限される。この制限は 32 ビットアーキテクチャでは 128 kB、 64 ビットアーキテクチャでは 256 kB である。これ以降のカーネルでは、
89 ドライバは必要に応じていくつかにわかれたバッファを割り当てる。 デフォルトでは 16 個までの部分に分割できる。すなわち
90 ブロックサイズの最大値は非常に大きい (128 kB のブロック 16 個の 割り当てに成功すれば 2 MB となる)。
91 .PP
92 ドライバの内部バッファのサイズはコンパイル時の定数で定義される。 これはカーネルの起動時オプションによって上書き可能である。
93 さらにドライバは実行時にも、必要に応じてより大きな一時バッファを 割り当てようとする。しかし実行時に大きな連続メモリブロックを
94 割り当てようとすると失敗することがあるので、 2.1.121 以前のカーネルでは、動的なバッファ割り当てはあまりあてにしないほうが良い (これは
95 kerneld や kmod によるドライバのデマンドロードに関しても当てはまる)。
96 .PP
97 ドライバはドライブのメーカやモデルを特定してサポートするわけではない。 システムが起動すると、テープデバイスのオプションがドライブの
98 ファームウェアによって定義される。例えば、 ドライブのファームウェアが固定長ブロックモードを選択すれば、
99 テープデバイスは固定長ブロックモードを使うことになる。このオプションは \fBioctl\fP(2)  コールを明示的に使えば変更でき、
100 その変更はデバイスがクローズされて再びオープンされたときも残る。 オプションの設定は、 自動巻き戻しデバイスと非巻き戻しデバイスの両方に影響する。
101 .PP
102 4 つのサブグループそれぞれのデバイスに対して異なるオプションを 与えることができる。オプションはデバイスがオープンされたときに
103 効力を発揮する。例えば、システム管理者はあるデバイスを 適当なブロックサイズの固定長ブロックモードで書き込むように定義し、
104 別のデバイスを可変長ブロックモードで書き込むようにできる (ドライブが 両方のモードをサポートしていれば)。
105 .PP
106 このドライバは、 \fBテープのパーティション\fP をサポートしている (ドライブがサポートしている場合)。
107 (テープのパーティションはディスクパーティションとはなんの関係もない。 パーティション化されたテープは、一つのメディアに複数の論理テープが
108 存在するかのように見える。)  パーティションのサポートは \fBioctl\fP(2)  によって有効にできる。 パーティションが変更されると、
109 テープの位置はそれぞれのパーティション内部で保存される。 パーティションの選択は \fBioctl\fP(2)  で行う。
110 それ以降のテープ操作の対象は、そのパーティションになる。 パーティションの切り替えは、次のテープ操作と同時に行われ、
111 不必要なテープ移動をしなくてすむようになっている。 一つのテープにおけるパーティションの最大数は コンパイル時の定数によって定義される (通常は 4)。
112 ドライバには、テープの 1 つまたは 2 つのパーティションをフォーマットできるような \fBioctl\fP(2)  が用意されている。
113 .PP
114 通常、システムのデフォルトのテープデバイスに対するハードリンク またはソフトリンクとして、デバイス \fI/dev/tape\fP が作成される。
115 .PP
116 カーネル 2.6.2 以降では、このドライバは sysfs ディレクトリ \fI/sys/class/scsi_tape\fP
117 に、アタッチしたデバイスとそのデバイスに割当てたパラメータをエクスポートする。
118 .SS データ転送
119 このドライバは固定長ブロックモードと可変長ブロックモードの 両方をサポートしている (ドライブがサポートしていれば)。
120 固定長ブロックモードでは、ドライブは決まったサイズのブロックを (複数個) 書き込む。このブロックサイズは write
121 システムコールのバイト数によらない。 可変長ブロックモードでは、 write コールごとに一つのテープブロックに書き込みが行われる。
122 したがってバイト数が対応するテープブロックのサイズを決める。 テープ上のブロックには、書き込みモードの情報は一切含まれない。
123 読み込みのときに重要なことは、テープのブロックサイズを受け入れる コマンドを使うかどうかだけである。
124 .PP
125 可変長ブロックモードでは、読み込みバイト数はテープのブロックサイズと 必ずしも一致していなくても良い。バイト数がテープの次のブロックよりも
126 大きければ、ドライバはそのデータを返し、関数は実際のブロックサイズを返す。 ブロックサイズがバイト数よりも大きければ、要求された分のデータが
127 ブロックの先頭から読み込まれて返され、ブロックの残りは破棄される。
128 .PP
129 固定長ブロックモードでは、バッファリングが有効になっていれば 読み込みバイト数は任意の大きさでよい。バッファリングが無効の場合は、
130 テープのブロックサイズの整数倍でなければならない。 2.1.121 以前の カーネルでは、バッファリングが有効な場合には
131 任意のバイト数の書き込みができる。その他の場合すべて (2.1.121 以前のカーネルでバッファが無効な場合と、新しいカーネルの場合)
132 では、書き込みバイト数はテープブロックサイズの整数倍でなければならない。
133 .PP
134 2.6 カーネルでは、このドライバはユーザバッファとデバイス間で、 データの直接転送 (direct transfer) を試みる。
135 これが不可能な場合は、ドライバの内部バッファを用いる。 直接転送ができない理由としては、ユーザバッファのアラインメントが適切でない (デフォルトは
136 512 バイトだが HBA ドライバによって変更されている可能性がある)、 ユーザバッファのページのどれかが SCSI アダプタから見えない、
137 などが考えられる。
138 .PP
139 テープをクローズする直前のテープ操作命令が書き込みであれば、 ファイルマークが自動的にテープへ書き込まれる。
140 .PP
141 読み込み時にファイルマークに出会うと、以下が実行される。 ファイルマークが見付かったときにバッファにデータが残っていると、
142 バッファのデータが返される。次の読み込み操作は 0 バイトを返す。 その次の読み込みは次のファイルからのデータを返す。
143 記録データの末尾は、読み込み操作が二回続けて 0 バイトを返して来るかたちで通知される。三回目の読み込みはエラーを返す。
144 .SS ioctl
145 ドライバは 3 つの \fBioctl\fP(2)  要求をサポートしている。 \fBst\fP ドライバによって認識されなかった要求は \fBSCSI\fP
146 ドライバにわたされる。 以下の定義は \fI/usr/include/linux/mtio.h\fP による。
147 .SS "MTIOCTOP \(em テープ操作の実行"
148 .PP
149 この要求は \fI(struct mtop\ *)\fP 型の引数をとる。全てのドライブが全ての操作をサポートしているわけではない。
150 ドライブが操作を拒否すると、ドライバは \fBEIO\fP エラーを返す。
151 .PP
152 .in +4n
153 .nf
154 /* Structure for MTIOCTOP \- mag tape op command: */
155 struct mtop {
156     short   mt_op;       /* operations defined below */
157     int     mt_count;    /* how many of them */
158 };
159 .fi
160 .in
161 .PP
162 通常のテープ利用のための磁気テープ操作:
163 .TP  14
164 \fBMTBSF\fP
165 \fImt_count\fP 個のファイルマーク (filemark) 分の後方スペース (backward space)。
166 .TP 
167 \fBMTBSFM\fP
168 \fImt_count\fP 個のファイルマーク分の後方スペース。 テープの位置を最後のファイルマークの EOT 側に変更する。
169 .TP 
170 \fBMTBSR\fP
171 \fImt_count\fP 個のレコード (テープブロック) 分の後方スペース。
172 .TP 
173 \fBMTBSS\fP
174 \fImt_count\fP 個のセットマーク分の後方スペース。
175 .TP 
176 \fBMTCOMPRESSION\fP
177 \fImt_count\fP が 0 以外なら、ドライブのデータ圧縮を有効にする。 0 なら圧縮を無効にする。このコマンドは MODE ページ 15
178 を用いる。 これはほとんどの DAT でサポートされている。
179 .TP 
180 \fBMTEOM\fP
181 (ファイルを追加するために) メディアの記録部分の最後まで進める。
182 .TP 
183 \fBMTERASE\fP
184 テープの内容を消去する。 2.6 カーネルでは、引数が 0 ならば short erase (テープが空だと印をつける)  を行う。それ以外の場合は
185 long erase (全体を消去する) を行う。
186 .TP 
187 \fBMTFSF\fP
188 \fImt_count\fP 個のファイルマーク分の前方スペース (forward space)。
189 .TP 
190 \fBMTFSFM\fP
191 \fImt_count\fP 個のファイルマーク分の前方スペース。 テープの位置は最後のファイルマークの BOT 側変更される。
192 .TP 
193 \fBMTFSR\fP
194 \fImt_count\fP 個のレコード (テープブロック) 分の前方スペース。
195 .TP 
196 \fBMTFSS\fP
197 \fImt_count\fP 個のセットマーク分の前方スペース。
198 .TP 
199 \fBMTLOAD\fP
200 SCSI ロードコマンドを実行する。 HP オートローダに限って利用できる。 \fImt_count\fP が定数
201 \fBMT_ST_HPLOADER_OFFSET\fP とある数値の和である場合、 その数値がドライブに送られ、オートローダの制御に用いられる。
202 .TP 
203 \fBMTLOCK\fP
204 テープドライブの扉をロックする。
205 .TP 
206 \fBMTMKPART\fP
207 テープを 1 または 2 パーティションにフォーマットする。 \fImt_count\fP が 0 でなければ、これが最初のパーティションのサイズを与え、
208 二番目のパーティションがテープの残りになる。 \fImt_count\fP が 0 の場合は、テープは一つのパーティションとしてフォーマットされる。
209 このコマンドは、パーティションのサポートが有効にされた ドライブでなければ使えない (以下の \fBMT_ST_CAN_PARTITIONS\fP を見よ)。
210 .TP 
211 \fBMTNOP\fP
212 何も操作を行わない。\(em副次的な効果として、ドライバーのバッファ をフラッシュする。 \fBMTIOCGET\fP
213 を使って状態を読み出す前にはこの操作を行うべきである。
214 .TP 
215 \fBMTOFFL\fP
216 巻き戻し (rewind) を行い、ドライブをオフライン (off line) にする。
217 .TP 
218 \fBMTRESET\fP
219 ドライブをリセットする。
220 .TP 
221 \fBMTRETEN\fP
222 テープをリテンション (re\-tension) する (テープを最後まで巻いた後、最初まで巻き戻す)。
223 .TP 
224 \fBMTREW\fP
225 巻き戻し。
226 .TP 
227 \fBMTSEEK\fP
228 \fImt_count\fP で指定されたテープブロック番号をシークする。 この操作が行えるのは、 \s-1LOCATE\s+1 コマンド
229 (デバイス固有のアドレス)  をサポートする SCSI\-2 ドライブか、あるいは Tandberg 互換の SCSI\-1 ドライブ (Tandberg,
230 Archive, Viper, Wangtek,…) である。 デバイス固有のアドレスが利用されている場合は、ブロック番号は 以前に
231 \s-1MTIOCPOS\s+1 によって返されたものにすべきである。
232 .TP 
233 \fBMTSETBLK\fP
234 \fImt_count\fP の値をドライブのブロック長 (block length) としてセットする。 ブロック長を 0
235 にするとドライブは可変長ブロックサイズモードにセッ トされる。
236 .TP 
237 \fBMTSETDENSITY\fP
238 テープ密度 (tape density) を \fImt_count\fP で示されるコードに変更する。ドライブでサポートされている密度コード
239 については、ドライブの文書に書いてあるだろう。
240 .TP 
241 \fBMTSETPART\fP
242 アクティブなパーティションを第 \fImt_count\fP 番目に切り替える。パーティションは 0 から数える。
243 このコマンドは、パーティションのサポートが有効にされた ドライブでなければ使えない (以下の \fBMT_ST_CAN_PARTITIONS\fP を見よ)。
244 .TP 
245 \fBMTUNLOAD\fP
246 SCSI unload コマンドを実行する (テープのイジェクトは行わない)。
247 .TP 
248 \fBMTUNLOCK\fP
249 テープドライブの扉のロックを解除する。
250 .TP 
251 \fBMTWEOF\fP
252 \fImt_count\fP 個のファイルマークを書き込む。
253 .TP 
254 \fBMTWSM\fP
255 \fImt_count\fP 個のセットマークを書き込む。
256 .PP
257 デバイスオプションの設定のための (スーパーユーザによる) 磁気テープ操作:
258 .TP  8
259 \fBMTSETDRVBUFFER\fP
260 いろいろなドライブとドライバーのオプションを \fImt_count\fP にエンコードされた各ビットに従って設定する。
261 オプションには、ドライブのバッファリングモード、 ブール値のドライバオプションの集合、 バッファの書き込み閾値 (デフォルトはブロックサイズと密度)、
262 タイムアウト値が含まれる (カーネル 2.1 以降)。 一回の操作で変えられるのは、上記のリストのどれか一つだけである
263 (複数のブール値はまとめて一つと勘定される)。
264 .IP
265 高位の4ビットがゼロである値は、 ドライブのバッファリングモードの設定に使われる。 バッファリングモードは以下の通り:
266 .RS 12
267 .IP 0 4
268 ドライブはライトコマンドに対し、 データブロックが実際に媒体に書き込まれるまで \fBGOOD\fP のステータスを返さない。
269 .IP 1
270 ドライブはライトコマンドに対し、 すべてのデータがドライブの内部バッファに転送されるとすぐに、 \fBGOOD\fP のステータスを返すことができる。
271 .IP 2
272 ライトコマンドに対し、以下の 2 つの条件がそろった場合、 ドライブはすぐに \fBGOOD\fP ステータスを返す事ができる。 (a)
273 すべてのデータがドライブの内部バッファに転送された。 (b) 別々のイニシエーターから来たバッファデータが、 すべて媒体へ問題なく書き込まれた。
274 .RE
275 .IP
276 書き込み閾値を制御するには、 \fImt_count\fP には、定数 \fBMT_ST_WRITE_THRESHOLD\fP とブロックカウントのビット毎の OR
277 をとった値を 下位の 28ビットに含まねばならない。 このブロックカウントは 1024 バイトブロックを単位としたもので、
278 テープの物理ブロックサイズを単位としたものではない。 また、閾値はドライバの内部バッファ (上記の説明参照)  のサイズを越える事はできない。
279 .IP
280 ブール値のフラグを設定・解除するには、 \fImt_count\fP の値は \fBMT_ST_BOOLEANS\fP, \fBMT_ST_SETBOOLEANS\fP,
281 \fBMT_ST_CLEARBOOLEANS\fP, \fBMT_ST_DEFBOOLEANS\fP
282 のいずれか一つの値に、以下のオプションの任意の組み合わせに対して ビット毎の OR を取ったものを指定する。
283 \fBMT_ST_BOOLEANS\fPを用いると、 オプションを対応するビットに対して定義されている値に設定できる。
284 \fBMT_ST_SETBOOLEANS\fPを用いると、 オプションは選択的に設定され、 \fBMT_ST_DEFBOOLEANS\fPを用いると
285 選択的に解除される。
286 .IP ""
287 テープデバイスのデフォルトのオプションは \fBMT_ST_DEFBOOLEANS\fP によって設定される。 アクティブでないテープデバイス (例:
288 マイナー番号 が 32 や 160 のデバイス)  は、それらに対するデフォルトのオプションが最初に定義されたときに
289 アクティブになる。アクティブにされたデバイスは、 起動時にアクティブにされたデバイスから、 明示的に指定されなかったオプションを継承する。
290 .IP ""
291 ブール値のオプションは以下の通り:
292 .RS
293 .TP 
294 \fBMT_ST_BUFFER_WRITES\fP (デフォルト: 真)
295 固定長ブロックモードにおけるすべての書き込み操作をバッファリングする。 このオプションが偽であり、かつドライブが固定長ブロックサイズの時は、
296 すべての書き込み操作はブロックサイズの倍数の大きさで行わなければならない。 信頼性のあるマルチボリュームアーカイブを書き込むためには、
297 このオプションは偽に設定されていなければならない。
298 .TP 
299 \fBMT_ST_ASYNC_WRITES\fP (デフォルト: 真)
300 このオプションが真の時には、データがドライバのバッファに収まる時には データがドライブに転送されるのを待たずに、すぐに書き込み操作が返って来る。
301 バッファがどのくらい空いたら次の SCSI write コマンドを発行できるかは、 書き込み閾値によって決まる。
302 ドライブが返すすべてのエラーは、次の操作まで保存される。 信頼性のあるマルチボリュームアーカイブを書き込むためには、
303 このオプションは偽に設定されていなければならない。
304 .TP 
305 \fBMT_ST_READ_AHEAD\fP (デフォルト: 真)
306 このオプションを指定すると、 ドライバは固定長ブロックモードで読み込みバッファリングと先読みをするようになる。
307 このオプションが偽であり、かつドライブが固定長ブロックサイズの時は、 すべての読み込み操作はブロックサイズの倍数の大きさで行わなければならない。
308 .TP 
309 \fBMT_ST_TWO_FM\fP (デフォルト: 偽)
310 このオプションはファイルがクローズされた時のドライバーの振舞いを変更する。 一つのファイルマークを書き込むのが通常の動作である。
311 このオプションが真の時には、 ドライバーは 2 つのファイルマークを書き込んで、 2 つめのファイルマークのところに戻る。
312 .IP
313 注意: QICテープドライブはファイルマークに上書きすることができないので、 このオプションを真にしてはならない。
314 これらのドライブは記録データの末尾の検知に、 ファイルマークが 2つ続けてあるかではなく、 ブランクテープかどうかのテストを用いる。
315 現在の他のほとんどのドライブも、記録データの末尾を検知する。 2 つのファイルマークが必要になるのは、 他のシステムとテープをやりとりする場合である。
316 .TP 
317 \fBMT_ST_DEBUGGING\fP (デフォルト: 偽)
318 このオプションを真にすると、 ドライバはいろいろなデバッグ用メッセージを出すようになる (\fBDEBUG\fP
319 を非ゼロに定義してドライバをコンパイルしている時のみ有効)。
320 .TP 
321 \fBMT_ST_FAST_EOM\fP (デフォルト: 偽)
322 このオプションを真にすると、 \fBMTEOM\fP 操作が直接ドライブに送られるようになる。 操作が早くなるはずだが、
323 ドライバが現在のファイル番号を見失うことになる (これは通常なら \fBMTIOCGET\fP リクエストによって返される)。
324 \fBMT_ST_FAST_EOM\fP が偽の時には、ドライバは \fBMTEOM\fP リクエストに応えるとき、前方にファイルを一つ一つ進めていく。
325 .TP 
326 \fBMT_ST_AUTO_LOCK\fP (デフォルト: 偽)
327 このオプションが真の時には、 デバイスがオープンされるとドライブの扉がロックされ、 クローズされるとアンロックされる。
328 .TP 
329 \fBMT_ST_DEF_WRITES\fP (デフォルト: 偽)
330 テープオプション (ブロックサイズ、モード、圧縮など)  があるドライブにリンクされたデバイスで変更されると、
331 その同じドライブにリンクされた他のデバイスでも変更されることがある (そのデバイスの定義による)。このオプションは、 ドライバによる変更をいつ SCSI
332 コマンドによって反映させるかと、 ドライブの自動検知機能がいつ信頼して良いのかを定義する。 このオプションを偽にしておくと、
333 デバイスの変更があるとドライバはすぐに SCSI コマンドを送る。 真にしておくと、 SCSI コマンドは書き込みが要求されるまで送られない。
334 後者の場合は、読み込みの際にドライブのファームウェアによって テープ構造の検知が行える。また SCSI コマンドは、
335 テープが正しい指定に沿って書き込まれているかどうかの 確認のためだけに用いられる。
336 .TP 
337 \fBMT_ST_CAN_BSR\fP (デフォルト: 偽)
338 先読みを使うと、テープをクローズするときに、 場合によってはテープを正しい位置に逆戻ししなければならないことがある。
339 これには、レコードを越えて逆戻しする SCSI コマンドが用いられる。 古いドライブでは、このコマンド処理の信頼性が低いことがあるが、
340 このオプションを指定すると、 ドライバにこのコマンドの利用を禁止することができる。 先読みと固定長ブロックモードを用いていると、最終的な結果として、
341 デバイスのクローズ時にテープが正しい位置にならないことがある。 2.6 カーネルでは、SCSI\-3 をサポートしているドライブに対して、
342 この値のデフォルトは真となる。
343 .TP 
344 \fBMT_ST_NO_BLKLIMS\fP (デフォルト: 偽)
345 ドライブによっては \fBREAD BLOCK LIMITS SCSI\fP コマンドを受けつけないことがある。
346 このオプションを用いると、ドライバはこのコマンドを用いない。 欠点は、指定したブロックサイズがドライブに受理されてしまうと、
347 ドライバのコマンド送信前チェックができなくなる点である。
348 .TP 
349 \fBMT_ST_CAN_PARTITIONS\fP (デフォルト: 偽)
350 このオプションは、一つのテープに複数パーティションを置くことを サポートするかどうかを決める。
351 このオプションはドライブにリンクされた全てのデバイスに適用される。
352 .TP 
353 このオプションは、
354 seek および tell 操作 (両者とも \fBMTSEEK\fP・\fBMTIOCPOS\fP コマンドを伴い、テープ位置を変更するとき) の際に、
355 SCSI\-2 の標準で定義されている論理ブロックアドレスを用いるかどうかを ドライバに伝える。 偽だとデバイス固有のアドレスが用いられる。
356 ドライブが論理アドレスをサポートしているときは、 このオプションをセットすることを強く勧める。 このモードではファイルマークもカウントするからである。
357 論理ブロックアドレスしかサポートしないドライブもいくつか存在している。
358 .TP 
359 \fBMT_ST_SYSV\fP (デフォルト: 偽)
360 このオプションが真になっていると、テープデバイスは SystemV のルールを用いる。偽だと BSD のルールを用いる。
361 これらのルール間の最も大きな違いは、読み込みを行っていた デバイスがクローズされたときの振舞いである。 System V
362 のルールでは、テープは次のファイルマークを越えて移動する (デバイスの利用時にこれが行われなかった場合)。 BSD
363 のルールではテープ位置は変更されない。
364 .TP 
365 \fBMT_NO_WAIT\fP (デフォルト: 偽)
366 即時モード (immediate mode; コマンドの終了を待たない)  を、ある種のコマンド (rewind など) に対して有効にする。
367 .PP
368 例:
369 .in +4n
370 .nf
371
372 struct mtop mt_cmd;
373 mt_cmd.mt_op = MTSETDRVBUFFER;
374 mt_cmd.mt_count = MT_ST_BOOLEANS |
375         MT_ST_BUFFER_WRITES | MT_ST_ASYNC_WRITES;
376 ioctl(fd, MTIOCTOP, mt_cmd);
377 .fi
378 .in
379 .RE
380 .IP ""
381 デバイスのデフォルトのブロックサイズは \fBMT_ST_DEF_BLKSIZE\fP によって設定でき、デフォルトの密度コードは
382 \fBMT_ST_DEFDENSITY\fP によって設定できる。 これらのパラメータの値は操作コードと OR して与える。
383 .IP ""
384 2.1.x 以降のカーネルでは、タイムアウト値の設定は、 サブコマンド \fBMT_ST_SET_TIMEOUT\fP に秒単位のタイムアウト値を OR
385 して与えることによって行える。 long タイムアウト (巻き戻しなど、長い時間がかかるコマンドに対して用いられる) は
386 \fBMT_ST_SET_LONG_TIMEOUT\fP で設定できる。 カーネルのデフォルトは非常に長く、どのドライブでも
387 成功しているコマンドが決してタイムアウトしないようになっている。 したがって、ドライバはタイムアウトを待っているだけなのに、 刺さった (stuck
388 した) ように見えることがある。これらのコマンドを使えば、 特定のドライブに対してもう少し実際的な値に設定することができる。
389 一つのデバイスに設定したタイムアウト値は、 それと同じドライブにリンクした全てのデバイスに適用される。
390 .IP ""
391 2.4.19 および 2.5.43 以降のカーネルでは、 このドライバはドライブのクリーニングが必要かどうかを示す 状態ビットをサポートする。
392 ドライブがクリーニング情報を返させるかどうかは、 \fBMT_ST_SEL_CLN\fP サブコマンドによって設定できる。 この値が 0
393 だと、クリーニングビットは常に 0 となる。 値を 1 にすると、SCSI\-3 標準で規定されている TapeAlert データが用いられる
394 (まだ実装されていない)  値としては 2 から 17 が予約されている。 低位側の 8 ビットが 18 以上だと、拡張状態データ (extended
395 sense data)  が用いられる。第 9\-16 ビットは注目すべきビットを選択するためのマスクを指定し、 第 17\-23
396 ビットは探すべきビットパターンを指定する。 このビットパターンが 0 のときは、 マスク下のビット (群) がクリーニング要求を示す。パターンが 0
397 でなければ、 このパターンがマスク後の状態データバイトにマッチしなければならない。
398 .SS "MTIOCGET \(em ステータスの取得"
399 .PP
400 このリクエストは \fI(struct mtget\ *)\fP という型の引数をとる。
401 .PP
402 .in +4n
403 .nf
404 /* structure for MTIOCGET \- mag tape get status command */
405 struct mtget {
406     long     mt_type;
407     long     mt_resid;
408     /* the following registers are device dependent */
409     long     mt_dsreg;
410     long     mt_gstat;
411     long     mt_erreg;
412     /* The next two fields are not always used */
413     daddr_t  mt_fileno;
414     daddr_t  mt_blkno;
415 };
416 .fi
417 .in
418 .IP \fImt_type\fP 11
419 ヘッダファイル中には多くの \fImt_type\fP の値が定義されているが、現行のドライバは汎用のタイプである \fBMT_ISSCSI1\fP (汎用
420 SCSI\-1 テープ) および \fBMT_ISSCSI2\fP (汎用 SCSI\-2 テープ) のみを返す。
421 .IP \fImt_resid\fP
422 現在のテープ位置番号。
423 .IP \fImt_dsreg\fP
424 ドライブのブロックサイズと密度の現在の設定を報告する (下位 24 ビットがブロックサイズ、上位 8 ビットが密度)。 これらのフィールドは、
425 \fBMT_ST_BLKSIZE_SHIFT\fP, \fBMT_ST_BLKSIZE_MASK\fP, \fBMT_ST_DENSITY_SHIFT\fP,
426 \fBMT_ST_DENSITY_MASK\fP で定義されている。
427 .IP \fImt_gstat\fP
428 汎用の (デバイスに依存しない) ステータスを報告する。 これらのステータスビットをテストするためのマクロが ヘッダファイルで定義されている。
429 .RS
430 .HP 4
431 \fBGMT_EOF\fP(\fIx\fP): テープはファイルマークの直後に位置している。 (\fBMTSEEK\fP 操作の後では常に偽)
432 .HP
433 \fBGMT_BOT\fP(\fIx\fP): テープは最初のファイルの先頭に位置している。 (\fBMTSEEK\fP 操作の後では常に偽)
434 .HP
435 \fBGMT_EOT\fP(\fIx\fP): テープ操作はテープの物理的な終点に達した。
436 .HP
437 \s-1GMT_SM(\s+1\fIx\fP\s-1)\s+1: テープは現在セットマークに位置している。 (\fBMTSEEK\fP 操作の後では常に偽)
438 .HP
439 \fBGMT_EOD\fP(\fIx\fP): テープは記録データの末尾に位置している。
440 .HP
441 \fBGMT_WR_PROT\fP(\fIx\fP): ドライブはライトプロテクトされている。 これはドライブによっては、
442 ドライブが現在のメディアタイプへの書き込みを サポートしていない事を意味する場合もある。
443 .HP
444 \fBGMT_ONLINE\fP(\fIx\fP): もっとも最近の \fBopen\fP(2)  が、テープが入っていて操作の準備ができているドライブを検知した。
445 .HP
446 \fBGMT_D_6250\fP(\fIx\fP), \fBGMT_D_1600\fP(\fIx\fP), \fBGMT_D_800\fP(\fIx\fP):
447 この「汎用」のステータス情報は、 9\-トラック \(12" テープドライブの場合にのみ、 現在の密度の設定を報告する。
448 .HP
449 \fBGMT_DR_OPEN\fP(\fIx\fP): ドライブにテープが入っていない。
450 .HP
451 \fBGMT_IM_REP_EN\fP(\fIx\fP): 即時報告モード。 write コールが戻ったとき、
452 テープに対して物理的な書き込みが行われたかどうかを保証できない場合に、 このビットがセットされる。ドライバがデータをバッファリングせず、
453 ドライブもデータをバッファリングしない場合に限って、 この値は 0 にセットされる。
454 .HP
455 \fBGMT_CLN\fP(\fIx\fP): ドライブがクリーニングを要求している。 カーネル 2.4.19 および 2.5.43 以降で実装された。
456 .RE
457 .IP \fImt_erreg\fP
458 \fImt_erreg\fP で定義されているフィールドは一つだけで、 下位の 16 ビットがエラーをリカバーした回数である
459 (\fBMT_ST_SOFTERR_SHIFT\fP と \fBMT_ST_SOFTERR_MASK\fP で定義されている)。
460 ドライブの報告するエラーリカバー数と矛盾することがあるので、 この数はほとんどの場合維持されない
461 (ほとんどのドライブでは、デフォルトではソフトエラーを報告しない。 しかしこれは SCSI MODE SELECT コマンドによって変更できる)。
462 .IP \fImt_fileno\fP
463 (ゼロから数えた) 現在のファイル番号を報告する。 ファイル番号がわからない時 (例えば \fBMTBSS\fP や \fBMTSEEK\fP の後など) には
464 \-1 にセットされる。
465 .IP \fImt_blkno\fP
466 現在のファイル中の(ゼロから数えた)ブロック番号を報告する。 ブロック番号がわからない時 (例えば \fBMTBSF\fP, \fBMTBSS\fP,
467 \fBMTSEEK\fP の後など) には \-1 にセットされる。
468 .SS "MTIOCPOS \(em テープ位置の取得"
469 .PP
470 このリクエストは \fI(struct mtpos\ *)\fP 型の引数をとり、ドライブが保持している現在のテープブロック番号を報告する。 これは、
471 \fBMTIOCGET\fP により返される \fImt_blkno\fP と同じではない。 ドライブは \fBREAD POSITION\fP コマンド
472 (デバイス固有アドレス)  をサポートする SCSI\-2ドライブか、 Tandberg 互換の SCSI\-1 ドライブ (Tandberg,
473 Archive, Viper, Wangtek, ... ) でなければならない。
474 .PP
475 .in +4n
476 .nf
477 /* structure for MTIOCPOS \- mag tape get position command */
478 struct mtpos {
479     long mt_blkno;    /* current block number */
480 };
481 .fi
482 .in
483 .SH 返り値
484 .TP  14
485 .TP 
486 \fBEACCES\fP
487 書き込み保護されているテープに書き込みまたは消去を行おうとした。 (このエラーは \fBopen\fP(2)  中には検知されない。)
488 .TP 
489 \fBEBUSY\fP
490 デバイスがすでに使われているか、 ドライバがバッファを割当てられなかった。
491 .TP 
492 \fBEFAULT\fP
493 コマンドの引数が、 呼びだしプロセスに属していないメモリ位置を指している。
494 .TP 
495 \fBEINVAL\fP
496 \fBioctl\fP(2)  の引数が不正であるか、要求したブロックサイズが不正。
497 .TP 
498 \fBEIO 14\fP
499 要求された操作が最後まで行えなかった。
500 .TP 
501 \fBENOMEM\fP
502 \fBread\fP(2)  のバイト数が、テープにある次の物理ブロックより小さい (2.2.18 および 2.4.0\-test6
503 以前では、黙って余分のバイトを無視していた)。
504 .TP 
505 \fBENOSPC\fP
506 メディアの終点に達したため、書き込み操作が完了しなかった。
507 .TP 
508 \fBENOSYS\fP
509 不明な \fBioctl\fP(2)。
510 .TP 
511 \fBENXIO\fP
512 オープンする時にテープデバイスが存在しなかった。
513 .TP 
514 \fBEOVERFLOW\fP
515 ドライバの内部バッファより大きいサイズの可変長ブロックを 読み書きしようとした。
516 .TP 
517 \fBEROFS\fP
518 ドライブに入っているテープがライトプロテクトされている場合に、 \fBO_WRONLY\fP または \fBO_RDWR\fP で open を行おうとした。
519 .SH ファイル
520 .TP  12
521 \fI/dev/st*\fP
522 自動巻き戻しの SCSI テープデバイス。
523 .TP  12
524 \fI/dev/nst*\fP
525 .\" .SH AUTHOR
526 .\" The driver has been written by Kai M\(:akisara (Kai.Makisara@metla.fi)
527 .\" starting from a driver written by Dwayne Forsyth.
528 .\" Several other
529 .\" people have also contributed to the driver.
530 巻き戻しをしない SCSI テープデバイス。
531 .SH 注意
532 .IP 1. 4
533 異なるシステムでデータを相互にやりとりする場合、 両方のシステムで物理的なテープブロックサイズを一致させる必要がある。
534 起動直後のドライブのパラメータは、大多数の OS がそのデバイスに対して 用いている値と異なっていることもよくある。多くのシステムは、
535 ドライブが対応していれば可変長ブロックモードを用いる。 DAT、 8mm ヘリカルスキャンドライブ、 DLT などの最近のドライブの
536 ほとんどは可変長ブロックモードに対応しているから。 これらのドライブは (少なくとも他のシステムとのデータ交換が ある場合は)、 Linux
537 でも可変長ブロックモードで使うほうが 良いかもしれない (つまりシステムの起動時のモード設定に \fBMTSETBLK\fP または
538 \fBMTSETDEFBLK\fP を用いる)。 欠点としては、比較的大きなテープブロックサイズを用いなければ、 SCSI
539 バス上で満足のいく転送速度が得られないことである。
540 .IP 2.
541 多くのプログラム (\fBtar\fP(1)  など) では、 コマンドラインからユーザがブロック関連の値を指定できる。
542 この値によってテープ上の物理的なブロックサイズを決定できるのは、 可変長ブロックモードに限られることに注意。
543 .IP 3.
544 SCSI テープドライブを用いるには、基本の SCSI ドライバ、 SCSI アダプタのドライバ、 SCSI テープドライバのすべてが
545 カーネルに組み込まれているか、あるいはモジュールとしてロードされている 必要がある。 SCSI テープドライバがないと、 ドライブは認識されるが、
546 このページで記述されているテープのサポートは利用できない。
547 .IP 4.
548 ドライバはエラーメッセージをコンソールとログとに書き出す。 カーネル設定で verbose SCSI messages が有効にされていると、
549 SENSE コードが自動的にテキストに変換されて、 いくつかのメッセージに書きだされる。
550 .IP 5.
551 .\" .SH COPYRIGHT
552 .\" Copyright \(co 1995 Robert K. Nichols.
553 .\" .br
554 .\" Copyright \(co 1999-2005 Kai M\(:akisara.
555 .\" .PP
556 .\" %%%LICENSE_START(VERBATIM)
557 .\" Permission is granted to make and distribute verbatim copies of this
558 .\" manual provided the copyright notice and this permission notice are
559 .\" preserved on all copies.
560 .\" Additional permissions are contained in the header of the source file.
561 このドライバの内部バッファリングは、固定ブロックモードなら \fBread\fP(2)  や \fBwrite\fP(2)
562 のバイト数が小さくても良いスループットを出す。 直接転送ではこれは不可能なので、2.6 カーネルに移行したときに驚くかもしれない。
563 解決法としては、ソフトウェアにより大きな転送を行うよう伝える (たいていはより大きなブロックを使わせる) ことである。
564 これが不可能なら、直接転送を無効にすることもできる。
565 .SH 関連項目
566 \fBmt\fP(1)
567 .PP
568 Linux カーネルソースの \fIdrivers/scsi/README.st\fP や \fIDocumentation/scsi/st.txt\fP
569 (カーネル 2.6 以降) の各ファイルには、 ドライバに関するより新しい情報や、 その設定可能な範囲に関する内容が含まれている。
570 .SH この文書について
571 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
572 である。プロジェクトの説明とバグ報告に関する情報は
573 http://www.kernel.org/doc/man\-pages/ に書かれている。