25.20. 控制 SCSI 命令计时器和设备状态
Linux SCSI 层对每个命令设置一个计时器。当这个计时器到期时,SCSI 层将停止 主机总线适配器 (HBA),并等待所有未执行的命令超时或完成。之后,SCSI 层将激活驱动程序的错误处理程序。
触发错误处理程序时,它会按顺序尝试以下操作(直到成功执行了一个操作):
- 中止命令。
- 重置设备。
- 重置总线。
- 重置主机。
如果所有这些操作都失败,则该设备将设置为 离线状态。当发生这种情况时,到该设备的所有 I/O 都将失败,直到问题被修正,用户会将设备设置为 运行。
但是,如果设备使用 Fibre Channel 协议,且 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。