SCIORESET (リセット) SCSI アダプター・デバイス・ドライバーの ioctl 操作
目的
呼び出し元が SCSI 装置を強制的にすべての現行予約を解放し、すべての現行コマンドをクリアして、初期状態に戻すことができるようにします。
説明
_ 翻訳不要 _SCIORESET 操作により、呼び出し元は SCSI 装置を強制的にすべての現行予約を解放し、すべての現行コマンドをクリアして、初期状態に戻すことができます。 この操作は、マルチイニシエーター環境で競合する SCSI イニシエーターの予約を SCSI コントローラーに強制的に解放させるために、システム管理ルーチンによって使用されます。
この操作は、選択されたアダプター上の選択された SCSI コントローラーに対して、SCSI バス・デバイス・リセット (BDR) メッセージを実際に実行します。 BDR メッセージは SCSI ID に送信されます。 したがって、その SCSI ID に関連付けられたすべての論理装置番号 (LUN) は、BDR の実行によって影響を受けます。
操作を効果的に機能させるには、適切な SCSI デバイス・ドライバーを介して、 _ 翻訳不要 _SCIORESET 操作の後に SCSI Reserve コマンドを発行する必要があります。 通常、SCSI デバイス・ドライバーのオープン・ロジックは SCSI Reserve コマンドを発行します。 これにより、別のイニシエーターがデバイスを要求しないようにします。
すべての予約の解放 ( _ 翻訳不要 _SCIORESET 操作による) から、装置が再び予約される (ホストからの SCSI Reserve コマンドによる) までの時間は限られています。 この間隔中に、別の SCSI イニシエーターが代わりに装置を予約することができます。 この場合、このホストからの SCSI Reserve コマンドは失敗し、装置は競合するイニシエーターによって予約されたままになります。 このイベントを回避またはリカバリーするために必要な機能は、SCSI アダプター・デバイス・ドライバーおよび SCSI デバイス・ドライバー・コンポーネントを超えています。
_ 翻訳不要 _SCIORESET 操作の 引数 パラメーターを使用すると、呼び出し元はリセットするデバイスの SCSI ID を指定できます。 引数 パラメーター内の最下位バイトは、SCSI コントローラー上の LUN の LUN ID です。 LUN ID によって示される装置は、 _ 翻訳不要 _SCIOSTART 操作の呼び出しによって正常に開始されている必要があります。 次の最下位バイトは SCSI ID です。 残りの 2 バイトは予約されており、0 の値に設定する必要があります。
例
- 以下の例は、このコマンドの実際の使用法を示しています。 SCSI ID 1 が想定され、この SCSI コントローラーには 0 の LUN が存在します。
open SCSI adapter device driver SCIOSTART SCSI ID=1, LUN=0 SCIORESET SCSI ID=1, LUN=0 (to free any reservations) SCIOSTOP SCSI ID=1, LUN=0 close SCSI adapter device driver open SCSI device driver (normal open) for SCSI ID=1, LUN=0 ... Use device as normal ... - SCSI デバイス・ドライバーの SC_FORCED_OPEN フラグを使用するには、次のようにします。
通常どおりに装置を使用します。open SCSI device driver (with SC_FORCED_OPEN flag) for SCSI ID=1, LUN=0 ...
どちらの例も、SCSI デバイス・ドライバー オープン 呼び出しが、選択されたデバイスに対して SCSI Reserve コマンドを実行することを前提としています。
SCSI アダプター・デバイス・ドライバーは、このコマンドの実行中に通常のエラー・リカバリー手順を実行します。 例えば、BDR メッセージが原因で SCSI バスがハングした場合、SCSI バスのリセットが開始され、状態がクリアされます。
戻り値
正常に完了すると、この操作は値 0 を戻します。 それ以外の場合は、-1返され、エラーグローバル変数は次のいずれかの値に設定されます。
| 値 | 説明 |
|---|---|
| EINVAL | このコマンドの前に _ 翻訳不要 _SCIOSTART コマンドが発行されなかったことを示します。 |
| EIO | リカバリー不能な入出力エラーが発生したことを示します。 この場合、アダプター・エラー状況情報はシステム・エラー・ログに記録されます。 |
| EIO | デバイスが既に停止しているか、デバイス・ドライバーがコードをピン留めできないかのいずれかを示します。 |
| ENOCONNECT | バス障害が発生したことを示します。 呼び出し側は、渡されたパラメーターのフラグ・バイトに 非同期 (SC_ASYNC) フラグ・セットを指定して再試行することによって応答する必要があります。 複数の再試行を行う場合は、 非同期 (SC_ASYNC) フラグを設定して最後の再試行のみを行う必要があります。 通常、SCSI アダプター・デバイス・ドライバーは、バス障害の原因となったデバイスを判別できないため、このエラーはシステム・エラー・ログに記録されません。 |
| ENODEV | ターゲット SCSI ID が選択できなかったか、応答していないことを示します。 この状態は必ずしもエラーではなく、ログに記録されません。 |
| ENOMEM | コマンドを完了するために使用できるメモリーが不足していることを示します。 |
| ETIMEDOUT | 内部コマンドのタイムアウト値が期限切れになる前に、アダプターが状況で応答しなかったことを示します。 このエラーはログに記録されます。 |
ファイル
| 項目 | 説明 |
|---|---|
| /dev/scsi0、 /dev/scsi1、 ...、 /dev/scsin | SCSI デバイス・ドライバーが SCSI デバイスまたはアダプターにアクセスできるようにするインターフェースを提供します。 |
| /dev/vscsi0、 /dev/vscsi1、...、/dev/vscsin | SCSI-2 Fast/Wide アダプター /A および SCSI-2 Differential Fast/Wide Adapter/A デバイス・ドライバーが SCSI デバイスまたはアダプターにアクセスできるようにするインターフェースを提供します。 |