SCIOSTUNIT (启动单元) SCSI 适配器设备驱动程序 ioctl 操作

用途

提供向所选 SCSI 设备发出 "SCSI 启动单元" 命令的方法。

描述

SCIOSTUNIT 操作允许调用者向选定的 SCSI 适配卡发出 SCSI 启动单元命令。 系统管理例程可以使用此命令来帮助进行 SCSI 设备的配置。 对于 SCIOSTUNIT 操作,arg 参数操作是 sc_startunit 结构的地址。 该结构在 /usr/include/sys/scsi.h 文件中定义。

sc_startunit 结构允许调用者指定要启动的 SCSI 适配器上设备的 SCSI 和逻辑单元编号 (LUN) ID。 SC_ASYNC 标志(在传递的参数块的标志字节中)必须 在该命令的首次尝试中不被设置。

参数块中的 start_flag 字段允许调用者指示 SCIOSTUNIT 操作的起始选项。 当 start_flag 字段设置为 "true "时,逻辑单元将准备就绪,可以使用。 如果为 FALSE ,那么将停止逻辑单元。

注意:immed_flag 字段设置为 "true "时,SCSI 适配器设备驱动程序允许同时对任何或所有连接的设备进行 SCIOSTUNIT 操作。 重要的是,在同时执行 SCSI 启动单元命令时,调用者必须在连续的 SCSI 启动单元命令操作之间留出至少 10 秒的延迟时间。 此延迟确保为共享公共电源的设备提供足够的电力。 如果不按此方式延迟,可能会损坏系统装置或连接的设备。 请参阅特定设备的技术规范手册以及适用于您的系统的相应硬件技术参考。

immed_flag 字段允许调用者指示 SCIOSTUNIT 操作的直接选项。 当 immed_flag 字段设置为 "true "时,设备收到命令后将返回状态。 如果此字段设置为 FALSE ,那么在操作完成后将返回状态。 调用者必须将 immed_flag 字段设置为 TRUE,以允许对 SCSI 总线上的多个设备进行重叠 SCIOSTUNIT 操作。 在这种情况下,可以使用 SCIOTUR 操作来确定 SCIOSTUNIT 何时完成。

注意:在执行 SCIOSTUNIT 操作期间,SCSI 适配器设备驱动程序会执行正常的错误恢复程序。

返回值

操作成功完成后,SCIOSTUNIT 返回值为 0。 否则,将返回 -1 值,并将 errno 全局变量设置为以下值之一:

表 1. 返回值
描述
EFAULT 指示发生内核与用户空间之间的错误副本。
EINVAL 表示在此命令之前未发出 SCIOSTART 命令。
EIO 指示发生了不可恢复的 I/O 错误。 如果收到 EIO,调用者必须至少重试该命令一次,因为第一条命令可能清除了设备的错误条件。 如果出现未修复的错误,适配器错误状态信息将记录在系统错误日志中。
ENOCONNECT 表示发生了总线故障。 调用者必须响应重试,并在所传参数的标志字节中设置 SC_ASYNC 标志。 如果尝试重试不止一次,则必须只重试最后一次,并设置 SC_ASYNC 标记。 通常, SCSI 适配器设备驱动程序无法确定哪个设备导致了 SCSI 总线故障,因此不会记录此错误。
ENODEV 指示没有 SCSI 控制器响应所请求的 SCSI 标识。 此条件并不一定是错误,并且不会记录。
ENOMEM 指示没有足够的内存可用于完成命令。
ETIMEDOUT 指示适配器在内部命令超时值到期之前未以状态进行响应。 如果收到 ETIMEDOUT,调用者必须至少重试该命令一次,因为第一条命令可能清除了设备的错误条件。 此错误记录在系统错误日志中。

文件

表 2. 文件
描述
/dev/scsi0/dev/scsi1.../dev/scsi n 提供一个接口以允许 SCSI 设备驱动程序访问 SCSI 设备或适配器。
/dev/vscsi0, /dev/vscsi1,..., /dev/vscsin 提供一个接口以允许 SCSI-2 快速/宽适配器 /ASCSI-2 差分快速/宽适配器 /A 设备驱动程序访问 SCSI 设备或适配器。