SCIOHALT (Halt) SCSI 适配器设备驱动程序 ioctl 操作
用途
结束当前命令 (如果有) ,清除任何暂挂命令的队列,并将设备队列置于 "已停止" 状态。
描述
SCIOHALT 操作允许调用者将当前命令 (如果有的话) 结束到所选设备,清除任何暂挂命令的队列,并将设备队列置于已暂停状态。 该命令会导致连接的 SCSI 适配器对所选目标设备执行 SCSI 异常中止消息。 此命令由上层 SCSI 设备驱动程序用于结束正在运行的操作,而不是等待该操作完成或超时。
一旦发送了 SCIOHALT 操作,调用设备驱动程序就必须设置 SC_RESUME 标志。 此位位于以下位置:flags要由 SCSI 适配器设备驱动程序处理的下一个 斯克布夫 结构的字段。 在设备队列处于 "已暂停" 状态后,将拒绝任何未使用 SC_RESUME 标志发送的 斯克布夫 结构。
SCIOHALT 操作的 阿尔格 参数使调用者能够指定要重置的设备的 SCSI 标识。 阿尔格 参数中最不重要的字节是要停止的 SCSI 控制器上的 LUN 的 LUN 标识 (逻辑单元号标识)。 下一个最不重要的字节是 SCSI 标识。 剩余的两个字节是保留的,必须设置为值 0。
SCSI 适配器设备驱动程序在执行此命令期间执行正常的错误恢复过程。 例如,如果异常中止消息导致 SCSI 总线挂起,那么将启动 SCSI 总线重置以清除此情况。
返回值
成功完成后,此操作将返回值 0。 否则,将返回 -1 值,并将 errno 全局变量设置为以下值之一:
| 值 | 描述 |
|---|---|
| EINVAL | 指示在执行此操作之前未发出 SCIOSTART 操作。 |
| EIO | 指示发生不可恢复的 I/O 错误。 在此情况下,会将适配器错误状态信息记录在系统错误日志中。 |
| EIO | 指示设备已停止,或设备驱动程序无法将代码置顶。 |
| ENOCONNECT | 指示发生 SCSI 总线故障。 |
| ENODEV | 指示无法选择目标 SCSI 标识或目标 SCSI 标识未响应。 此条件并不一定是错误,并且不会记录。 |
| ENOMEM | 指示没有足够的内存可用于完成命令。 |
| ETIMEDOUT | 指示适配器未在内部命令超时值到期之前以状态进行响应。 此错误记录在系统错误日志中。 |
文件
| 项 | 描述 |
|---|---|
| /dev/scsi0, /dev/scsi1, ..., /dev/scsin | 提供一个接口以允许 SCSI 设备驱动程序访问 SCSI 设备和适配器。 |
| /dev/vscsi0, /dev/vscsi1, ... , /dev/vscsin | 提供一个接口以允许 SCSI-2 快速/宽适配器 /A 和 SCSI-2 差分快速/宽适配器 /A 设备驱动程序访问 SCSI 设备或适配器。 |