磁気テープ SCSI デバイス・ドライバー
目的
順次アクセス・バルク・ストレージ・メディア・デバイス・ドライバーをサポートします。
構文
#include <sys/devinfo.h>
#include <sys/scsi.h>
#include <sys/tape.h>装置に依存するサブルーチン
ほとんどのテープ操作は、 オープン、 読み取り、 書き込み、および 閉じる サブルーチンを使用してインプリメントされます。 ただし、デバイスを診断モードで開く場合は、 OpenX サブルーチンを使用する必要があります。
サブルーチンのオープンとクローズ
OpenX サブルーチンは、診断コマンドおよびユーティリティーで使用するためのものです。 実行には適切な権限が必要です。 適切な権限なしでこのサブルーチンを実行しようとすると、サブルーチンは次の値を返します。-1そして、エラーグローバル変数にエペルム。
OpenX サブルーチンは、デバイス・ドライバーが診断モードに入ることを許可し、コマンド再試行ロジックを使用不可にします。 このアクションにより、診断処理に関連した特殊な機能を実行する ioctl 操作を実行することができます。 その他の OpenX 機能 (強制オープンや保存予約など) も使用できます。
OpenX サブルーチンに渡される 内線 パラメーターは、ターゲット・デバイスに使用する操作を選択します。 ext パラメーターは、 /usr/include/sys/scsi.h ファイルに定義されます。 このパラメーターには、論理 OR 演算された以下のフラグ値の任意の組み合わせを含めることができます。
| フラグ値 | 説明 |
|---|---|
| SC_診断 | 選択したデバイスを診断モードにします。 このモードは単独で使用できます。 デバイスが診断モードの場合、SCSI 操作は オープン または 閉じる の操作中に実行され、エラー・ロギングは使用不可になります。 診断モードでは、 閉じる 操作と ioctl 操作のみが受け入れられます。 その他のデバイス対応サブルーチンは、-1 、 とともにエラーグローバル変数の値がアクセス。 デバイスを診断モードで開くことができるのは、ターゲット・デバイスが現在オープンされていない場合のみです。 診断モードでデバイスを開こうとしたときに、ターゲットデバイスがすでに開いている場合は、-1返され、エラーグローバル変数は次のように設定されますアクセス。 |
| SC_FORCED_OPEN | 別のイニシエーターがデバイスを予約しているかどうかに関係なく、バス・デバイス・リセット (BDR) を強制します。 SCSI バス・デバイス・リセットは、 オープン シーケンスの開始前にデバイスに送信されます。 それ以外の場合、 オープン 操作は正常に実行されます。 |
| SC_RETAIN_RESERVATION (予約の変更) | リリースを発行しないことにより、 閉じる 操作後の装置の予約を保持します。 このフラグは、他のイニシエーターがホスト・マシンの予約を中断しない限り、そのデバイスを使用できないようにします。 |
カーネル・エクステンション機能とデバイス・サポート・プログラミングの概念 の "openx サブルーチンへの SCSI オプション" には、オープン操作に関するより具体的な情報が記載されています。
ioctl サブルーチン
_ 翻訳不要 _STIOCMD ioctl 操作は、SCSI コマンドを磁気テープ装置に直接送信する手段を提供します。 これにより、アプリケーションは、テープ・デバイス・ドライバーによって直接サポートされない特定の SCSI コマンドを発行することができます。
_ 翻訳不要 _STIOCMD 操作を使用するには、デバイスを診断モードで開く必要があります。 デバイスが診断モードではないときにこのコマンドを実行すると、-1返され、エラーグローバル変数は、アクセス。 _ 翻訳不要 _STIOCMD 命令は、 scsi_iocmd 構造体のアドレスを渡します。 この構造は、/usr/include/sys/scsi_buf.hファイル。
パラメーターの発行については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
エラー状態
リストされているエラーに加えて、この装置に対する ioctl、 オープン、 読み取り、および 書き込み サブルーチンは、以下の状況では失敗します。
| エラー | 説明 |
|---|---|
| EACCES | 診断モードではないデバイスに対して診断コマンドが発行されたことを示します。 |
| EAGAIN | すでにオープンされている装置をオープンしようとしたことを示します。 |
| EBUSY | ターゲット・デバイスが別のイニシエーターによって予約されていることを示します。 |
| EINVAL | O_APPEND の値が、開くモードとして提供されることを示します。 |
| EINVAL | 読み取り または 書き込み 命令で指定された N バイト パラメーターがブロック・サイズの倍数でないことを示します。 |
| EINVAL | ioctl 操作に対するパラメーターが無効であることを示します。 |
| EINVAL | 要求された ioctl 操作が現行装置でサポートされていないことを示します。 |
| EIO | テープ・ドライブがリセットされたか、テープが変更されたことを示します。 このエラーは、テープに対する直前の操作で、クローズ時にテープの先頭を超えてテープが位置決めされたままであった場合に、オープン時に戻されます。 |
| EIO | 装置が, システムによって指定されたレコードの数だけ前送りまたは後送りすることができなかったことを示します。st_countEOM (メディアの終わり) またはファイル・マークが検出される前のフィールド。 |
| emedia | 磁気テープ装置がリカバリー不能メディア・エラーを検出したことを示します。 |
| EMFILE | 既に最大許容数のオープン・デバイスを持つ SCSI アダプターに対して オープン 操作が試行されたことを示します。 |
| ENOTREADY | ドライブにテープがないか、ドライブが作動不能であることを示します。 |
| ENXIO | EOM にあるテープへの書き込みが試行されたことを示します。 |
| EPERM | このサブルーチンが適切な権限を必要とすることを示します。 |
| ETIMEDOUT | コマンドがタイムアウトになったことを示します。 |
| エヴルプロテクト | 読み取り/書き込みモードを要求する オープン 操作が、読み取り専用テープ上で試みられたことを示す。 |
| エヴルプロテクト | メディアに影響を与える ioctl 操作が読み取り専用テープで試行されたことを示します。 |
信頼性と保守性の情報
テープ装置から戻されるエラーは次の通りです。
| エラー | 説明 |
|---|---|
| 打ち切られたコマンド | デバイスがコマンドを終了したことを示します。 |
| ブランク・チェック | 読み取りコマンドがブランク・テープを検出したことを示します。 |
| データ保護 | 書き込み保護されたテープで書き込みが試行されたことを示します。 |
| 正常終了 | コマンドが正常終了したことを示します。 |
| HARDWARE ERROR | コマンドの実行中または自己診断テスト中にリカバリー不能なハードウェア障害が発生したことを示します。 |
| 無許可の要求 | 正しくないコマンドまたはコマンド・パラメーターを示します。 |
| メディア・エラー | コマンドが未回復のメディア・エラー状態で終了したことを示します。 この状態は、テープの欠陥または汚れたヘッドが原因である可能性があります。 |
| 作動不能 | 論理装置がオフラインであることを示します。 |
| リカバリーされたエラー | 何らかのリカバリーが適用された後、コマンドが正常に実行されたことを示します。 |
| ユニット・アテンション | デバイスがリセットされたか、電源がオンになったことを示します。 |
上記のリストにあるメディア・エラー、ハードウェア・エラー、および打ち切られたコマンド・エラーは、それらが発生するたびにログに記録されます。 打ち切られたコマンド エラーはリカバリー可能である可能性がありますが、リカバリーが失敗するとエラーがログに記録されます。 リカバリーされたエラー およびリカバリーされた 打ち切られたコマンド エラー・タイプの場合、しきい値は維持されます。しきい値を超えると、エラーがログに記録されます。 その後、しきい値がクリアされます。
テープ装置媒体エラーのエラー・レコード値
磁気テープ装置メディア・エラーのエラー・レコード・テンプレートに定義されているフィールドは、以下のとおりです。
| フィールド | 説明 |
|---|---|
| Comment | テープ媒体エラーと等しい。 |
| Class | H と同じです。ハードウェア・エラーを示します。 |
| Report | TRUE に等しく、エラー・レポートの生成時にこのエラーを含める必要があることを示します。 |
| Log | TRUE に等しく、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。 |
| Alert | FALSE に等しい。このエラーがアラート可能でないことを示します。 |
| Err_Type | 永続的な障害を示す PERM に等しい。 |
| Err_Desc | テープ操作が失敗したことを示す 1332 に等しい。 |
| Prob_Causes | テープ・メディアを示す 5003 に等しい。 |
| User_Causes | 5100 および 7401 に等しい。それぞれ、テープおよび障害のあるメディアに起因する原因を示す。 |
| User_Actions | 1601 と 0000 に等しく、それぞれ取り外し可能メディアを取り替え、操作を再試行し、問題判別手順を実行する必要があることを示します。 |
| Inst_Causes | ありません。 |
| Inst_Actions | ありません。 |
| Fail_Causes | テープ・メディアを示す 5003 に等しい。 |
| Fail_Actions | 1601 と 0000 に等しく、それぞれ、取り外し可能メディアを取り替え、操作を再試行し、問題判別手順を実行する必要があることを示します。 |
このDetail_Dataフィールドには、コマンド・タイプ、デバイスとアダプターの状況、およびエラーのある特定のデバイスからの要求センス情報が含まれます。 このDetail_Dataフィールドは エラー・レコード 構造体に含まれています。 この構造体は、 /usr/include/sys/errids.h ファイルに定義されます。 sc_error_log_df 構造。これは、以下に含まれる情報を記述します。Detail_Dataフィールドは、 /usr/include/sys/scsi.h ファイルに定義されています。
特定の要求センス情報の形式については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
エラー-テープまたはハードウェア異常終了コマンド・エラーの値の記録
ハードウェア・エラーおよび打ち切られたコマンド・エラーについて /usr/include/sys/erec.h ファイルに定義されている err_hdr 構造体のフィールドは、次のとおりです。
| フィールド | 説明 |
|---|---|
| Comment | テープ・ハードウェアに等しいか、またはコマンド・エラーが打ち切られました。 |
| Class | H と同じです。ハードウェア・エラーを示します。 |
| Report | TRUE に等しく、エラー・レポートの生成時にこのエラーを含める必要があることを示します。 |
| Log | TRUE に等しく、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。 |
| Alert | FALSE。このエラーがアラート可能でないことを示します。 |
| Err_Type | 永続的な障害を示す PERM に等しい。 |
| Err_Desc | 1331 と等しく、磁気テープ・ドライブの障害を示します。 |
| Prob_Causes | 6314 と等しく、磁気テープ・ドライブ・エラーを示します。 |
| User_Causes | ありません。 |
| User_Actions | 0000 に等しい。問題判別手順を実行する必要があることを示します。 |
| Inst_Actions | ありません。 |
| Fail_Causes | 5003 と 6314 に等しく、それぞれ、テープとテープ・ドライブが障害の原因であることを示します。 |
| Fail_Actions | 問題判別手順を実行する場合は、0000 になります。 |
このDetail_Dataフィールドには、コマンド・タイプ、デバイスとアダプターの状況、およびエラーのある特定のデバイスからの要求センス情報が含まれます。 このDetail_Dataフィールドは エラー・レコード 構造体に含まれています。 この構造体は、 /usr/include/sys/errids.h ファイルに定義されます。 sc_error_log_df 構造。これは、以下に含まれる情報を記述します。Detail_Dataフィールドは、 /usr/include/sys/scsi.h ファイルに定義されています。
特定の要求センス情報の形式については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
エラー-テープ・リカバリー・エラーしきい値を超えた場合の値の記録
しきい値カウンターを超えたリカバリー済みエラーについて、 /usr/include/sys/erec.h ファイルに定義されている err_hdr 構造体に定義されているフィールドは、次のとおりです。
| フィールド | 説明 |
|---|---|
| Comment | テープ・リカバリー・エラーしきい値を超えたことを示します。 |
| Class | H と同じです。ハードウェア・エラーを示します。 |
| Report | TRUE に等しく、エラー・レポートの生成時にこのエラーを含める必要があることを示します。 |
| Log | TRUE に等しく、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。 |
| Alert | FALSE に等しい。このエラーがアラート可能でないことを示します。 |
| Err_Type | 永続的な障害を示す PERM に等しい。 |
| Err_Desc | 1331 と等しく、磁気テープ・ドライブの障害を示します。 |
| Prob_Causes | 5003 と 6314 に等しく、それぞれテープ・ドライブとテープ・ドライブが原因である可能性があることを示します。 |
| User_Causes | 5100 と 7401 に等しく、メディアに欠陥があり、読み取り/書き込みヘッドが汚れていることを示します。 |
| User_Actions | 1601 と 0000 に等しく、取り外し可能メディアを取り替え、操作を再試行し、問題判別手順をそれぞれ実行する必要があることを示します。 |
| Inst_Causes | ありません。 |
| Inst_Actions | ありません。 |
| Fail_Causes | 5003 と 6314 に等しく、それぞれテープ・ドライブとテープ・ドライブが原因であることを示します。 |
| Fail_Actions | 0000 と等しい。問題判別手順を実行する。 |
このDetail_Dataフィールドには、コマンド・タイプ、デバイスとアダプターの状況、およびエラーのある特定のデバイスからの要求センス情報が含まれます。 このフィールドは、 エラー・レコード 構造体に含まれています。 err_rec 構造体は、 /usr/include/sys/errids.h ファイルに定義されています。 このDetail_Dataフィールドには、超過したしきい値のエラー・タイプも指定します。 sc_error_log_df 構造。これは、以下に含まれる情報を記述します。Detail_Dataフィールドは、 /usr/include/sys/scsi.h ファイルに定義されています。
特定の要求センス情報の形式については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
テープ SCSI アダプターのエラー・レコード値-検出されたエラー
アダプター検出エラーについて /usr/include/sys/erec.h ファイルに定義されている err_hdr 構造体のフィールドは、以下のとおりです。
| フィールド | 説明 |
|---|---|
| Comment | テープ SCSI アダプターが検出したエラーに等しい。 |
| Class | H と同じです。ハードウェア・エラーを示します。 |
| Report | TRUE に等しく、エラー・レポートの生成時にこのエラーを含める必要があることを示します。 |
| Log | TRUE に等しく、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。 |
| Alert | FALSE に等しい。このエラーがアラート可能でないことを示します。 |
| Err_Type | 永続的な障害を示す PERM に等しい。 |
| Err_Desc | 1331 と等しく、磁気テープ・ドライブの障害を示します。 |
| Prob_Causes | 3300 と 6314 に等しく、それぞれアダプターとテープ・ドライブの障害を示します。 |
| User_Causes | ありません。 |
| User_Actions | 0000 に等しい。問題判別手順を実行する必要があることを示します。 |
| Inst_Causes | ありません。 |
| Inst_Actions | ありません。 |
| Fail_Causes | 3300 と 6314 に等しく、それぞれアダプターとテープ・ドライブの障害を示します。 |
| Fail_Actions | 0000 と等しい。問題判別手順を実行する。 |
このDetail_Dataフィールドには、コマンド・タイプとアダプター状況が含まれます。 このフィールドは、 err_rec 構造体に入っています。この構造体は、 /usr/include/sys/err_rec.h ファイルによって定義されます。 要求センス情報は、このタイプのエラーでは使用できません。 sc_error_log_df 構造体は、以下に含まれる情報を記述します。Detail_Dataこのフィールドは、 /usr/include/sys/scsi.h ファイルに定義されています。
特定の要求センス情報の形式については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
エラー-テープ・ドライブ・クリーニング・エラーの値を記録する
一部の磁気テープ・ドライブは、クリーニングが必要なときにエラーを返します。 ドライブがクリーニングを必要とするときに発生するエラーは、このクラスの下にグループ化されます。
| フィールド | 説明 |
|---|---|
| Comment | テープ・ドライブにクリーニングが必要であることを示します。 |
| Class | H と同じです。ハードウェア・エラーを示します。 |
| Report | TRUE に等しい。エラー・レポートの生成時にこのエラーを含める必要があることを示します。 |
| Log | TRUE に等しい。これは、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。 |
| Alert | FALSE に等しい。このエラーがアラート可能でないことを示します。 |
| Err_Type | TEMP と同じです。一時的な障害を示します。 |
| Err_Desc | テープ操作エラーを示す 1332 に等しい。 |
| Prob_Causes | 6314 と等しく、考えられる原因がテープ・ドライブであることを示します。 |
| User_Causes | 7401 と等しく、ダーティー読み取り/書き込みヘッドを示します。 |
| User_Actions | 0000 に等しい。問題判別手順を実行する必要があることを示します。 |
| Inst_Causes | ありません。 |
| Inst_Actions | ありません。 |
| Fail_Causes | 6314 と同じです。これは、テープ・ドライブが原因であることを示します。 |
| Fail_Actions | 0000 と等しく、問題判別手順を実行することを示します。 |
このDetail_Dataフィールドには、コマンド・タイプとアダプター状況、およびエラーのある特定の装置からの要求センス情報が含まれます。 このフィールドは、 err_rec 構造体に入っています。この構造体は、 /usr/include/sys/errids.h ファイルによって定義されます。 sc_error_log_df 構造体は、以下に含まれる情報を記述します。Detail_Dataこのフィールドは、 /usr/include/sys/scsi.h ファイルに定義されています。
特定の要求センス情報の形式については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
エラー-不明なエラーの値を記録する
不明な理由で発生したエラーは、このクラスにグループ化されます。 データ保護エラーはこのクラスに分類されます。 磁気テープ・デバイス・ドライバーによって検出されるこれらのエラーは、磁気テープ・ドライブでは認識されません。
不明エラーの エラーが発生しました 構造体には、以下のフィールドが記述されています。
| フィールド | 説明 |
|---|---|
| Comment | 「テープに等しい」不明エラー。 |
| Class | すべてのエラー・クラスに等しい。 |
| Report | TRUE に等しく、エラー・レポートの生成時にこのエラーを含める必要があることを示します。 |
| Log | TRUE に等しく、このエラーが発生したときにエラー・ログ・エントリーを作成する必要があることを示します。 |
| Alert | FALSE に等しい。このエラーがアラート可能でないことを示します。 |
| Err_Type | UNKN と等しく、エラー・タイプが不明であることを示します。 |
| Err_Desc | 0xFE00と等しく、エラーの説明が不明であることを示します。 |
| Prob_Causes | ありません。 |
| User_Causes | ありません。 |
| User_Actions | ありません。 |
| Inst_Causes | ありません。 |
| Inst_Actions | ありません。 |
| Fail_Causes | 0xFFFFと等しく、障害の原因が不明であることを示します。 |
| Fail_Actions | 0000 と等しく、問題判別手順を実行する必要があることを示します。 |
このDetail_Dataフィールドには、コマンド・タイプとアダプター状況、およびエラーのある特定の装置からの要求センス情報が含まれます。 このDetail_Dataフィールドは エラー・レコード 構造体に含まれています。 このフィールドは、 /usr/include/sys/errids.h ファイルに入っています。 sc_error_log_df 構造体は、以下に含まれる情報を記述します。Detail_Dataこのフィールドは、 /usr/include/sys/scsi.h ファイルに定義されています。
特定の要求センス情報の形式については、該当する装置の Small Computer System Interface (SCSI) 仕様 を参照してください。
ファイル
/dev/rmt0, /dev/rmt0.1, /dev/rmt0.2, ..., /dev/rmt0.7,
/dev/rmt1, /dev/rmt1.1, /dev/rmt1.2, ..., /dev/rmt1.7,...,
| 項目 | 説明 |
|---|---|
| /dev/rmt255, /dev/rmt255.1, /dev/rmt255.2, ..., /dev/rmt255.7 | SCSI デバイス・ドライバーが SCSI テープ・ドライブにアクセスできるようにするインターフェースを提供します。 |