tail head cat sleep
QR code linking to this page

manページ  — SA

名称

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 SA (4) October 15, 1998

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

If you sat a monkey down in front of a keyboard, the first thing typed would be a unix command.
— Bill Lye