您的位置:标准吧 > 标准下载 > SJ 20820.9 2002 信息技术 小计算机系统接口SCSI 3基本命令层 第9部分:公共访问方法12

SJ 20820.9 2002 信息技术 小计算机系统接口SCSI 3基本命令层 第9部分:公共访问方法12

时间:2012-5-28 14:42:50 作者:标准吧 来源:SJ 阅读:1597次
SJ 20820.9 2002 信息技术  小计算机系统接口SCSI 3基本命令层 第9部分:公共访问方法12
 

12.3.4.1.2.1中止消息
当SIM / HA 为一个允许的主机目标设备方式LUN 接收了一个中止消息时,SIM /HA应:

a )接受该消息。
b )设置立即通知CCB 的路径ID为该总线的总线号,设置SIM / HA 的目标设备ID 和来自识别消息的LUN ID ,设置立即通知CCB 的启动设备ID 字段为所选该SIM / HA 的启动设备ID 。

c )设置立即通知CCB  CAM 状态为接收的消息。
d )构成一个唯一的顺序标识符并把它放入立即通知CCB 顺序标识符字段中。
e )设置立即通知CCB 消息代码字段为中止消息代码.
f )对这个I _ T  L 或1 _ T  L Q 连系,所有继续目标设备I/O CCB 应把CAM状态置为由主机中止的请求并通过继续目标设备I/O CCB 回调机制返回到主机目标设备方式外围驱动程序。

g ) SIM / HA 应把SCSI总线转换为总线空困。sSIM/HA 应使用有效的立即通知CCB 中的回调通知字段回调主机目标设备方式外围驱动程序。这两个操作的准确次序未加规定。
h )对于所有初始连接,SIM / HA 对这个I T L 或I T L Q连系应透明的响应SCSI 状态忙碌,直到主机目标设备方式外围驱动程序确认了所有事件。
i )对这个I T L 或I T L Q连系,SIM / HA 接收的所有继续目标设备I/ 0 CCB 应被拒绝直到所有事件被主机目标设备方式外围驱动程序确认。拒绝的CCB 应有:
l )通过主机,CAM 状态字段置为未确认事件:
2 )通过主机,返回未确认事件的状态.
通过主机目标设备方式外围驱动程序,这个事件的确认应在SIM / HA 为这个I T L 或I T L Q连系接收了通知确认CCB ,并且顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时被实现。

12.3.4.1.3 任选消息
本条描述了不管是否具有通知相应的主机目标设备方式外围驱动程序性能的SIM / HA 处理的任选消息。
12.3.4.1.3.1 不被支持的任选消息
本章条中不被支持的所有消息:
——若SIM / HA 不能提供支持,或主机目标设备方式外围驱动程序己通过不支      持消息的允许目标设备LUN CCB 来表示,则SIM/HA 应拒绝该消息,并继续正常的SCSI总线处理。该事件不应通知主机目标设备方式外围驱动程序。
12.3.4.1.3.2 中止标签消息
若带标记的排队操作对这个LUN 有效,则支持中止标笠消息。当通过SIM / HA 为一个允许的主机目标设备方式LUN 接收一个中止标签消息时,SIM/HA 应:
a )接受该消息。
b )若当前的I/ 0 处理未被充分识别(如:无排队标签消息),则SIM / HA 应:
1 )进入总线空闲阶段。
2 )无其它处理请求(更进一步信息见SJ20631 一97 中的中止标签消息)

c)设置立即通知CCB 的路径ID 为该总线的总线号,设置SIM / HA 的目标设备功和来自识别消息的LUN ID ,设置立即通知CCB 的启动设备ID 字段为所选该SIM/HA 的启动设备的ID 。

d )设置立即通知CBC CAM状态为接收的消息。
e )设置立即通知CCB 消息代码字段为中止标签消息代码.把附加变量放入立即通知CCB的消息变量阵列中的消息内(即:排队标签)。
f)SIM / HA 应构成一个唯一的顺序标识符并把它放入立即通知CCB 顺序标识符字段中。

g ) SIM / HA 应在CCB 的标签ID字段和I T L Q 连系的排队标记之间寻找匹配的这个I T L Q 连系搜索继续目标设备I/O CCB 表。对于寻找到的每个匹配,继续目标设备I/O CCB CAM 状态应被置为由主机中止的请求并通过继续目标设备I/O CCB 回调机制返回到主机目标设备方式外围驱动程序。
h ) SIM / HA 应把SCSI总线转换为总线空闲阶段.SIM / HA 应使用有效的立即通知CCB 中的回调通知字段回调主机目标设备方式外围驱动程序。这两个操作的准确次序未加规定.

i )对所有初始连接,SIM / HA 应对这个I T L 或I T L Q 连系透明的响应SCSI忙碌状态,直到主机目标设备方式外围驱动程序确认了所有事件。
j ) SIM / HA 为这个I T L或I T L Q接收的所有继续目标设备I/O CCB 应被拒绝直到所有事件被主机目标设备方式外围驱动程序确认.拒绝的CCB 应有:
1 ) CAM 状态字段置为主机未确认事件
2 )返回状态为主机未确认事件。
当SIM / HA 对这个I T L 或I T L Q连系接收了通知确认CCB ,顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时,该事件的确认应通过主机目标设备方式外围驱动程序来实现。

12.3.4.1.3.3清除排队消息
若标签排队操作对这个LUN 有效,应支持清除排队消息.当SIM / HA 为允许的主机目标设备方式LUN 接收了清除排队消息时,SIM/ HA 应:
a )接受该消息。
b )设置立即通知CCB 的路径ID 为该总线的总线号,设置SIM / HA 的目标设备ID 和来自识别 消息LUNID ,设置立即通知CCB 的启动设备ID 字段为选择该SIM / HA 的启动设备的ID 。

c )设置立即通知CBC CAM状态为接收的消息。
d )设置立即通知CCB 消息代码字段为清除排队消息代码.
e ) SIM / HA 应构成一个唯一的顺序标识符并把它放入立即通知CCB顺序标识符字段。

f )对这个允许的主机目标设备方式LUN ,所有继续目标设备I/O CCB 应把CAM状态置为主机中止的请求并通过继续目标设备I/O CCB 回调机制返回到主机目标设备方式外围驱动程序。

g ) SIM / HA 应转换SCSI 总线为总线空闲阶段。SIM / HA 应使用可用的立即通知CCB 中的回调通知字段回调主机目标设备方式外围驱动程序。这两个操作的准确次序未加规定。

h )对所有初始连接,5SIM / HA 对这个LUN 应透明的响应SCSI 忙碌状态,直到所有事件被主机目标设备方式外围驱动程序确认。
i) SIM / HA 为这个LUN 接收的所有继续目标设备I/O CCB 应被拒绝直到所有事件被主机目标设备方式外围驱动程序确认.拒绝的CCB 应有:
1 ) CAM状态字段置为主机未确认事件
2 )返回状态为主机未确认事件。
当SIM / HA 为这个LUN 接收了通知确认CCB ,顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时,该事件的确认应通过主机目标设备方式外围驱动程序来实现.
12.3.4.1.3.4 排队头、顺序排队和简单排队标签消息
这些消息的处理在12.3.9 中描述.
12.3.4.1.3.5 中止I/O处理消息

当SIM / HA 为一个允许的主机目标设备方式LUN 接收了支持的终止I/O处理消息时,SIM / HA 应:

a )若没有相配的I / 0 处理,SIM / HA 应拒绝该消息,并且没有更进一步处理的要求.

b )若存在一个相匹配的I / 0 处理,则接受该消息。
c )若必须断开,则SIM / HA 将从总线断开,若允许断开,则SIM / HA 应从总线断开。

d )设置立即通知CCB 的路径ID 为该总线的总线号,设置SIM/HA 的目标设备ID和来自识别消息的LUN ID ,设置立即通知CCB 的启动设备ID 字段为所选该SIM/HA 的启动设各的ID。

e ) SIM/HA 应构成一个唯一的顺序标识符并把它放入立即通知CCB 顺序标识符字段。

f )设置立即通知CCB CAM状态为接收的消息。
g )设置立即通知CCB 消息代码字段为终止I/O处理消息代码。
h)对这个I T L 或I T L Q连系,每个继续目标设备I/O CCB 应把CAM状态置为终止I / O处理,剩余长度字段应置为对这个CCB 未传送的有效字节数,该CCB 应被继续目标设备I/O CCB 回调机制返回到主机目标设备方式外围驱动程序。
i)通过立即通知CCB提供的机制回调主机目标设备方式外围驱动程序。
j )对所有初始连接,SIM/HA 对这个I_T L 或I_T  L  Q 应透明地响应SCS 忙碌状态,直到所有事件被主机目标设备方式外围驱动程序确认.
k)对这个I_T L 或I_T L Q 连系,SIM / HA 接收的所有继续目标设备I/O CCB应被拒绝直到所有事件被主机目标设备方式外围驱动程序确认。拒绝的CCB 应有:
1 ) CAM状态字段置为主机未确认事件
2 )返回状态为主机未确认事件。
i )当SIM / HA 为这个I T L 连系接收了通知确认CCB ,顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时,该事件的确认应通过主机目标设备方式外围驱动程序来实现。主机目标设备方式外围驱动程序应确认该事件,并按SJ 20631 一97 的规定相应终止I / 0 处理。

12.3.4.1.45 SIM/HA 不可用的资源
对于没有任何可使用的接受目标设备I/O CCB 的主机目标设备方式中一个允许的LUN,若SIM / HA 接收了SCSI总线上的一个CDB ,它应有如下操作:

a )设置立即通知CCB 的路径ID 为该总线的总线号,设置SIM / HA的目标设备ID 和来自识别消息的LUN ID ,设置立即通知CCB 的启动设备ID 字段为所选该SIM / HA 的启动设备的ID 。

b )设置立即通知CCB CAM 状态为不可用的资源。
c )SIM / HA 应构成一个唯一的顺序标识符并把它放入立即通知CCB 顺序标识符字段。

d ) SIM/HA 应把SCSI 总线转换为状态阶段,并对启动设备返回忙碌状态,随后进入总线空闲阶段.SIM / HA 应使用有效的立即通知CCB中的回调通知字段回调主机目标设备方式外围驱动程序。这些操作应以这里显示的次序来执行。
e )对所有初始连接,SIM / HA 对这个LUN 应透明地响应SCSI 状态位碌,直到所有事件被主机目标设备方式外围驱动程序确认。
注24 :为使SIM /HA接收和处理这个事件,允许接受和继续目标设备I/O CCB ,主机目标设备方式外围驱动程序应发送大量的接受目标设备I/O CCB 到允许的L UN,随后确认该事件以便补充资源.
当SIM / HA 为这个LUN 接收了通知确认CCB ,且顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时,该事件的确认应通过主机目标设备方式外围驱动程序来实现.
12.3.4.1.5 HA 故障
若一个控制SIM 检测到HA 已发生故障/失败,由此引起HA不能在它的现行状态中使用(如:已停止响应、说明它自己的错误、需要初始化/重新启动),对于发生故障/失败的HA ,它应为每个主机目标设备方式允许的LUN 实现以下操作:
a )设置立即通知CCB 的路径ID 为这个以的总线号,设置HA 的目标设备ID 和报告LUN 号的LUN ID 。
b )设置立即通知CCB CAM状态为未检出的HA。
c ) SIM/HA 应构成一个唯一的顺序标识符并把它放入立即通知CCB 顺序标识符字段。
d )这个主机目标设备方式LUN 的所有继续目标设备I/0 CCB 应把CAM状态设置为未检出的HA , 并通过继续目标设备I/O CCB 回调机制返回到主机目标设备方式外围驱动程序。
e ) SIM 应清除这个LUN 的所有其它未确认事件的未确认事件表(如:对于这个LUN ,未确认事件只是该事件)。
f ) SIM 应使用有效的立即通知CCB 中回调通知字段回调主机目标设备方式外围驱动程序。

g ) SIM 为这个LUN 接收的所有继续目标设备I/O CCB 应被拒绝,直到所有事件被主机目标设备方式外围驱动程序确认,应拒绝的CCB为:
1 )CAM 状态字段置为主机未确认事件。
2 )返回状态为主机未确认事件。
h ) SIM 可以对HA 调整故障/失败并再次使HA 转为可用状态。SIM 使用的恢复操作是售方专用,但SIM / HA 响应连接是为故障/失败恢复阶段规定的,术语“故障/失败恢复阶段”意味着从SIM 初始恢复操作(如:SIM 做的第一步就是纠正HA 的故障/失败)到SIM / HA 能够对允许的主机日标设备方式LUN 遵循本部分。
在故障/失败恢复阶段,SIM/HA 应响应下列方式之一的连接:
1 )恢复阶段结束之前不响应选择(选择超时)。
2 )SCSI-2忙碌状态响应连接直到恢复阶段结束。
3 )恢复阶段结束之前不对一个时间段响应选择(选择超时),随后SCSI-2忙碌状态响应连接。
I ) SIM / HA 的状态应以响应路径查询CCB来反映(更进一步信息见11.7.5路径查询).

注25 :不禁止主机目标设备方式LUN ,除非主机目标设备方式外围驱动程序明确地禁止LUN 功能。
当SIM 为这个LUN 接收了通知确认CCB ,且顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时,该事件的确认应通过主机目标设备方式外围驱动程序来实现。
主机目标设备方式外围驱动程序应认知这个事件类似于HA 的断电。主机目标设备方式外围驱动程序可能禁止该LUN 或可能试图继续处理(如:确定SIM是否已使HA 转为有效状态)或可能试图继续处理并随后禁止该LUN。
若SIM 己使HA转为有效状态,主机目标设备方式外围驱动程序应通过路径查询函数确定。若SIM 使HA 再次转为有效状态,主机目标设备方式外围驱动程序应按照加电/复位I T L 或I_T L_Q 来处理这种情况。
注26 :对这个I T L 或I_T L_Q,接收的除了查询和请求断定命令之外的第一个命令响应请求断定命令,主机目标设备方式外围驱动程序应以检验情况状态和部件注意断定键响应.若SIM / HA 的处理被恢复,主机目标设备方式外围驱动程序应确保该事件确认之前,接受目标设备I/O CCB对SIMHA有效。
12.3.5 立即通知CCB
XPT 的供给者定义立即通知CCB 结构如下:
typedef struct ccb _ immed _ notify3
{
CCB  HEADER3 cam ch                   / *标题信息字段*/
void reserved                         / *为兼容性保留指针*/
void ( * cam _ cbfnot ) ()            / *通知回调函数*/
CAM U8 cam _ sense _ ptr              / *指向断定数据缓冲器的指针*/
CAM _ U8 cam _ sense _ len            / *自动断定缓冲器中的字节数*/
CAM _ U32 cam _ initiator _ id [2]    / *所选启动设备的ID * /
CAM   UI6 cam _ seq _ id              / *顺序标识符*/
CAM U8 cam msg code                   / *消息代码*/
CAM U8 cam  msg args [3]              / *消息变量*/
) CCB IMMED NOTIFY3
12.3.5.1 立即通知CCB 的组成说明
——请求CCB 的发送者设置的CCB HEADER3 组成的信息。
cam _ func code :
该组成应包含XPT CAM CCB 函数代码。
cam3 _ func _ code :
该组成应包含XPT IMMED NOTIFY 函数代码。
port _ id :
该组成应包含一个端口号(如:SCSI 总线号)。
addr spec1 
该组成应包含SCSI 目标设备说明符。
addr _ spec2
该组成应包含SCSI 逻辑单元说明符。
cam _ sim _ generation :
该组成应反映为当前连接操作返回的SIM 连接生成号。
cam  sim_bhandle :
该组成应反映为当前连接操作返回的SIM 连接处理。
——cam _ flags :
以下cam _ flag :是对该函数有效,位定义和位描述见11.8.1.1 中。
断定缓冲器指针(CAM_SNS _ BUF PHYS ) :
——( * cam _ cbfnot ) ()
该组成应包含主机目标设备方式外围驱动程序的立即通知例程的地址。
——* cam_sense _ ptr
指向断定缓冲器组成的指针应包含一个指向具有最少18 字节的缓冲器的指针。——cam _ sense len
断定缓冲器长度组成是断定缓冲器的长度,该长度至少为18 字节。
——cam _ initiator _ id [2]
启动设备标识符组成是选择SIM / HA 的启动设备的SCSI 总线ID ,该组成是含有SCSI 目标设备说明符的两个CAM_U32 的一个阵列。cam –initiator id [0]组成包含SCSI 目标设备说明符的低32 位(最低有效部分), cam initiator id [l]组成包含SCSI 目标设备说明符的高32 位(最高有效部分)。
——cam seq _ id :
顺序标识符组成用于存储立即通知顺序标识符。
——cam  msg code 
消息代码组成用于为接收的消息存储SCSI 消息代码。
——cam msg args [7] ;
消息变量组成用于存储接收的SCSI 消息变量。
12.3.5.2 立即通知返回
以下仅是从主机目标设备方式外围驱动程序传送到SIM / HA 的立即通知CCB的可能的CAM状态值:

——无效的请求一表示CCB 有无效的字段。
——无效的路径ID 一表示路径ID 未知.
——无效的目标设备ID 一表示目标设备功不是该目标设各的那个功。

——无效的LUN ID 一表示目标设备LUN 不在LUN 有效范围中。
以下仪是从SIM / HA 传送到主机目标设备方式外围驱动程序的立即通知CCB 的可能的CAM 状态值:

——未检测到的HA
——未建立的联系
——接收的消息
——不可用的资源
12.3.6 通知确认CCB
XPT 的供给者定义立即通知CCB 结构如下:
typedef struct ccb _ notify3 _ ack3
{
CCB HEADER3 cam _ ch ;   / *标题信息字段*/
CAM U16 cam _ seq _ id : / *顺序标识符*/
CAM U8 cam _ event :     / *事件*/
CAM U8 cam  rsvd :
} CCB NOTIFY ACK3
12.3.6.1 通知确认CCB 的组成说明
以下列出了通知确认CCB 的组成。
——请求CCB 的发送者设置的CCB _ HEADER3 组成的信息。
cam func code :
该组成应包含XPT CAM_3 CCB 函数代码。
cam3 _ func _ code 
该组成应包含XPT NOTIFY ACK 函数代码。
port _ id 
该织成应包含一个端口号(如:SCSI 总线号)。
addr _ specl
该组成应包含SCSI 目标设备说明符.
addr _ spec2
该组成应包含SCSI 逻辑单元说明符。
cam sim _ generation
该组成应反映为当前连接操作返回的SIM连接生成号。
cam _ sim  bhandle
该组成应反映为当前连接操作返回的SIM连接处理。
——cam _ flags
该函数没有有效的cam _ flags ,位定义和位描述见11.8.1.1 中。
——cam _ seq _ id
顺序标识符组成是正被确认的顺序事件标识符。
——cam _ event
该组成包含按说明设置的位以便表示请求函数的专门处理。事件组成用于确认哪些被传递的事件以便赢得异步事件机制(总线复位和总线设备复位消息)。
该组成有一个定义的标记,该标记定义如下:
#定义CAM RESET CLEAREO 0x80 / *复位清除*/
12.3.6.2 通知确认返回
以下仅是从主机目标设各方式外围驱动程序传送到SIM/HA的通知确认CCB 的可能的CAM状态值:

——无错误完成的请求一表示该事件已被SIM/HA 确认。

——无效的请求一未知的顺序标识符.
——无效的路径ID 一表示路径ID未知。
——无效的目标设备ID 一表示目标设备ID 不是该目标设备的那个ID 。
——无效的LUN ID一表示目标设备LUN 不在LUN 有效范围中。
12.3.7 主机目标设备方式允许目标设备方式LUN
推荐SIM / HA 为异步事件通知保留LUN O 。当不这样要求时,处理主机目标设备方式和AEN就因此增加了请求的复杂性,由此提出该建议。若SIM / HA 为AEN 保留LUN 0,则对于LUN 0的所有ENABLE LUN CCB 应返回CAM 状态为已ENABLE LUN 。
当外围驱动程序希望主机目标设备方式允许一个LUN 时,它应执行下列任务:
a )发出一个路径查询到SIM / HA 以便确定它所支持的性能和选择。
b )若主机目标设备方式外围驱动程序要求接收一个CDB 之后从SCSI 总线断开,支持任选立即通知消息处理或外围驱动程序希望支持带标签的命令,则它应使用从路径查询CCB 返回的信息,用以确定SIM/ HA是否支持这些性能。推荐主机目标设备方式外围驱动程序返回反映SIM/HA性能的查询命令数据。这些特征包括宽总线32 、宽总线16 、和同步数据传送以及从路径查询CCB中所获得的特征。若SIM / HA 支持标签排队并且主机目标设备方式外围驱动程序希望支持该特征,它应在查询数据中反映。
c )主机目标设备方式外围驱动程序应为每个支持总线复位和总线设备复位注册的LUN 发出设置异步同调CCB 。
注27 :若需要,外围驱动程序应准备处理以每个启动设备为基础的偶然联系条件,因此,外围驱动程序可能需要为这种情况做一些初始配置。
d )主机目标设备方式外围驱动程序应发出ENABLE LUN CCB 给SIM ,以便注册成SIM / HA 的主机目标设备方式。ENABLE LUN CCB 应进行如下配置:
1 )若主机目标设备方式外围驱动程序请求断开并且SIM / HA 支持断开(按路径查询CCB中的断开支持字段来确定),则ENABLE LUN CCB 中的目标设备方式专用CAM标记字段中的断开必须位应被设置。
2 )若主机目标设备方式外围驱动程序支持带标签命令,并若SIM/ HA 支持标签排队,则标签排队允许位应被设置在ENABLE LUN CCB的CAM标记字段中。
3 )主机目标设备方式外围驱动程序应清除表示这是一个主机目标设备方式ENABLE LUN CCB的主目标设备方式标记。主机目标设备方式外围驱动程序应在设置它希望支持的CAM标记所有其他任选项的目标设备方式位中设置.
4 )立即通知CCB 表指针字段应指向SIM/HA 用于主机目标设备方式事件/消息通知的有效CCB 表(至少有1 组数据)。推荐这个主机目标设备方式外围驱动程序要求有一个连接的每个启动设备应至少有一个CCB 。这些CCB 是被来自空的(NULL ) XPT 层的CCB 预先分配,除非以下操作;
这个CCB 的地址和CAM控制块长度应包含本部分先前定义的适当信息。

连接ID 字段应与ENABLE LUN CCB 连接ID字段等同。
完成回调函数应被置为立即通知回调函数,当SIM / HA 检测到一个事件时,这是被回调的主目标设备方式外围驱动程序中的函数。这些事件在12.3.4中说明。

函数代码被置为立即通知。
指向断定缓冲器的指针和断定缓冲器的长度应被设置。断定缓冲器长度最小为18 字节。
注28 :如何重新得到立即通知CCB 的所有权机制见12.3.12(禁止主机目标设备方式LUN )。
5 )接受目标设备I/0 CCB 表指针字段应指向SIM 用于主机目标设备方式操作的有效CCB 表(至少有l 组数据)。这些CCB 被来自是空的(NULL ) XPT 层的CCB 预先分配,除非以下操作:
该CCB 的地址和CAM 控制块长度,这些字段应包含本部分中先前定义的适当信息。

完成回调函数应被置为接收的CDB 回调函数,当SIM 从一个启动设备接收到一个无差错的CDB 时,这是被回调的主机目标设备方式外围驱动程序中的函数。函数代码被置为接受目标设备I/0 。
若CDB 指针位被设置在接受目标设备I/0 CCB 的标记字段中,CDB 指针和CDB 长度字段应被设置。
指向断定缓冲器的指针和断定缓冲器的长度应被设置。断定缓冲器长度最小为18 字节。
注29 :对于由SIM/HA 检测到的错误条件,接受目标设备I/O和继续目标设备I/O CCB 中的断定缓冲器被用于报告回到主机目标设备方式外围驱动程序的适当的断定数据(如:主机目标设备方式外围驱动程序还没有确认的内存/RAM失败,除非由SIM/HA 报告)。
6 )若主机目标设备方式外围驱动程序支持组6 和/或组7 命令,则组6 和/或组7 售方专用CDB 长度字段应包含这些CDB 组代码的字节数。若主机目标设备方式不支持组6 和/或组7 命令,则组6 和/或组7 售方专用CDB 长度字段应等于“O”。若主机目标设备方式支持组6 和/或组7 命令,则主目标设备方式外围驱动程序应确保传送到SIM / HA 的所有接受目标设备I/O CCB 包含足够的存储以接收CDB。若售方专用命令CDB 大于期望的接受目标设备I/0 的CDB 字段,则CDB 字段应包含指向有足够长度缓冲器的指针。

e )主机目标设备方式外围驱动程序应验证成功的允许LUN ,它是通过置为无错误完成的请求的ENABLE LUN CCB中的CAM状态来检验的。
f)主机目标设备方式外围驱动程序可以在LUN 己被允许之后通过在任何时间发出接受目标设备I/O CCB到SIM/HA 来添加接受目标设备I/O CCB 表.
g )主机目标设备方式外围驱动程序可以在LUN 已被允许之后通过在任何时间发出立即通知CCB 到SIM / HA 来添加立即通知CCB 表。
注30 :一旦允许的主机目标设备方式SIM / HA 给出立即通知CCB , CCB 的控制权由SIM / HA 保持直到LUN 被禁止.

当SIM/HA 从主机目标设备方式外围驱动程序接收了目标设备CCB 的非“O”的主机目标设备方式ENABLE LUN CCB 时,它应有如下操作:
a )若LUN 已被允许,ENABLE LUN CCB 应返回的CAM状态为已ENABLE LUN。
b )若在ENABLE LUN CCB 中规定的路径ID 、目标设备ID 或目标设备LUN 无效,则允许的LUN 应以适当的CAM状态显示失败。(见12.3.8)
c)SIM /HA 应检验ENABLE LUN CCB 的目标设备方式专用CAM 标记字段中主机目标设备方式选项。若专用目标设备方式选项在该字段中被设置并且SIM 不支持这些选项,则ENABLE LUN CCB 应以CAM 状态不能提供请求能力返回。
d )SIM/HA应检验标签排队允许位是否在ENABLE LUN CCB 的CAM标记字段中被设置.若标签排队允许位被设置,但SIM 不支持标签命令,则ENABLE LUN CCB 应以CAM 状态不能提供请求能力返回.
e ) SIM /HA应检验ENABLE LUN CCB 立即通知CCB 指针字段是非“空”的,并且为表中的每个立即通知应设置立即通知CCB 回调字段.SIM / HA 应检验指向断定缓冲器是非“空”的指针,并且每个立即通知CCB 的断定缓冲器的长度最小为18 字节。若ENABLE LUN CCB 或者任何立即通知CCB 被发现有错误,则ENABLE LUN应以状态为无效的请求显示失败。
f )SIM/HA应检验ENABLE LUN CCB 目标设备CCB 指针字段是非“空”的,并且为表中的每个接受目标设备I/O CCB应设置接受目标设备I/ 0 CCB 完成回调字段。SIM / HA 应检验指向断定缓冲器的指针是非“空”的,并且每个接受目标设备I/O CCB 的断定缓冲器的长度最小为18 字节。若ENABLE LUN CCB 或者接受目标设备I/O CCB 被发现有错误,则ENABLE LUN CCB 应以状态为无效的请求显示失败。
g )若检验完成无错误之前,ENABLE LUN CCB 的CAM状态应被置为无错误完成的请求和返回的CCB。

12.3.8主机目标设备方式的ENABLE LUN CCB
XPT 的供给者定义ENABLE LUN CCB 结构如下:
typedef struct ccb _ enable _ lun3
{
CCB HEADER3 cam _ ch           / *标题信息字段*/
CAM U16 cam _ grp6 _ length / *组6 售方专用CDB 长度*/
CAM U16 cam   grp7 _ Iength / *组7 售方专用CDB 长度*/
CAM U8 * cam _ immed _ notify _ list/ *考旨向立即通知c 仍表的指针*/

CAM U32 cam immed _ notify cnt / *立即通知CCB 号*/
CAM U8 * cam_accept_ arg list / *指向接受目标设备I/0 CCB表的指针*/
CAM U32 cam accept _ targ _ cnt/ *接受目标设备I / 0 ccB 号*/
} CCB _ EMBLE _ LUN

12.3.8.1主机目标设备方式的ENABLE LUN CCB的组成说明

  ——请求CCB的发送者设置的CCB_HEADER3组成的信息。

    ·    cam func code

    该组成应包含XPT CAM_3_CCB函数代码。

    ·    cam3_func code

    该组成应包含XPT EN LUN函数代码。

    .    port id:

    该组成应包含一个端口号(如:SCSI总线号)。

    ·    addr_specl:

    该组成应包含SCSI目标设备说明符。

    ·    addr_spec2:

    该组成应包含SCSI逻辑单元说明符。

    ·    cam_sim_generation;

    该组成应反映为当前连接操作返回的SIM连接生成号。

    ·    cam_simbhandle:

    该组成应反映为当前连接操作返回的SIM连接处理。

    ——cam_flags;

    以下是该函数有效的cam_flags,cam  flags位的完成描述见11.8.1.1.

    ·  阶段-认知方式(CAM-TGT_PHASE_MODE)对于主机目标设备方式应被置为“0”.

    ·  标签排队操作允许(CAM-QUEUE_ENABLE)  -表示对SIM/HA,主机目标设备方式外围驱动程序请求标签排队操作.

    ·  断开必须(CAM-DISCONNECT) -表示对SIM/HA,任何接收的监型消息应具有DiscPriv位设置。若当断开必须CAM标记表示它被请求时DiscPriv位未被设置,则12.3.9.2描述了SIM/HA响应。

    ——cam_grp6_length:

    若目标设备外围驱动程序支持具有组代码为“6”的售方专用CDB,则CCB的CDB长度字段应反映所支持CDB的最火长度。

    ——cam—grp7_length;

    若目标设备外围驱动程序支持具有组代码为“7”的售方专用CDB,则CCB的CDB长度字段应反映所支持CDB的最大长度。

    ——cam_immed—notify list

    指向立即通知CCB表字段的指针应包含为允许的LUN请求指向立即通知CCB表的指针,表格式见表I5.

——cam_i.mmed-notify-cnt~

    立即通知CCB的号应被置为通过为允许的LUN请求指向立即通知CCB表字段的指针指向的CCB号(大于“0”)。

    ——cam_accept_targ—list;

    指向接受目标设备.CCB表组成的指针应包含为允许的LUN请求指向接受目标设备I/O CCB表的指针.对于禁止=LUN,请求,该字段应为“0”.表格式见表l6.

——cam_accept_targ cnt:

接收目标设备CCB的号应被置为允许的LUN请求指向接受目标设备CCB表字段的指针指向的CCB号(大于“0”)对于禁止=LUN,请求,该字段应为“0”

 

 

表15 CAM-3立即通知CCB表

CAM-3立即通知CCB表

CCB_IMMED_NOTIFY3 *

CCB_IMMED_NOTIFY3 *

·

·

CCB_IMMED_NOTIFY3 *

表16 CAM-3接受目标设备I/O CCB表

CAM-3接受目标设备I/O CCB表

CCB_EXECT_TARGET3 *

CCB_EXECT_TARGET3 *

·

·

CCB_EXECT_TARGET3 *

12.3.8.2 ENABLE LUN返回

以下知识ENABLE LUN CCB的可能CAM状态返回值

——错误完成的请求-完成无错误

——已允许的LUN-指定的目标设备方式LUN已被允许

——无效的路径ID-表示路径ID未知

——无效的目标设备ID-表示目标设备ID不是该目标设备的ID。

——无效的LUN ID -表示目标设备LUN不是LUN有效范围中的,

——无效的请求一对于表记数大于“0”的ENABLE LUN CCB.该CAM状态表示CCB内无效的字段,对于表记数为“O”的ENABLE LUN CCB(禁止LUN)见11.3.11。

——不能提供请求的能力

    a)SIM不支持目标设备方式.

    b)主机目标设备方式外围驱动程序请求断开,但SIM不支持断开。

    c)主机目标设备方式外围驱动程序请求运行带标签命令的能力,但SIM不支持该性能,

——CCB长度不足一表示CCB中要求较多的专用数据区域。 1597
国家标准下载

下载说明:
1.请先分享,再下载
2.直接单击下载地址,不要使用“目标另存为”
3.压缩文件请先解压
4.PDF文件,请用PDF专用软件打开查看
5.如果资料不能下载,请联系本站
最新评论
发表评论
大名:
联络: QQ 或者 邮箱
内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。

验证码: 6323