スポンサーリンク

SA(4) FreeBSD カーネルインタフェースマニュアル SA(4)

名称

sa − SCSI シーケンシャルアクセスデバイスドライバ

書式

device sa0

device sa1 at scbus0 target 4 lun 0

解説

sa ドライバはサポートされている SCSI ホストアダプタを経由して、システムに アタッチされているシーケンシャルなアクセスクラスのすべての SCSI デバイス へのサポートを提供します。シーケンシャルアクセスクラスはテープなどのリニ アなアクセスデバイスです。

SCSI ホストアダプタは SCSI シーケンシャルアクセスデバイスが設定される前に 別にシステムに設定されていなければなりません。

マウントセッション

sa ドライバは、テープがマウントされてからアンマウントされるまでの期間とし て定義される ‘‘マウントセッション’’ の概念に基づいています。マウントセッ ションの間にセットされた任意のパラメータは、そのセッションの残り期間ある いはテープが取り替えられるまで、有効になっています。何からの方法でセッ ションをクローズすることで、テープをアンマウントすることができます。ク ローズする方法には次のようなものがあります。

       1. 以下に示すサブモード 00 にしたがい ‘巻戻しデバイス’ をクローズする。例えば /dev/rsa0

2. ioctl(2) の MTOFFL コマンドを使う。 mt(1) の ‘offline’ コマンドを利 用することにより可能です。

テープデバイスは排他的にオープンされるデバイスであることに注意すべきで す。制御モードデバイスがオープンされている場合は例外で、必要な時 (例えば パラメータをセットする時) に限り排他的なアクセスをする必要があります。

サブモード

マイナー番号のビット 0 とビット 1 は ‘サブモード’ として解釈されます。サ ブモードの違いは、デバイスがクローズされた時の挙動にあります:

       00

クローズされるとデバイスを巻戻します; もしテープに書き込まれていた ら、巻戻しが要求される前にファイルマークが書き込まれます。デバイス はアンマウントされます。

01
クローズ後もテープがマウントされたままにします。テープに書き込まれ ていたら、ファイルマークが書き込まれます。それ以外にヘッドの移動は 行なわれません。さらに読み込んだり書き込んだりすると、最後に読み出 されたり、あるいはファイルマークが書き込まれた後から直接行なわれま す。

10
クローズされるとデバイスを巻き戻します。もしテープに書き込まれてい たら、巻き戻し要求の前にファイルマークが書き込まれます。巻き戻しが 完了すると、アンロードコマンドが発行されます。デバイスはアンマウン トされます。

ブロッキングモード

SCSI テープは ‘可変’ あるいは ‘固定’ ブロックサイズモードで動くことができ ます。ほとんどの QIC タイプのデバイスは固定ブロックサイズモードで動き、ほ とんどの 9 トラックテープと多くの新しいカートリッジフォーマットは可変ブ ロックサイズを許容します。この二つの違いはつぎの通りです:

       可変ブロックサイズ: デバイスへの書き込み毎に、単一の論理レコードがテープに書き込まれます。レコードの 一部分をテープから読み込んだり書き込んだりすることはできません (たとえ大きなブロックを要求して小さなレコードを読んでもです); 複数のブロックを読み込むこともできません。すなわち、1 回の書き込みによるデータは 1 回で読み込まれます。ブロックサイズは、デバイスすなわち SCSI アダプタとシステムがサポートしている任意の値です。 (大抵は 1 バイトから 64K バイトの間で、もっと大きくなる場合もあります。)
テープから可変長のレコードやブロックを読み込む時、ヘッドは最後に読み込まれたアイテムの直後にあり、次のアイテムの直前にあると考えられます。もし次のアイテムがファイルマークで、まだ読まれていなかったとすると、読み込みですぐにそのファイルマークに当たり、ファイル終端 (end-of-file) の通知を受けます。
       固定ブロックサイズ:ユーザが書き込んだデータは固定サイズのブロックの連続としてテープに渡されます。それはメモリ中で連続しているかもしれませんが、独立したブロックの連続と考えられます。ブロックサイズの正確な整数倍ではない量のデータを読み込むことはできません。異なるレコード集合として、同じデータを読み込んだり書き込んだりすることはできます。言い換えると、一緒に書き込まれたブロックを別々に読み込むことができますし、逆もまた可能です。
ファイルの中に残っているものより多いブロックが要求されると、ドライブはファイルマークに遭遇するでしょう。返すべきデータが存在するので (ファイルマークより前にレコードが存在する限り)、そのデータは返され、読み込みは成功します。次の読み込みは直ちに 0 を返します。 (上のように、もしファイルマークが読まれないと、非巻き戻しモードの場合は次の読み込み処理へ残ります)。

ファイルマークの扱い

ファイルマークは自動的に扱われます。ユーザがテープに書き込み、最後に書き 込んでから読み込みをしなかった場合、デバイスをクローズする時にファイル マークがテープに書き込まれるでしょう。書き込みの後に巻き戻し要求がある と、ドライバはテープ上の最後のファイルが書き込まれたと仮定し、テープに書 き込まれた 2 つのファイルマークが存在することを保証します。これには例外が あって、ある種のテープは、実際には 2 つのファイルマークを書き込まず、最後 のファイルが読み込まれた時に ‘幻の’ ファイルマークを報告するという標準 ( 我々はこれに従いますが、どうしてそうするのか理解できません) が存在するよ うです。それらのデバイスには、QIC ファミリが含まれます。 (このデバイスは 固定ブロックデバイスと同じかもしれません。これはまだはっきりとしていませ んが、現在ドライバは別の振舞いとして扱っています。)

IOCTL

sa ドライバは mtio(4) のすべての ioctl をサポートしています。

ファイル

       /dev/[n][e]rsa[0-9]

一般的な形 :
/dev/rsa0

クローズ時に巻き戻し
/dev/nrsa0

クローズ時に巻き戻さない
/dev/erst0

クローズ時にイジェクトする (可能なら)
/dev/rsa0.ctl

制御モードデバイス (他のプログラムがそのデバイスにア クセスしている間に状態を検査するなどのためのもの)

バグ

古いデバイスを扱うために必要な多くのハックが欠けています。多くの古い SCSI-1 デバイスは、このドライバでは正しく動かないでしょう。

特別なデバイス名に結合された、高密度および圧縮モードのサポートを加える必 要があります。

パーティションの利用による高速なインデックシングのサポートがありません。

診断

ありません。

関連項目

mt(1), scsi(4), sa(9)

歴史

sa ドライバは CAM SCSI サブシステムのために Justin T. Gibbs と Kenneth Merry が書きました。 Julian Elischer が書き、 Mach 2.5 から移植した st デ バイスドライバからはたくさんのアイディアを得ています。

現在、記録を所有しているのは、テープドライバを破壊してきたあまりにも長い 年月を犠牲にしている Matthew Jacob です。

FreeBSD October 15, 1998 FreeBSD

スポンサーリンク