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 快速/宽适配器 /ASCSI-2 差分快速/宽适配器 /A 设备驱动程序访问 SCSI 设备或适配器。