21e2510ac8
(Currently, update to RELENG_4 is not scheduled) Obtained from: jpman Project <manjp@jp.FreeBSD.org>
215 lines
7.6 KiB
Groff
215 lines
7.6 KiB
Groff
.\" Copyright (c) 1996
|
|
.\" Julian Elischer <julian@freebsd.org>. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\"
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" %Id: sa.4,v 1.12.2.1 1999/02/05 08:33:15 mjacob Exp %
|
|
.\" jpman %Id: sa.4,v 1.3 2000/08/10 13:47:43 horikawa Stab %
|
|
.\"
|
|
.Dd October 15, 1998
|
|
.Dt SA 4
|
|
.Os FreeBSD
|
|
.Sh 名称
|
|
.Nm sa
|
|
.Nd SCSI シーケンシャルアクセスデバイスドライバ
|
|
.Sh 書式
|
|
.Cd device sa0
|
|
.Cd device sa1 at scbus0 target 4 lun 0
|
|
.Sh 解説
|
|
.Nm sa
|
|
ドライバはサポートされている
|
|
.Tn SCSI
|
|
ホストアダプタを経由して、システムにアタッチされている
|
|
シーケンシャルなアクセスクラスのすべての
|
|
.Tn SCSI
|
|
デバイスへのサポートを提供します。
|
|
シーケンシャルアクセスクラスはテープなどのリニアなアクセスデバイスです。
|
|
.Pp
|
|
.Tn SCSI
|
|
ホストアダプタは
|
|
.Tn SCSI
|
|
シーケンシャルアクセスデバイスが設定される前に
|
|
別にシステムに設定されていなければなりません。
|
|
.Sh マウントセッション
|
|
.Nm
|
|
ドライバは、テープがマウントされてからアンマウントされるまでの
|
|
期間として定義される
|
|
.Dq Em マウントセッション
|
|
の概念に基づいています。マウントセッションの間にセットされた
|
|
任意のパラメータは、そのセッションの残り期間あるいは
|
|
テープが取り替えられるまで、有効になっています。
|
|
何からの方法でセッションをクローズすることで、
|
|
テープをアンマウントすることができます。
|
|
クローズする方法には次のようなものがあります。
|
|
.Bl -enum
|
|
.It
|
|
以下に示すサブモード 00 にしたがい `巻戻しデバイス' をクローズする。例えば
|
|
.Pa /dev/rsa0 。
|
|
.It
|
|
.Xr ioctl 2
|
|
の MTOFFL コマンドを使う。
|
|
.Xr mt 1
|
|
の
|
|
.Sq Cm offline
|
|
コマンドを利用することにより可能です。
|
|
.El
|
|
.Pp
|
|
テープデバイスは排他的にオープンされるデバイスであることに
|
|
注意すべきです。制御モードデバイスがオープンされている場合は例外で、
|
|
必要な時 (例えばパラメータをセットする時) に限り排他的な
|
|
アクセスをする必要があります。
|
|
.Sh サブモード
|
|
マイナー番号のビット 0 とビット 1 は
|
|
.Sq サブモード
|
|
として解釈されます。
|
|
サブモードの違いは、デバイスがクローズされた時の挙動にあります:
|
|
.Bl -tag -width XXXX
|
|
.It 00
|
|
クローズされるとデバイスを巻戻します; もしテープに書き込まれていたら、
|
|
巻戻しが要求される前にファイルマークが書き込まれます。デバイスは
|
|
アンマウントされます。
|
|
.It 01
|
|
クローズ後もテープがマウントされたままにします。
|
|
テープに書き込まれていたら、ファイルマークが書き込まれます。
|
|
それ以外にヘッドの移動は行なわれません。
|
|
さらに読み込んだり書き込んだりすると、最後に読み出された
|
|
り、あるいはファイルマークが書き込まれた後から直接行なわれます。
|
|
.It 10
|
|
クローズされるとデバイスを巻き戻します。もしテープに書き込まれて
|
|
いたら、巻き戻し要求の前にファイルマークが書き込まれます。
|
|
巻き戻しが完了すると、アンロードコマンドが発行されます。
|
|
デバイスはアンマウントされます。
|
|
.Sh ブロッキングモード
|
|
.Tn SCSI
|
|
テープは
|
|
.Sq Em 可変
|
|
あるいは
|
|
.Sq Em 固定
|
|
ブロックサイズモードで動くことができます。
|
|
ほとんどの
|
|
.Tn QIC
|
|
タイプのデバイスは固定ブロックサイズモードで動き、
|
|
ほとんどの 9 トラックテープと多くの新しいカートリッジフォーマットは
|
|
可変ブロックサイズを許容します。この二つの違いはつぎの通りです:
|
|
.Bl -inset
|
|
.It 可変ブロックサイズ:
|
|
デバイスへの書き込み毎に、単一の論理レコードがテープに書き込まれます。
|
|
レコードの
|
|
.Em 一部分
|
|
をテープから読み込んだり書き込んだりすることはできません
|
|
(たとえ大きなブロックを要求して小さなレコードを読んでもです);
|
|
複数のブロックを読み込むこともできません。
|
|
すなわち、1 回の書き込みによるデータは 1 回で読み込まれます。
|
|
ブロックサイズは、デバイスすなわち
|
|
.Tn SCSI
|
|
アダプタとシステムがサポートしている任意の値です。
|
|
(大抵は 1 バイトから 64K バイトの間で、もっと大きくなる場合もあります。)
|
|
.Pp
|
|
テープから可変長のレコードやブロックを読み込む時、
|
|
ヘッドは最後に読み込まれたアイテムの直後にあり、
|
|
次のアイテムの直前にあると考えられます。もし次のアイテムがファイルマークで、
|
|
まだ読まれていなかったとすると、読み込みですぐにそのファイルマークに
|
|
当たり、ファイル終端 (end-of-file) の通知を受けます。
|
|
.It 固定ブロックサイズ:
|
|
ユーザが書き込んだデータは固定サイズのブロックの連続としてテープに
|
|
渡されます。それはメモリ中で連続しているかもしれませんが、
|
|
独立したブロックの連続と考えられます。
|
|
ブロックサイズの正確な整数倍ではない量のデータを読み込む
|
|
ことはできません。異なるレコード集合として、同じデータを読み込んだり
|
|
書き込んだりすることはできます。
|
|
言い換えると、一緒に書き込まれたブロックを別々に読み込むことが
|
|
できますし、逆もまた可能です。
|
|
.Pp
|
|
ファイルの中に残っているものより多いブロックが要求されると、ドライブは
|
|
ファイルマークに遭遇するでしょう。返すべきデータが存在する
|
|
ので (ファイルマークより前にレコードが存在する限り)、
|
|
そのデータは返され、読み込みは成功します。
|
|
次の読み込みは直ちに 0 を返します。
|
|
(上のように、もしファイルマークが読まれないと、非巻き戻しモードの場合は
|
|
次の読み込み処理へ残ります)。
|
|
.El
|
|
.Sh ファイルマークの扱い
|
|
ファイルマークは自動的に扱われます。ユーザがテープに書き込み、
|
|
最後に書き込んでから読み込みをしなかった場合、デバイスをクローズ
|
|
する時にファイルマークがテープに書き込まれるでしょう。
|
|
書き込みの後に巻き戻し要求があると、ドライバはテープ上の最後のファイルが
|
|
書き込まれたと仮定し、テープに書き込まれた 2 つのファイルマークが存在
|
|
することを保証します。
|
|
これには例外があって、
|
|
ある種のテープは、実際には 2 つのファイルマークを書き込まず、
|
|
最後のファイルが読み込まれた時に `幻の' ファイルマークを報告するという
|
|
標準 (我々はこれに従いますが、どうしてそうするのか理解できません)
|
|
が存在するようです。
|
|
それらのデバイスには、QIC ファミリが含まれます。
|
|
(このデバイスは固定ブロックデバイスと同じかも
|
|
しれません。これはまだはっきりとしていませんが、現在ドライバは別の
|
|
振舞いとして扱っています。)
|
|
.Sh IOCTL
|
|
.Nm sa
|
|
ドライバは
|
|
.Xr mtio 4
|
|
のすべての ioctl をサポートしています。
|
|
.Sh ファイル
|
|
.Bl -tag -width /dev/[n][e]rsa[0-9] -compact
|
|
.It Pa /dev/[n][e]rsa[0-9]
|
|
一般的な形 :
|
|
.It Pa /dev/rsa0
|
|
クローズ時に巻き戻し
|
|
.It Pa /dev/nrsa0
|
|
クローズ時に巻き戻さない
|
|
.It Pa /dev/erst0
|
|
クローズ時にイジェクトする (可能なら)
|
|
.It Pa /dev/rsa0.ctl
|
|
制御モードデバイス (他のプログラムがそのデバイスにアクセスしている間に
|
|
状態を検査するなどのためのもの)
|
|
.Sh バグ
|
|
古いデバイスを扱うために必要な多くのハックが欠けています。
|
|
多くの古い
|
|
.Tn SCSI-1
|
|
デバイスは、このドライバでは正しく動かないでしょう。
|
|
.Pp
|
|
特別なデバイス名に結合された、高密度および圧縮モードのサポートを
|
|
加える必要があります。
|
|
.Pp
|
|
パーティションの利用による高速なインデックシングのサポートがありません。
|
|
.Sh 診断
|
|
ありません。
|
|
.Sh 関連項目
|
|
.Xr mt 1 ,
|
|
.Xr scsi 4 ,
|
|
.Xr sa 9
|
|
.Sh 歴史
|
|
.Nm sa
|
|
ドライバは
|
|
.Tn CAM
|
|
.Tn SCSI
|
|
サブシステムのために Justin T. Gibbs と Kenneth Merry が書きました。
|
|
Julian Elischer が書き、
|
|
.Tn Mach
|
|
2.5 から移植した
|
|
.Nm st
|
|
デバイスドライバからはたくさんのアイディアを得ています。
|
|
.sp
|
|
現在、記録を所有しているのは、
|
|
テープドライバを破壊してきたあまりにも長い年月を
|
|
犠牲にしている Matthew Jacob です。
|