第40章 SCSI コマンドタイマーおよびデバイスステータスの制御
Linux SCSI レイヤーは、各コマンドにタイマーを設定します。このタイマーが期限切れになると、SCSI レイヤーは ホストバスアダプター (HBA)を累積し、未処理のすべてのコマンドがタイムアウトまたは完了するのを待ちます。その後、SCSI レイヤーはドライバーのエラーハンドラーをアクティベートします。
エラーハンドラーがトリガーされると、以下の操作を順番に試行します(同様に 1 回実行します)。
- コマンドの中止
- デバイスのリセット
- バスのリセット
- ホストをリセットします。
この操作をすべて失敗すると、デバイスは offline 状態に設定されます。これが発生すると、問題が修正され、ユーザーがデバイスを running に設定するまで、そのデバイスへのすべての I/O が失敗します。
ただし、デバイスが fibre チャンネルのプロトコルを使用しており、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 は、実装するタイムアウト値(秒単位)です。