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

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

时间:2012-5-28 14:42:50 作者:标准吧 来源:SJ 阅读:1662次
SJ 20820.9 2002 信息技术  小计算机系统接口SCSI 3基本命令层 第9部分:公共访问方法11
  12.2.2阶段认知ENABLE LUN 的函数说明
    LUN 的禁止被成功实现之前,目标设备外围驱动程序不应更改该表。
    指定的目标设备功和LUN 被路径ID 字段规定的SCSI 总线禁止之前,SIM / HA 应把指针指向表中的CCB 表。当阶段一认知方式操作ENABLE LUN 时,每个目标设备CCB 的CAM状态字段应被置为进行中的请求.需要目标设备外围驱动程序去轮询目标设备CCB 的CAM状态字段或提供目标设备CCB 中的完成回调例程。
    通过ENABLE LUN CCB 提供给SIM/HA 的CCB 仅被用于CDB 的接受和I/0 处理的继续(链接的命令)。目标设备外围驱动程序应使用其它分配的执行目标设备I/0 CCB ,以便接收/传输数据、消息和状态给选择的启动设备。当允许阶段一认知LUN 时,推荐目标设各备外围驱动程序至少供给每个希望通信的启动设备一个CCB 。
    SIM/ HA 应保持在ENABLE LUN服务上提供的无论是单个CCB 还是CCB 表的一个指示。                                           SIM / HA 在首先提供每个执行目标设备I / 0 CCB 时应有如下设置:
——CAM状态为正进行中的请求
——CAM 标记应与ENABLE LUN CCB 中的那些标记相同
——CAM 标记应用目标设备CCB 有效位来设置
在所提供的执行目标设备I/0 CCB 中.下列信息存在并有效:
——对可能被接收的命令块CDB 字段有效。即,或者CDB 被嵌入CCB 中,或者CDB 字段中提供指向CDB 缓冲器区域的指针。
——超时值字段应置为无限值.
若目标设备外围驱动程序支持售方专用CDB ,那么CCB 的CDB 长度字段应反映所支持CDB 的最大长度。若期望一个CDB 大于CDB 字段的大小,那么CDB 字段应包含一个指向CDB 缓冲器的指针。

为禁止特殊LUN的选择,目标设备外围驱动程序对某个目标设备CCB 执行带有一个,“0”值的ENABLE LUN

对不被允许的LUN ,在SIM/HA 接收一个CDB 时,依据所接收的命令下列顺序之一会发生:

查询命令

若未经允许的LUN 接收一个查询命令的CDB , SIM应只返回查询数据“23H ”的字节“0”

1)外围限定符被置为“O1B ”表示目标设备能够支持这个逻辑单元上的物理设备,然而,物理设备当前未被连接到这个LUN
2 )外围设备类型置为“3H”,表示处理器设备类型。
b )请求断定命令
若未经允许的LUN 接收一个请求断定命令,SIM 应返回断定键被置为非法请求及附加断定代码被置为逻辑单元不支持
c )其它命令
若未经允许的LUN 接收的命令不是查询或请求断定,返回的SCSI 状态应是检验情况。任何后续的请求断定命令实现如附录B
12.2.3 阶段认知方式的I/0 处理建立
    若HA 被选择,此时SCSI 总线信号ATN 为假,则SIM/HA应进入总线空闲阶段。当HA 被选择时,SIM / HA 自动设置HA 为消息出阶段以便接收由启动设备发送的识别、同步数据传送请求和其它消息。SIM / HA 应按SJ 20631 一97 和本部分的定义响应这些消息。
    SIM / HA 应保持一个指示(以售方专用方式),即在每个启动设备基础上的每个允许的阶段一认知LUN 上存在一个I / 0 处理。对于I/0 处理或终止I/0 处理的一个SCSI 控制消息,从I/0 处理建立(CDB 接收并传送到目标设备外围驱动程序)到命令完成消息应保持该指示(见SJ20631 一97 中控制消息)。在中止、中止I/O处理和总线设备复位消息以及总线复位的操作中,为在目标外围驱动程序和SIM / HA 之间正确协调LUN 的行为应保持该指示。更进一步的信息见12.2.5 。
    若识别消息的LUNTAR 位(或任何保留位)被置“1”, SIM / HA 应发送消息拒绝消息回到启动设备,并进入总线空闲阶段。
    应从识别消息中析取LUN ,并且SIM / HA 应扫描允许LUN提供的CCB 中的CAM标记。若没有目标设备CCB 可用位设置SIM/HA应传送忙碌状态并随后发送一个命令完成消息。启动设备ID 字段应被置为执行选择的启动设备lID ,对后续功能,诸如重新选择,目标设备外围驱动程序应使用该字段确定该启动设备的ID 。

注18 :目标外围驱动程序应确保具有目标CCB 可用位设置的CCB 一般专用于链接命令.
   若识别消息中的DiscPriv位被设置,导致CAM标记的禁止断开位正被清除,及CAM 标记字段的禁止自动断开位被清除,则SIM / HA 应自动断开命令块的接受。清除CAM标记中的CCB 可用位,并且目标设备外围驱动程序回调之前应执行断开。
    CAM标记字段中的禁止断开位将被修改以表示从启动设备接收识别消息中的DisoPriv 位状态。若在识别消息中设置DiscPriv 位,则禁止断开位应被清除,反之亦然。
    注19 : CAM 标记中的禁止断开位的默认状态被清除,意味着允许断开。
    若在消息出阶段的初期接收了中止、终止I / 0 处理或总线设备复位消息,SIM/HA 应按12.2. 5的规定处理这些消息。一旦完成了消息出阶段初期,SIM/HA 自动设置HA 到命令出阶段以请求SCSI CDB 。接收SCSI CDB 字节之后,SIM/HA 应设置CAM状态字段为接收的SCSI CDB 的CAM 状态。SIM / HA 应清除CAM 标记中的CCB 可用位,并且若这个CCB 的禁止完成回调的CAM 标记为“0”,则SIM /HA应回调目标设备外围驱动程序。
    若CDB 操作码的组码为售方专用,SIM / HA 应对这个LUN 传送允许LUN CCB 中规定的CDB 字节数.输入CDB 中的组码(6 或7 )应选择来自允许LUN CCB 的售方专用CDB 大小。若选择的CDB 大小(在允许LUN CCB 中规定的)为“O ”, SIM / HA 应只传送CDB 操作码.若请求的字节数未被传送或这个组码规定的大小为“O”, SIM 应在所选的CCB 中设置所提供区域中传送的CDB 字节,并设置CA M状态为无效的CDB . SIM 随后应清除CAM标记中的CCB 可用位,并且若这个CCB 的禁止完成回调的CAM标记为“0”SIM / HA 应回调目标设备外围驱动程序。
    回调时接受了CDB 或以目标设备方式CCB 通知了CCB 可用位被清除时,目标设备外围驱动程序应处理该CCB(如:确定如果CDB 有效,则从该目标设备CCB 拷贝有关数据)。处理了来自目标设备CCB 的CDB 之后,目标设备外围驱动程序应在回送CCB 到SIM / HA 过程中设置CAM 标记中的CCB 可用位。

目标设备外围驱动程序应按SJ20631 一97的定义完成全部I/O 处理操作。SIM/HA 传送目标设备CCB 到目标设备外围驱动程序,其CAM 状态为接收的CDB 或是无效的CDB 。所有关于建立一个I/0 处理的其它事件应透明处理,除非另有规定。
12.2.4 阶段认知方式的I/0 处理的继续和完成
    SIM / HA 应通过目标设备外围驱动程序调用作为变量的带有CCB 地址的xpt _ action ()接收来自目标设备外围驱动程序的执行目标设备I/O CCB 。SIM / HA 应依据12.2.4 、12.2.5 和12.2.6 中规定的条件拒绝CCB 。
    SIM 应拒绝不是无限大超时值的任何CCB , CAM 状态为无效的请求。
    若SIM/HA 在接受CDB 之后已断开或在完成先前的执行目标设备I/0 (在相同的I/0 处理中)时已断开,SIM / HA 应执行一个自动重新选择。
    若数据有效位被设置.SIM / HA 应进入通过在CAM标记字段中的方向位指示的数据阶段(如:数据入或数据出)。它应发送由CAM方向标记指示的数据到CCB 分散集中表或数据指针中指示的缓冲器,或接收来自CCB 分散集中表或数据指针中指示的缓冲器中由CAM方向标记指示的数据。CAM方向标记解释如下:
——位7=“0”,位6 =“O”:保留(CAM _ DIR  RESV )
——位7 =“0”,位6= “l”:数据入启动设备(数据从目标设备到启动设备CAM DIR IN) ——位7=“1”,位6 =“0”:数据出自启动设备(数据从启动设备到目标设备CAM DIR _ OUT)

—— 位7=“l”,位6=“l”:无数据传送(CAM DIR NONE )

若状态缓冲器有效位被设置,SIM / HA 应发送SCSI 状态字段中规定的状态字节到现行启动设备,随后若消息缓冲器有效位被清除,则发送命令完成消息并进入总线空闲阶段。若状态缓冲器有效位和消息缓冲器有效位都被设置,则SIM / HA 应发送SCSI 状态字段中规定的状态字节到现行启动设备,接着发送消息缓冲器中包含的消息。消息缓冲器应包含如下之一的单个消息;
——链接命令完成
——链接命令完成(带标记)
    成功传输链接命令完成或链接命令完成(带标记)消息之后,SIM / HA 应执行如下操作:

——传送在执行目标设备I/O CCB 中请求的CAM状态并回调所规定的目标设备外围驱动程序。

——若目标设备CCB 对SIM/ HA 可用,则进入命令阶段并接收下一个链接命令的CDB 字节。

——若目标设备CCB 对SIM / HA 不可用,则SIM/HA不应改变阶段并等待直到目标设备CCB 可用。一旦目标设备CCB 可用,SIM / HA 应进入命令阶段并接收下一个链接命令的CDB 字节。

注20 :若目标设备CCB 对SIM / HA 无效,目标设备外围驱动程序能够挂起该SCSI 总线。为防止这种情况发生,应注意链接命令是否得到支持。
    若消息缓冲器有效位被设置并且状态缓冲器有效位被清除,则SIM / HA 应进入消息阶段并传送消息缓冲器的内容。目标设备外围驱动程序不应把断开消息放入消息缓冲器并设置消息缓冲器有效位。SIM / HA 应能检测到消息缓冲器中的断开消息,若SIM / HA 检测到该条件,SIM / HA 不应进入消息阶段传输消息。SIM / HA 应按本部分的定义处理由执行目标设备I/O CCB 指示的所有其它阶段。
    SIM/HA应接收和响应由启动设备建立ATN 的任何消息,还有发送到启动设备的任何消息(有关更进一步的信息见12.2.5)。
    SIM / HA 应能执行由CAM标记字段中的缓冲器有效位指示的所有阶段,在一单个调用执行目标设备I/0(如:若设置了多个位)中,阶段执行的次序应是数据阶段、状态阶段和消息阶段。

若为一个调用执行目标设备I / 0 而设置状态缓冲器有效位或CAM 标记字段的消息缓冲器有效位,则应禁止使用自动断开和自动保存功能。
    进入总线空闲阶段或从SCSI 总线断开(如:发送一个断开消息)并进入总线空闲阶段由以下操作来控制:
——若SCSI 总线上成功传输了一个命令完成消息,SIM / HA 应进入总线空闲阶段。

——若CAM 标记的禁止自动断开位被清除,CAM 标记的禁止断开位被清除.则SIM / HA 应断开由数据缓冲器有效位设置规定的数据传送完成。若CAM标记的禁止自动保存位被清除,则在发送断开消息之前,SIM / HA 应发送保存数据指针消息到启动设备,
    在执行目标设备I/O CCB 中规定了完成函数后,SIM / HA 应在CCB 中传送请求的CAM状态,若按规定完成则回调目标设备外围驱动程序。
    执行最后的目标设备I/0 后,目标设备外围驱动程序应考虑设置禁止自动保存位,即禁止发送保存数据指针。
12.2.5 阶段认知方式的非透明事件处理
    对于一个允许阶段-认知LUN ,当SIM / HA 从启动设备接收了一个中止消息时,它应执行以下操作;

——进入总线空闲阶段:
——若这个I _ T  L上正进行一个I/0 处理,并且执行目标设备I/O CCB 由SIM/HA来保持,CAM状态为进行中的请求,则SIM / HA 应对目标设备外围驱动程序返回CCB , CAM状态字段置为由主机中止的请求;
——若这个I _ T  L上正进行一个I/0 处理,则这个I_ T L 应拒绝接收所有执行目标设备I/O CCB , CAM 状态字段置为由主机中止请求的CAM 状态,并且返回状态为由主机中止请求,直到这个I T L 上有一个新的I/Q 处理进行;
——若这个I _ T  L 上没有I/0 处理,则只需为响应消息进入总线空闲阶段即可:
对于一个允许的阶段一认知LUN ,当SIM/HA 从启动设备接收了总线设备复位消息时,它应执行以下操作:
——进入总线空闲阶段:
——按11.2 的规定执行一个异步事件回调(如:返回由SIM / HA 保持的所有执行目标设备I/O CCB,CAM状态为总线设备复位发送):
——对所有允许的阶段一认知LUN ,确定这个目标设备的I/0 处理是否存在(以售方专用方式)。

——若这个目标设备正进行一个I/0 处理,则它应拒绝所有的执行目标设备I/O CCB 发送允许的阶段一认知LUN , CAM状态字段置为总线设备复位送送的CAM 状态,并返回总线设备复位发送状态,直到在一个特定的I _ T _ L 上建立一个新的I / 0 处理;
当SIM/HA 从一个启动设备接收了一个终止I / 0 处理消息时,对于一个允许的阶段一认知LUN ,它应执行以下动作:
——若这个I _ T _ L 上正进行一个I / 0 处理,并且SIM / HA 没有保持执行目标设备I/O CCB :

——若识别消息己设置DiscPriv位,SIM/HA 应从SCSI总线上断开:
——SIM /HA 应拒绝在这个I T L 上接收下一个选执行目标设备I/O CCB , CAM 状态字段置为终止I/O处理的CAM状态,并返回终止I/O处理状态,以后这个I T L 接收的所有后续执行目标设备I/O CCB 应被正常处理;

——若这个I T L 上正进行一个I / 0 处理,并且由SIM / HA 控制达执行目标设备I/O CCB , CAM 状态为进行中的请求,而且SCSI 状态还没被发送。
——若I/O 处理是现行I/0 处理,SIM/HA应检查CAM 标记以确定是否从允许的SCSI 总线上断开。若CAM 标记字段的禁止自动断开位被清除,并且CAM标记字段的禁止断开位被清除,那么SIM / HA 应从SCSI 总线上断开。若数据传送由数据缓冲器有效位设置来规定,并且CAM标记字段的禁止自动保存位被清除,那么在发送断开消息之前SIM /HA 应发送保存数据指针消息给启动设备。
——若规定了数据阶段,SIM / HA 应适当设置CCB 的剩余长度字段并返回CCB 到目标设备外围驱动程序,CAM状态为些止I/O处理。
——SIM/ HA 不应在这个I T L上拒绝任何后续的执行目标设备I/O CCB :
——若这个I _ T  L 上正进行一个I/O处理,并且由SiM / HA 控制刨执行目标设备I/O CCB ,而且SCSI状态已被发送,则SIM / HA 应继续这个CCB 的正常处理:
——若这个I T L 上没有I/0 处理,则只需为响应消息进入总线空闲阶段即可;
当SIM / HA 接收了来自启动设备的启动设备检出错误消息时,对于一个允许的阶段一认知LUN ,它应执行如下动作:
——若这个I T L 上正进行一个I/0 处理,而且SIM/HA 没有控制执行目标设备I/O CCB :

——若识别消息已设置DiscPriv 位,SIM / HA 应从SCSI 总线断开;
——若这个I T L 上正进行一个I/0 处理,它应拒绝接收下一个执行目标设备I/O CCB , CAM状态字段置为启动设备检出错误的CAM状态,并返回启动设备检出错误状态,以后这个I T L 接收的所有后续执行目标设备I/O CCB 应被正常处理:
——若这个I_T L 上正进行一个I/0 处理,并且SIM / HA 控制执行目标设备I/O CCB,CAM状态为进行中的请求;
——SIM / HA 应检查CAM标记以确定是否从允许的SCSI 总线上断开。若CAM 标记字段的禁止自动断开位被清除,并且CAM标记字段的禁止断开被清除,则SIM/HA 应从SCSI 总线上断开:

——若指定一个数据阶段,SIM/HA 应适当设置CCB 的剩余长度字段.并返回CCB 到目标设备外围驱动程序,CAM状态为启动设备检出错误;
——SIM / HA 不应拒绝这个I T L上的任何后续的执行目标设备I/O CCB
——若这个I T L 上没有I/0 处理,则只需为响应消息进入总线空闲阶段即可;
当SIM / HA 检出一个总线复位,对于一个允许的阶段一认知LUN ,它应执行以下操作:

——按11.2 的规定执行一个异步事件回调(如:返回由SIM / HA 控制的所有执行目标设备I/O CCB , CAM 状态为发送/接收总线设备复位)
——对所有允许的阶段一认知LUN ,确定这个目标设备的I/0 处理是否存在(以售方专用方式)。

——若这个目标设备上正进行一个I/0 处理,它应拒绝所有执行目标设备I/O CCB 发送到允许的阶段一认知LUN 的,CAM状态字段置为发送/接收总线设备复位的CAM 状态.并返回发送/接收总线设备复位状态,直到在一个特定的I _ T  L 上建立一个新的I/O处理:
    若目标设备外围驱动程序接收了一个执行目标设备I/O CCB , CAM状态为终止I/O处理或启动设备检出错误,则I/0 处理仍存在于由CCB 规定的IT L 中.目标设备外围驱动程序应按SJ 20631 一97中的规定负责完成该I/0 处理。
12.2.6 执行目标设备I/0 CCB
    该函数一般返回进行中的请求的CAM状态,表示该请求被成功排队。请求完成能通过轮询不是进行中的请求CAM状态或通过使用回调完成字段来确定。CCB 的完成不推荐采取轮询。
    SCSI命令描述块或者是相邻16 字节的一个阵列或者是指向相邻字节组成的阵列的指针。CDB UN 结构的描述和定义见11.8.1.1 。
    XPT 的提供者应定义执行目标设备I/0 请求CCB 结构如下:
typedef struct ccb _ exec _ target3
{
CCB _ HEADER3 ccb _ header3 ;     / *标题信息字段*/
CCB _ HEADER3 * cam next _ ccb ; / *为动作指向下一个CCB 的指针*/
CAM   VOID OFFSET * cam _ req _map ; / *映象到请求的信息指针*/

CAM   V0ID ( * cam _ cbfcnp ) (): / *完成函数回调*/
CAM   U8 * cam datae  ptr ; / *指向数据缓冲器/SG 表的指针*/
CAM   U32cam _ dxfer _ len ; / *数据传送长度*/
CAM   U8 cam _ cdb _ len ; / * CDB 的字节数*/
CAM   U8 cam _ reservedl ; / *保留校准*/
CAM   U16cam _sglist _ cnt ; / *分散集中表个数*/
CAM   U32cam vu _ field ; / *售方专用字段*/
CAM   U8 cam  scsi _ status ; / *返回SCSI 设备状态*/
CAM   U8 cam _ reserved2 ; / *保留校准*/
CAM   U16 cam _ sense _ resid ; / *自动断定驻留长度:2 ' s comp */
CAM   132cam resid ; / *传送剩余长度:2 's comp * /
CAM   U32cam timeout ; / *超时值*/
CDB   UN3cam _ cdb _ io;/ * CDB 字节/指针的结合*/
CAM   U8 * cam msg _ ptr ; / *指向消息缓冲器的指针*/
CAM   U16cam  msgb _ len : / *消息缓冲器中的字节数*/
CAM   U16cam _ vu _ flags : / *售方专用标记*/
CAM   U8 cam tag action ; / *标记怎样排队‘/
CAM   U8 cam _ reserved3[3] :/ *保留校准*/
CAM   U32cam _ tag id : / *标记ID * /
CAM   U32cam _ initiator id [2] ;/ *启动设备ID 目标操作*/
CAM   U16cam _ sense _ len : / *自动断定请求的字节数*/
CAM   U8 cam _ reserved4 : / *保留校准*/
CAM   U32cam sim sense [16] :/ *重新得到断定数据SIM 的工作区域*/ cAM CAM   U8cam _ sense _ buf [256〕 ;/ *断定数据缓冲器*/
} CCB SCSIIO3 :
12.2.6.1 执行目标设备I/0 请求的组成说明
执行目标设备I/0 请求CCB 具有精确的结构格式作为执行SCSI I/ 0 CCB 。该章条中的组成说明引用了用于执行目标设备I/ 0 请求CCB 的组成名称。对完成结构组成说明见11.8.1.1 。

——请求CCB 的发送者设置的CCB HEADER3 组成的信息。
·cam _ func _ code ;
该组成应包含XPT CAM _ 3 CCB 函数代码。
·cam3 _ func code ;
该组成应包含XPT TARGET I0 函数代码。
·port _ id ;
该组成应包含一个端口号(如:SCSI 总线号)。
·addr _ spec1:
该组成应包含SCSI 目标设备说明符。
·addr   spec2;
该组成应包含SCSI 逻辑单元说明符。
·cam _ sim _ generation :
该组成应反映为当前连接操作返回的SIM 连接生成号。
·cam_sim  handle ;
该组成应反映为当前连接操作返回的SIM 连接处理。
——cam _ flags ;

以下是该函数有效的cam _ flags ,位定义和位描述见11.8.1.1 中。
CAM 方向标记规定了关于SCSI 启动设备的数据传送方向。这些标记仅在数据位( CAM DATAB _ VALID )被设置时有效。这些编码位识别数据传送期间数据移动的方向。分散/集中表在置“1”时有效(CAM SCATTER  VALID ) ;
禁止回调完成(CAM DIS _ CALLBACK )
链接的CDB ( CAM  CDB_ LINKED )
CDB 组成是一个指针(CAM CDB  POINTER ) 
内存类型(虚拟/物理)的有效CAM 标记。
◇置“1”时CDB 指针是物理指针(CAM  CDB PHYS ) 
◇置“1”时数据缓冲器/分散集中指针是物理指针〔CAM DATA PHYS) 
◇置“1”时消息缓冲器指针是物理指针(CAM MSG BUF PHYS ) 
◇置“1”时下一个CCB 指针是物理指针(CAM NXT CCB PHYS ) 
◇置“l”时回调完成指针是物理指针(CAM CALLBCK PHYs )
◇置“l” 时分散/集中表在SG ELEM 结构的阵列中是物理指针(CAM SG _ LIST                    PHYS ) ;

目标设备方式标记;
◇缓冲器有效位:

-置“1”时数据缓冲器有效(CAM_DATAB VALID )
-置“l”时状态有效(CAM STATUS VALID )
-置“l”时消息缓冲器有效(CAM MSGB VALID )
-置“l”时目标设备CCB 可用(CAM TGT CCB AVAIL )
-置“1”时自动断开,该位禁止自动断开〔CAM  DIS AUTODISC )
-置“1” 时自动保存,该位在阶段一认知方式中禁止自动保存功能〔CAM DIS AUTOSRP )

——cam _ req _ map
请求映象信息结构指针(OSD 数据结构)
——cam  cbfcnp :
一个排队CCB 的回调完成;
——cam _ data _ ptr ;
cam 数据缓冲器指针;
——cam  dxfer _ len :
cam 数据传送长度:
——cam_cdb _ len ;
CDB 长度组成应包含放置CDB 缓冲器的字节长度:
——cam _ sglist _ cnt :
分散/集中入口号;
——cam _ vu _ field :
售方专用:
——cam _ cdb _ 10 :
cam CDB 组成或者包含SCSI CDB (命令描述块).或者包含指向CDB 缓冲器的指针.

——cam msg  ptr :
消息缓冲器;
——cam msgb _ len 
消息缓冲器长度;
——cam vu _ flags
售方专用标记;

——cam initiator  id 
启动设备标识符:
12.2.62 执行目标设备I/O CCB 的最终CAM 状态
——最终CAM 状态应是下面之一:
——无错误完成的请求:请求己完成并且没有遇到错误条件.
——由主机中止的请求:该请求按启动设备的指示由SIM / HA 中止.
——带错误的完成请求:请求已完成并遇到一个错误条件。
——CAM忙碌:CAM 不能在这时接受请求。
——无效的请求:因为它是无效的,所以该请求已被拒绝。
——无效的路径ID :表示该路径ID 无效。
——目标设备选择超时:指定的启动设备响应重新选择失败。
——接收消息拒绝:在响应消息缓冲器中发出的消息时,SIM / HA 接收到一个SCSI消息拒绝消息。

——发送/接收SCSI总线复位:在SCSI 总线被复位的某点上终止SCSI 操作。
——检出不正确的奇偶校验错:检出不正确的SCSI 总线奇偶校验错。
——未检出HA : HA 不再响应SIM (假定是硬件问题),
——CCB 长度不足:请求CCB 中更多的专用数据区域(更进一步的说明见11. 7.5)

——不能提供请求的实际能力:没有可用的资源提供CAM 标记中的请求能力。
——发送总线设备复位:因为总线设备消息被发送给目标设备,所以该CCB 终止。

——终止I / 0 处理:由于SIM / HA 为指定的I T L接收终止I/O处理消息,所以终止该CCB 。

——不可恢复主机总线适配器错误:因为HA 检出的硬件错误,该CCB 被终止。该错误不表示SCSI 总线问题,而是HA 或主机中的错误.
——启动设备检出错误:由于SIM / HA 为指定的I T L接收终止启动设备检出错误消息,该CCB 终止。

——无效的CDB :表示SIM / HA 在接受CDB 时已检出一个错误条件.
——无效的LUN :表示指定的逻辑单元在支持的SCS 工总线范围之外。
——无效的目标设备ID:表示目标设备ID 不与通过路径ID 字段规定的HA匹配。

——未建立的联系:对于任何启动设备,在当前指定的目标设备ID 和目标设备LUN 之间没有连接建立。
——无效的启动设备ID :指定的启动设备ID 在支持的有效范围之外。
注21 :若目标设备试图重新选择一个启动设备而不是先前连接的,则返回该状态。

——接收SCSI CDB :表示目标设备已被选择并且SCSI CDB 现存于CCB 中。
——SCSI总线忙碌:在一些不同的总线空闲阶段期间,SIM 未能赢得SCS总线的仲栽。

12.3 主机目标设备方式
12.3.1 未规定的主机目标设备方式功能
本部分不对主机目标设备方式操作的以下SCSI 功能寻址:
a 〕UNTAR;
b )链接命令;
c )扩展的偶然联系;
d )软复位。
12.3.2 SCSI 串行互连
主机目标设备方式规定了仅适用于SCSI 互锁协议(SIP )的某些特性。这些特性是:

——总线空闲阶段;
——SCSI 断开:
支持SCSI 串行互连协议(如:SSA 、SBP 和FCP )的SIM/HA 实现者按规定应忽视这些特性.SCSI 串行互连协议没有这些特性的函数概念。

12.3.3主机目标设备方式消息
以下对主机目标设备方式SCSI 消息的概述围绕两个主要要点。该要点是透明处理消息和通知处理消息。这两个主要要点能进一步的划分必须消息和任选消息。透明处理消息意味着SIM /HA应处理消息,而且不对外围驱动程序通知该消息。通知处理消息意味着SIM / HA 将接收消息并按本部分的规定通知主机目标设备方式外围驱动程序。为通知处理消息,SIM / HA 应保持关于该消息的某些状态信息,但如何实现该消息留待SIM 川A 实现者来判断。
a )须透明处理消息
1 )命令完成
2 )识别
3 )启动设备检出错误
4 )消息奇偶校验错误
5 )消息拒绝
6 )无操作
b ) SIM / HA 判断的任选透明处理消息
l )断开
2 )忽略宽度余项
3 )修改数据指针
4 )恢复指针
5 )保存数据指针
6 )同步数据传送请求
7 )宽数据传送请求
c )要求通知给主目标设备外围驱动程序的必须消息处理
1 )终止消息
2 )主机目标设备方式外围驱动程序应由立即通知CCB 机制通知
3 )总线设备复位消息:主机目标设备方式外围驱动程序应由异步事件机制通知。d )要求通知给主机目标设备方式外围驱动程序的任选消息处理
1 )中止标记
2 )消除排队
3 )排队头标签(见11.3.8 )
4 )顺序排队标签(见11.3.8 )
5 )简单排队标签(见11.3.8 )
6 )终止I/O 处理
注22 :为进一步的了解,见12.3.4 (使用立即通知CCB )、12.3.5 (对主机目标设备方式允许目标设备方式LUN )、和12.3.9 (接收目标设备I/O和继续目标设备I /O CCB 操作)。
12.3.4立即通知CCB 的使用
    立即通知CCB 仅对主机目标设备方式使用。它用于通知SIM/HA检出事件的主机目标设备方式外围驱动程序.立即通知CCB 一旦由ENABLE LUN CCB 传送到SIM / HA ,对它的独占使用应由SIM / HA 来保持。立即通知CCB 的所有权在成功完成禁止目标设备方式LUN之前不返回到主机目标设备方式外围驱动程序.对于主机目标设备方式外围驱动程序,立即通知CCB 内容只在SIM / HA 为通知一个事件进行回调的地方有效。主机目标设备方式外围驱动程序应在那个地方读取它的内容以便确定事件和断定数据。回调返回时,立即通知CCB 的内容不再被认为有效。
    来自SIM/HA 的立即通知机制对应于通知确认机制。立即通知CCB 应包含主机目标设备方式LUN 唯一的顺序标识符。对于通过回调机制传递到主机目标设备方式外围驱动程序的每个事件/消息,主机目标设备方式外围驱动程序应有如下操作

a )任何处理需要与本部分和SJ 20631-97 一致。
b )发出一个通知确认CCB ,其顺序标识符字段置为来自正处理的事件/消息的立即通知CCB 的顺序标识符字段的值。
    来自主机目标设备方式外围驱动程序的立即通知和通知确认应是一一对应的,对LUN 的每个立即通知应有一个通知确认。
    顺序标识符对每个主机目标设备方式LUN 应是唯一的,对于主机目标设备方式LUN ,没有两个相同的顺序标识符在同一时间内使用。顺序标识符的“使用中”是指从调用外围驱动程序回调到从外围驱动程序接受到通知确认这段时间。顺序标识符不应是“O”值。
    若由要求通知返回到主机目标设备方式外围驱动程序的SIM / HA 检出一个事件/消息,并且没有立即通知CCB 可用,则SIM/HA 应有如下操作:
a)按本段后面的规定记录关于事件/消息的所有信息,并以FIF0 方式保存事件/消息。

b )当立即通知CCB 变为可用时,SIM / HA 应利用本段后面规定的机制通知主机目标设备方式外围驱动程序使用。
    主机目标设备方式外围驱动程序通知的次序和SIM / HA 释放SCSI 总线到总线空闲阶段的时间未进行规定。对总线空闲阶段和12.3.4.1 中规定的外围驱动程序回调的变化可能是次序上的变化,但两种(次序、时间)变化都需要。在所有其他情况中,12.3.4.1 表中操作的次序是那些应被执行的操作次序。对一个扩展消息,规定了SIM / HA 把扩展消息变量放置到立即通知CCB 消息变量字段中的次序。在接收了扩展消息代码之后,所有接收的扩展消息字节应以所接收次序的升序方式被放置在立即通知CCB 消息变量字段中。扩展消息代码之后接收的第一个扩展消息变量字节应被置入消息变量阵列[0]字段中,随后接收的扩展消息变量字节应被置入消息变量阵列[l]字段中.
    对于SCSI中止和消除排队消息,规定了CCB 被返回到主机目标设备方式外围驱动程序和立即通知CCB 回调作用于驱动程序的次序。该次序如下所示:
a )所有继续目标设备I/O CCB
b )立即通知CCB 回调到主机目标设各备方式外围驱动程序
12.3.4.1 使用立即通知机制的事件/消息
12.3.4.1.1 在还没有建立互连的地方断定数据保存
    请求或选择提供的某些事件由目标设备进行断定数据保护。这些事件在SJ 20631 一97 中规定。若SIM / HA 检测到这些事件中的任一个,SIM / HA 应按如下所示响应每个允许的主机目标设备方式LUN :

a)设置立即通知CCB 的路径ID 为该总线的总线号和SIM/HA的目标设备ID 。
b)SIM /HA应为该事件构成要求的SCSI-2 的18 字节正确的断定数据并把该断定数据放入立及通知CCB 提供的断定缓冲器中。若断定缓冲器中字节为“O”,表示无断定,这不认为是一个错误。然而,主机目标设备方式外围驱动程序不应被要求保存无断定数据。
c)SIM / HA 应设置CAM 状态为立即通知CCB 中未建立的连系,这表示一个连系还没有建立。

d)SIM / HA 应指示立即通知CCB 的CAM状态字段中自动断定有效。自动断定有效表示主机目标设备方式外围驱动程序的断定缓冲器数据有效并能够被复制。若下一个接收的命令是请求断定,主机目标设备方式外围驱动程序应为以后使用保存复制的断定数据。
e)SIM / HA 应形成一个唯一的顺序标识符并把它置入立即通知CCB 顺序标识符字段中。

f)SIM /HA应把SCSI总线转变为总线空闲。SIM / HA 应使用有效的立即通知CCB 中的回调通知字段回调主机目标设备方式外围驱动程序。这两个操作的准确次序未加规定。
g)对于所有初始连接,SIM / HA 对这个允许的主机目标设备方式LUN 应透明的响应SCSI 忙碌状态直到由主机目标设备方式外围驱动程序确认了所有事件。
h)对这个允许的主机目标设备方式LUN , SIM / HA 接收的所有继续目标设备CCB 应被拒绝直到主机目标设备方式外围驱动程序确认了所有事件.拒绝的CCB 应有:
1 )通过主机,CAM状态字段置为未确认事件

2 )通过主机,返回未确认事件的状态。
通过主机目标设备方式外围驱动程序,这个事件的确认应在SIM / HA为这个LUN接收通知确认CCB , 并且顺序标识符字段等于这个事件的立即通知CCB 的顺序标识符时被实现。
主机目标设备方式外围驱动程序应负责保存偶然联系条件。
12.3.4.1.2 强制性执行的消息
本条描述了在SIM/HA 和相应的主机目标设备方式外围驱动程序之间共同掌握的强制性执行的消息的处理。
注23 :中止消息只是由立即通知CCB 处理的必须消息。总线设备复位消息通过异步事件机制来处理(见12.3.13.2 )。 1662
国家标准下载

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

验证码: 3769