6.10. 超时

此值用于设置给定命令的超时时间。此值的单位是毫秒。 测量的时间是从命令发送时到 sg 被告知请求已完成时。 随后的 read() 可以占用用户喜欢的任何时长。 最好避免超时,尤其是在 SCSI 总线复位会对该 SCSI 总线上的其他设备产生不利影响的情况下。 当超时到期时,SCSI 中间层会尝试错误恢复。 当以下列表中的第一个操作成功时,错误恢复完成。 请注意,每个步骤都采取了更极端的措施。

如果所有这些都失败,则设备可能会被设置为“离线”,这意味着它不再可访问(除非通过此驱动程序以 O_NONBLOCK 模式 open() 打开),直到机器重新启动。 离线设备仍然出现在 cat /proc/scsi/scsi 列表中。cat /proc/scsi/sg/devices 列表的最后一列显示设备的在线/离线状态(“1”表示在线,而“0”表示离线)。 返回的确切状态取决于哪个级别的错误恢复成功。 最有可能的是 'host_status' 将被设置为 DID_ABORT 或 DID_RESET。

包含单词“TIME(_)OUT”的两个错误状态通常 _不_ 与命令超时相关。 'host_status' 中的 DID_TIME_OUT 通常表示(意外的)设备选择超时。 'driver_status' 字节中的 DRIVER_TIMEOUT 表示 SCSI 适配器无法控制其 SCSI 总线上的设备(并且已放弃)。

超时类型是 unsigned int(它表示毫秒)。

注释

[1]

是否支持中止单个命令取决于适配器。 许多适配器无法中止“正在运行中”的 SCSI 命令,因为这些细节由硬件中嵌入式处理器的硅片处理。 需要 SCSI 设备或总线复位。