SCIOINQU (查询) SCSI 适配器设备驱动程序 ioctl 操作
用途
提供了向 SCSI 设备发出查询命令的方法。
描述
科学渠 操作使调用者能够向所选适配器发出 SCSI 设备查询命令。 系统管理例程可以使用此命令来帮助进行 SCSI 设备的配置。
科学渠 操作的 阿尔格 参数是一个 sc_inquiry 结构的地址。 此结构在 /usr/include/sys/scsi.h 文件中定义。 sc_inquiry 参数块允许调用者选择要查询的 SCSI 标识和 LUN 标识。
在对该操作进行初始调用时,不得设置参数块的 SC_ASYNC 标志字节。 仅当 发生总线故障 和调用者打算尝试多次重试时,才会设置此标志。
如果成功,那么可以在 sc_inquiry 结构中由调用者指定的地址找到返回的查询数据。 如果设备以请求的 SCSI 标识进行响应,但必须检查返回的查询数据以了解请求的 LUN 是否存在,那么会成功完成。 请参阅相应设备的 小型计算机系统接口 (SCSI) 规范 ,以了解返回数据的格式。
注: SCSI 适配器设备驱动程序在执行此命令期间执行正常的错误恢复过程。
返回值
成功完成后,此操作将返回值 0。 否则,将返回 -1 值,并将 errno 全局变量设置为以下值之一:
| 值 | 描述 |
|---|---|
| EFAULT | 指示发生内核与用户空间之间的错误副本。 |
| EINVAL | 指示在发出此命令之前未发出 SCIOSTART 命令。 |
| EIO | 指示发生了不可恢复的 I/O 错误。 如果返回了 EIO ,那么调用者应该重试 科学渠 操作,因为第一个命令可能已清除设备的错误情况。 如果发生未恢复的错误,那么会将适配器错误状态信息记录在系统错误日志中。 |
| ENOCONNECT | 表示发生了总线故障。 调用者应该通过在所传递参数的标志字节中设置 SC_ASYNC 标志进行重试来进行响应。 如果尝试了多次重试,那么仅应在设置了 SC_ASYNC 标志的情况下进行最后一次重试。 通常, SCSI 适配器设备驱动程序无法确定哪个设备导致了 SCSI 总线故障,因此不会记录此错误。 |
| ENODEV | 指示没有 SCSI 控制器响应所请求的 SCSI 标识。 此返回值意味着请求的 SCSI 标识上不存在 LUN。 因此,当迂到 ENODEV 返回值时,调用者可以跳过此 SCSI 标识 (以及它上的所有 LUN) 并继续使用下一个 SCSI 标识。 此条件并不一定是错误,并且不会记录。 |
| ENOMEM | 指示没有足够的内存可用于完成命令。 |
| ETIMEDOUT | 指示在内部命令超时值到期之前,适配器未以状态进行响应。 在接收到 ETIMEDOUT 返回值时,调用者应至少重试此命令一次,因为第一个命令可能已清除了设备的错误情况。 此错误记录在系统错误日志中。 |
文件
| 项 | 描述 |
|---|---|
| /dev/scsi0, /dev/scsi1, ..., /dev/scsin | 提供一个接口以允许 SCSI 设备驱动程序访问 SCSI 设备/适配器。 |
| /dev/vscsi0, /dev/vscsi1, ... , /dev/vscsin | 提供一个接口以允许 SCSI-2 快速/宽适配器 /A 和 SCSI-2 差分快速/宽适配器 /A 设备驱动程序访问 SCSI 设备或适配器。 |