25.17. SCSI コマンドタイマーとデバイス状態の制御

Linux SCSI レイヤーは、各コマンドでタイマーをセットします。このタイマーが時間切れになると、SCSI レイヤーは host bus adapter (HBA) を休止して、残りのコマンドすべてがタイムアウトになるか、完了するのを待ちます。その後に、SCSI レイヤーはドライバーのエラーハンドラーを始動します。
エラーハンドラーがトリガーされると、以下の操作を順番に試行します (そのいずれかが正しく実行されるまで試行が続きます)。
  1. コマンドの中止
  2. デバイスのリセット
  3. バスのリセット
  4. ホストのリセット
これらの操作がすべて失敗する場合、デバイスは offline 状態にセットされます。この状況が発生すると、そのデバイスへの全ての I/O は、問題が修復されてユーザーがデバイスを running にセットするまで失敗します。
デバイスがファイバーチャンネルプロトコルを使用していて、 rport がブロックされた場合、プロセスは違ったものになります。そのようなケースでは、ドライバーはエラーハンドラーを始動する前に rport が再度オンラインになるように数秒間待ちます。これにより、一時的なトランスポート問題でデバイスがオフラインになることを防止します。

デバイスの状態

デバイスの状態を表示するには、以下を使用します:
$ cat /sys/block/device-name/device/state
デバイスを running 状態にセットするには、以下を使用します:
$ echo running > /sys/block/device-name/device/state

コマンドタイマー

コマンドタイマーを制御するには、/sys/block/device-name/device/timeout に書き込みをします。これを行うには以下を実行します:
echo value /sys/block/device-name/device/timeout
ここで、 value は実装する予定のタイムアウト値 (秒表示) です。