25.20. SCSI コマンドタイマーおよびデバイスステータスの制御
Linux SCSI レイヤーは、各コマンドにタイマーを設定します。このタイマーが時間切れになると、SCSI レイヤーはホストバスアダプター (HBA) を静止し、すべての未処理のコマンドがタイムアウトまたは完了するのを待ちます。その後、SCSI レイヤーはドライバーのエラーハンドラーをアクティブにします。
エラーハンドラーがトリガーされると、(1 つが正常に実行されるまで) 以下の操作が順番に試行されます。
- コマンドの中止
- デバイスのリセット
- バスのリセット
- ホストをリセットします。
これらの操作がすべて失敗すると、デバイスは offline 状態に設定されます。これが発生すると、問題が修正され、デバイスが を 実行 するまで、そのデバイスへのすべての I/O が失敗します。
ただし、デバイスがファイバーチャネルプロトコルを使用し、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 を、実装するタイムアウト値(秒単位)に置き換えます。