25.20. 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 は実装するタイムアウト値 (秒単位) に置き換えてください。