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

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

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

表4 SCSI消息支持

    消    息

    支    持

    ACA

    由SIM透明的支持

    中止

    不连续的功能码支持

    中止标记

    不连续的功能码支持

    总线设备复位

    不连续的功能码支持

    清除ACA

    不连续的功能码支持

    清除排队

    不支持

    命令完成

    由SIM透明的支持

    断开

    由SIM透明的支持*

    识别

    由SIM透明的支持

    忽略宽度余项

    由SIM透明的支持

    启动恢复

    不支持 

    启动设备检出错误

    由SIM透明的支持

    链接命令完成

    由SIM透明的支持

    消息奇偶校验错误

    由SIM透明的支持

    消息拒绝

    由SIM透明的支持

    修改数据指针

    由SIM透明的支持

    无操作

    由SIM透明的支持

    释放恢复

    不支持

    保存数据指针

    由SIM透明的支持

    同步数据传送请求

    由SIM透明的支持*

    终止1/0处理

    不连续的功能码支持

    宽数据传送请求

    由$IM透明的支持

    排队标记消息

 

    排队头标记

    不连续的功能码支持

    顺序捧队标记

    不连续的功能码支持

    简单持队标记

    不连续的功能码支持

    *通过CAM标记发出受外围驱动程序影响的消息

 

11.5   CAM-3  SCSl  CCB表定义和值定义

    表中定义了CAM-3 SCSI CCB。CCB的每个表有四栏,标题在表的顶部.XFI售方应定义数据结构作为对数据类型表标题和组成名称表标题栏的定义.这意味着数据类型和CCB数据结构组成名称等于CCB表的反映.XPT售方应按所示的顺序定义组成.

    每个CCB表都显示了CAM-3 CCB_HEADER3.已定义的CCB包含CCB_tIEADER3数据结构作为一个内含的数据结构.例如对于一个连接CCB的CCB. HEADER3的logical_idOl成设置如下;

  struct ccb_bind3*bind_ccb:

  bind_ccb =(struct ccb_bind3*) xpt_ccb_alloc3  ((CAM_U32) XPT..WAITOK);

  bind_ccb一>ccb_header3, logical_id=0xl001;

  ORIG/RECP表标题反映了CCB的发送者,CCB的接收者和/或请求该组成设置的XPT.ORIG栏目表示CCB的发送者设置该组成,RECP栏目表示CCB的接收者设置该组成.XPT栏目表示在从xpt_ccb_alloc3()返回之前XPT设置该CCB组成.XPT也可能是一个CCB接收者(如:CCB对XPT寻址)..例如,外用驱

动程序通常是CCB的发送者而且是通常发送到SIM(接收者).若表字段是空白的,则该字段不能用.若字段用“***”标记,设置该组成的责任是明确描述每个CCB函数.

  描述文本表标题(heading)是一个表示该组成含义的描述文本.

  XPT售方按照表标号(如:表X ccb_header3.这里标号是ccb_header3)的反映定义CAM-3 CCB数据结构名称.

  表中还定义了数据值常量.数据值常量的每个表有三栏,标题在表的顶部.XPT售方应定义数据常最名作为表标题鱼整栏的定义,定义数据常量值作为表标题HEX值栏的定义.

  下表是更进一步阐明所描述文本的用法和含义.

”.6 CCB_HEADER3结构

  XPT的供应者应定义CCB_HEADER3结构,如表5所示,

表5 ccb_header3

    数据类型

    组成名称

ORIG/RECP

    描    述    文    本

数据结构ccb_header3

指针

my_addr;

 

XPT

 

该CCB的地址

 

CAM_UI6

cam_ccb_len;

XPT

整个CCB的长度

CAM_U8

cam_funccode;

ORIG

 XPT函数代码包含C^M-3 CCB标识符

CAM_U8

cam status;

RECP

返回的C心子系统状态

CAM_ U32

logical_id;

***

分配的设备逻辑ID

CAM-U32

cam_flags;

ORIG

子系统操作标记

CAM_U32

Cam3_ func codez

 ORIG

 Cg4-3 CCB的实际函数代码

CAM-U32

cam_protocol;

 ORIG

协议类型SCSI.NETWORK,等

CAMU32

 port_id;

0RIG

注册的SIM/HA端口号

CAMU32

addr_spec1[2]

 0RIG

包含目标设备说明符的两个CAM—U32阵列

CAM.U32

addr_spec2 [2] ..

ORIG

包含LUN号的两个CAM_U32阵列

CAM_U32

 Reservedl;

 

为今后扩展保留

CAM-IU32

cam_sim_generation;

***

由BIN) CCB返回的代号

CAM_VOID_OFFSET

cam_sim_ bhandlle;

***

由BIND ccB返回的S瑚连接处理

CAM_JOID_OFFSET

cam_xpt_ptr;

XPT

指向XPT工作空间的指针

CAM_VOID_OFFSET

cam_pdrv_ptrl;

XPT

揠向分配外围驱动程序工作空间的XPT的指针

CAM_ VOID_OFFSET

cam_sim_ptr;

XPT

指向分配SIM工作空间的XPT的指针

CAM_U32

cam_pdrv_len;

 XPT

外围驱动程序工作空间的长发,以字节为单位

CAM_U32

cam_sim_len;

XPT

 SIM工作空间的长度,以字节为单位

ccb_header3的结构语言事例.

typedef struct ccb_header3

    {

    Struct ccb_header3* my_addr; /*该CCB的地址*/

    CAM1 6 cam_ccb_len; /*整个CCB的长度*/

    CAM U8 cam_func_code; /*XPT函数代码包含C~{-3 CCB标识符*/

    CAM_U8 cam_status: /*返回的CAM子系统状态*/

CAM_U32 logical_id; /*分配的设备逻辑ID*/

CAM_U32 cam_flags: /*子系统操作标记*/

CAM_U32 cam3_func_code; /*CAM-3 CCB的实际函数代码*/

CAM_U32 cam_protocol; /*枣协议类型SCSI.NETWORK,等*/

CAM .U32 port_id;/*注册的SIM/HA端口号*/

CAM_U32 addr_specl[2] ;/*包含目标设备说明符的两个cAMu32阵列*/

CAM_U32 addr_spec2[2] ; /*包含LUN号的两个CAM-U32阵列*/

CAM_32 reservedl; /*为今后扩展保留*/

CAM_U32 cam_sim_generat ion; /*由BIND CCB返回的代号*/

CAM_VOID_OFFSET cam_sim_bhandle; /*由BIND CCB返回的STII连接处理*/

CAM_VOID_OFFSET cam_xpt_ptr; /*指向】(PT工作空间的指针*/

CAM_VOID OFFSET cam pdrv_ptr; /*111向分配外围驱动程序工作空间的XPT的指针*/

CAM_ VOID OFFSET cam sim_ptr; /*指向分配STM工作空间的XPT的指针*/

CAM_U32 cam_pdrv_len; /*外围驱动程序工作空伺的长度,以字节为单位*/

CAM _U32 cam_sim_len:/* SIM工作空间的长度,以字节为单位*/

}CCB_HEADER3;

11.6.1CCB_HEADER3结构的组成说明

一my_addr;

    该指针包含这个CCB的物理或虚拟地址,地址类型(虚拟或物理)取决于操作系统.

一Cam_ccb_len;

    该字段包含CCB的字节长度,总共包括该字段和该CCB的地址.

  ——cam_func_code;

    该组成应包含XPT_CAII3_CCB的CAM-3函数代码。该函数代码表示传送的CCB是一个CAM-3 CCB, 有关XPT函数代码见表7.

  ——ca-status

    该字段在完成这个功能之后由SIW返回.“0"状态表示该请求仍在进行或排队.cAM状态定义在表6中.

    若自动断定信息可用,返回的代码应通过80h递增(如:04h表示发生了一个错误.84h表示发生了一个错误并且臼动断定信息可用于分析).

    CAM状态代码定义见表6:

表6 CAM状态

名称

   HEX值

    描    述    文    本

CAM_REQ_INPROG

    00 h

    请求在进行

CAW_REQ_CMP

    Ol h

    无错误地完成请求

CAM_REQ _ABORTED

    02 h

    通过主机中止请求

CAM_UA_ABORT

    03 h

    不能中止请求

CAM_REQ_CMP_ERR

    04 h

    错误地完成请求

CAM_BUSY

    05 h

    CAM忙

CAM_REQ_INVALID

    06h

    无效请求

CAM_PATH_ INVALID

    O7h

    无效路径ID

CAM_DEV_NOT_THERE

    08 h

    SCSI设备来安装

CAM_UA_TERMIO

    09 h

    不能终.止I/o处理

CAM_SEL_TIMEOUT

    Oa h

    日标设备选择超时

CAM_CMD_TIMEOUT

    OB h

    命令超时

 

    OC h

    保留

 

表6(续)

 

    名    称

    HEX值

    描    述    文    本

CAM_MSG_REJECT_REC

    OD h

    .  消息拒绝接收

CAM_SCSI_BUS_RESET.

    OE h

    SCSI总线复位发送/接收

CAM_UNCOR_PARITY

    OF h

    检出不正确的奇偶校验错误

CAM_AUTOSENSEFAIL

    10 h

    自动断定请求断定命令失效

 CAM_NO_HA

    llh

    朱捡出HA

CAM_DATA_RUN ERR

    12 h

    数据溢出

CAM_UNEXP_BUSFREE

    13 h

    不期望的总线空闲

CAM_SEOUE~CE_FAIL

    14 h

    目标设备总线阶段时序失效

CAM_ CCB..LEN_ERR

    15 h

    CcB长度不充足

CAM_PROVIDE_FAIL

    16 h

    不能提供请求的性能

CAM_BDR_SENT

    17 h

    总线设备复位发送

CAMREQJEIBilO

    18 h

    终止I/o处理

  CAM_HA_ERR

    19 h

    不可恢复的主机总线适配器错误

 

    IA h

    保留

    CAW_NO_BIND

    1B h

    连接丢失或需要

CAMDISCOVERY_INPROG

    1C h

    发现过程需要或在进行巾

 

    1D h-32 h

    保留‘

    CAM_IDE

    33 h

    启动设备检出接收的错误

CAM_REsrc_UNAVAIL

    34 h

    资源不可用

CAM_UNACKED_EVENT

    35 h

    主机不被承认的事件

CAM_MESSAGERECV

    36 h

    接收的消息

CAMINVALXD_CDB

    37 h

    无效的CDB

CAM_LUN_INVALID

    38 h

    无效的L州

CAM_TID_INVALID

    39h

    无效的目标设备ID

CAM_FUNC_NOTAVAIL

    3Ah

    来实现的功能

CAM_NO_EXUS

    3Bh

    来建立的联系

CAM_lID_INVALID

    3Ch

    无效的启动设备ID

CAM_CDB_INVALID

    3Dh

    接收的SCSI CDB

 CAM_LUN_ ALREADY_ENAB

    3Eh

    已允许的LUN

CAM_SCSI_BUSY

    3Fh

    SCSI总线忙

CAM_SXM_QFRZN

    40h

带有CAM状态的数值或ID表示冻结SIM摊队

CAM_AUTOSNS_VALI D

    80h

带有CAM状态的数值或ID表示自动断定有效

 

CAM状态描述:

——00h,请求在进行中:该请求仍在进行中.

——01h~无错误她完成请求:该请求已完成,并且未遇到错误条件.

——02h:通过主机中止请求:该请求由SIWHA中止。

——03h;不能中止请求:按照外围驱动程序的指示,SIM/HA不能中止该请求。

——04h:错误地完成请求:该请求已完成并且遇到一个错误条件.

——05h: CAM忙:CAM不能在此时接受请求.

——06h:无效的请求:因为它无效,所以该请求已被拒绝。

——07h:无效的路径ID:表示该路径ID无效.

——08h: SCSI设备未安装:外围设备类型字段无效.

——09h,不能终止IlO处理:按照外围驱动程序的指示.SIM/tM不能终止请求。

——0Ah,目标设备选择超时:目标设备响应选择失效.

——0Bh,命令超时:指定的命令不能在CCB指定的定时器值中完成。

——0Dh:消息拒绝接收:SIWHA接收一个SCSI消息拒绝消息。

——0Eh;SCSI总线复位发送/接收:因为SCSI总线被复位,所以SCSI操作在某些点上被终止,

——0Fh,检出不正确的奇偶校验错误:一个不正确的SCSI总线奇偶校验错误被检出.

——l0h;自动断定请求断定命令失效:SIM/HA试图获得断定数据并失效,

——llh;未检出HA, HA不再响应SIH(假定是硬件问题).

——12h;数据溢出:目标设备传送的数据字节比外围驱动程序在CCB中表示的数据字节多——13h:不期望的总线空闲:一个不期望的总线空闲条件发生.

——14h;目标设备总线阶段时序失效:逻辑单元根据SJ 20631--97标准操作失效。

——15h;CCB长度不充足:CCB中需要较多的专用数据区域(更进一步的信息见9.2.3).

——16h:不能提供请求的性能:资源不能用于提供在CAM标记中请求的性能。

——l7h;总线设备复位发送:因为总线设备复位消息被发送到目标设备,该CCB被终止。

——18h;终止I/O处理:因为该CCB规定了一个终止TIO处理功能并且该CCB不是逻辑单元中的一个I/O处理,所以该CCB被终止.

——19h:不可恢复的主机总线适配器错误:因为姒检出一个硬件错误,所以该CCB被终止,该错误不表示SCSI总线有问题,而是HA或主机中的错误。

——IBh,连接丢失或需要:由于连接已被丢失或CCB的发送者还未执行连接功能,所以该CCB被终止.

——IChl发现需要或在进行中:由于需要或正在进行一个XPT发现功能,所以CCB被终止.

——33h:启动设备检出错误:表示SIWHA已接收一个启动设盔检出错误消息。

——34h:资源不可用:表示SIM/HA已用完处理连接的资源(仅是主机目标设备方式)。

——35h:不承认的事件:表示主机目标设备方式外围驱动程序还没有承认一个事件.

——36h:消息接收:表示消息已被请求注意的SIMIIIA接收。

——37h,无效的CDB=表示在接受一个CDB时SIM/IIA已检出一个错误条件。

——38h;无效的逻辑单元l表示指定的逻辑单元在SIM/HA支持的范围之外.

——39h;无效的目标设备ID:表示目标设备ID与由路径ID字段规定的HA使用的不一致.

——3Ah;功能未实现:表示不支持目标设备方式,

——3Bh,联系未建立。在指定的目标设备ID和任何启动设备的目标设备逻辑单元之间目前还没有建立连接.

——3Ch,无效的启动设备ID:指定的启动设备ID在支持的有效范围之外.

    注13:若日标设备试图重新选择一个启动设备而不足先前连接的一个启动设各,该状态也能被返回.

 ——3Dh,接收SCSI CDB:表示目标设备已被选择并且SCSI CDB存在于当前的CCB中.

 ——3Eh:逻辑单元已允许:在允许的LUN CCB中标识的逻辑单元已被允许。

 ——3Fh: SCSI总线忙:在一些不同的总线空闲阶段期间.SIH未能赢得对SCSI总线的仲裁。

CAM状态数据值常盈定义事例:

#定义CAM_REQ_IRPROG         Ox00           /*CCB请求在进行中*/  

#定义CAM REQ_CMP            Ox01          /*无错误完成CCB请求*/

#定义CAM REQ_ABORTED        Ox02           /*CCB请求由主机中止*/

#定义CAM_UA_ABORT           Ox03           /*不能中止CCB请求*/

#定义CAM-REO_CMPLERR        Ox04          / *带有错误的完成CCB 请求*/

#定义CAM_BUSY               Ox05          / * C AM子系统忙*/

#定义CAM_REO_INVALID        0x06          / * CCB 请求无效*/

#定义CAM_PATH_INALID        Ox07          / *提供的路径ID 无效*/

#定义CAM_DEV_NOT_THERE      Ox08          / * SCSI 设备未安装/there * /

#定义CAM_ UA_TERMTO         Ox09          / *不能终止I / 0 CcB 请求*/

#定义CAM_SEL_TIMEOUT        OxOA          / *目标设备选择超时*/

#定义CAM-CWD_TIMEOUT        OxOB          / *命令超时*/

#定义CAM_MSG_REJECT_REC     OxOD          / *消息拒绝接收*/

#定义CAM_SCSI_BUS_RESET     OxOE          / * S CSI 总线复位发送/接收*/

#定义CAM_UNCOR_PARITY       OxOF          / *不正确奇偶校验错误发生*/

#定义CAM_AUTOSENSE_FAIL     0xlO          / *自动断定:请求断定命令失效*/

#定义CAM_NO_HA              Oxll          / *未检出HA 错误*/

#定义CAM_DATA_RUN_ERR       Ox12          / *数据溢出/欠载错误*/

#定义CAM_UNEXP_BUSFREE      OxI3          / *不期望的总线空闲*/

#定义CAW_SEQUENCE_FAIL      0x14          / *目标设备总线阶段时序失效*/

#定义CAM_CCB_LEN_ERR        OxI5          / *提供的CCB 长度不充足*/

#定义CAM_PROVIDE_FAIL       Ox16          / *不能提供请求的性能*/

#定义CAM_ BDR_SENT          Ox17          / * SCSI BDR 消息被发送到目标设备*/

#定义CAM_ REQ_TERWIO        Ox18          / * CCB 请求由主机终止*/

#定义CAM_HA_ERR             Ox19          / *不可恢复的主机总线适配器错误*/

#定义CAM_NO_BIND            0xlB          / *连接己被丢失或未获得*/

#定义CAW_DISCOVERY_INPROG   OxlC          / *发现过程需要或在进行中*/

#定义CAM_IDE                0x33          / *启动设备检出接收的错误*/

#定义CAM_REsrc_UNAYAIL      0x34          / *资源不可用*/

#定义CAM_UNACKED_EVENT      0x35          / *主机不承认的事件*/

#定义CAM_LMESSAGE_RECV      0x36          / *以主机目标设备方式接收的消息*/

#定义CAM_INVALID_CDB        0x37          / *以HT 方式接收的无效CDB * /

#定义CAM_LUR..INVALID       Ox38          / *提供的逻辑单元无效*/

#定义CAM_ TID_IRVALID       0x39          / *提供的目标设备ID 无效*/

#定义CAM_FUNC_NOTAVAIL      Ox3A          / *请求的函数不可用*/

抖定义CAM_.NO_NEXUS        Ox3B          / *联系未被建立*/

#定义CAM__TID_INVALID       Ox3C          / *启动设备ID 无效*/

#定义CAM_CDB_RECVD          Ox3D          / *已接收SCSI CDB * /

#定义CAM_LUN_ALLREADY_ENAB  Ox3E          / *己允许的逻辑单元*/

#抖定义CAM_SCSI_BUSY        Ox3F          / * SCSI 总线忙*/

#定义CAM_SIM-QFRZN          Ox40          / *带有错误的SIM 排队被冻结*/

#定义CAM_AUTOSNS_VALID      Ox80          / *目标设各自动断定数据有效*/

——logical_id

    对指定协议而言,该组成是分配了设备逻辑标识符的XPT.多数功能不需要该组成由发送者设置.对于这些功能,推荐该组成为跟踪用途和调试设置一个有效值.

——cam_flags

  CAM标记组成限定被执行的函数,并随函数代码变化.对定义的CAM标记见规定的CCB函数代码.

——cam3_func_code

  该组成包含CAM-3 CCB的CAM-3函数代码。

用于识别正被请求的SCSI服务的函数代码列于表7中,函数代码的定义在表7中.

    表7 CCB的CAM-3 SCSI功能代码

名称

HEX值

描述文本

 

XPT N00P

XPT SCSI 10

XPT GDEV TYPE

XPT _ PATH _ INQ

XPT - - REL _ SIMQ

XPT - SASYNC –CB

XPT _ SDEV _ TYPE

XPT SCAN BUS

 

 

XPT ABORT
XPT  RESET - BUS
XPT RESET _ DEV
XPT TERM I0
XPT SCAN LUN
XPT CAM3 CCB
XPT BIND
XPT _ BIND QUERY
XPT BIND REL
XPT  DISCOV –START PORT ID

XPT DISCOV  START TARGET ID

 XPT DISCOV ADDR
XPT DISCOV END

 

XPT ENG INQ

XPT ENG EXEC

 

 

XPT EN LUN

XPT TARGET I0

XPT  ACCEP  TARG

XPT CONT TARG

XPT IMMED NOTIFY

XPT NOTIFY ACK

 

00-0F

00h

01h

02h

03h

04h

05h

06h

07h

08h-0Fh

10h-1Fh

10h

11h

12h

13h

14h

15h

16h

17h

18h

19h

1Ah

1Bh

1Ch

1Dh-1Fh

20h

21h

22h-2Fh

30h-3Fh

30h

31h

32h

33h

34h

35h

36h-3Fh

保留函数代码

命令功能

NOP
执行SCSI I/0

得到设备类型

路径查询

释放SIM 排队

设置异步回调

设置设备类型

扫描SCSI总线

保留
SCSI 控制功能

中止SCSI命令

复位SCSI 总线

复位SCSI 设备

终止I/O处理

扫描逻辑单元

CAM 一3 CCB 指示器

连接到一个连接ID

连接查询

连接释放

发现起始端口ID

发现起始目标设备标识符

发现得到地址

发现结束

保留

引擎查询

执行引擎

保留

目标设备方式

允许LUN

执行目标设备I/O

接受目标设备I/O

继续目标设备I/O

立即通知

通知应答

保留

 

表7(续)

名    称

HEX值

描  述  文  本

 

40h-7Fh

保留

 

售方专用函数代码

售方定义

 

80h-FFh

售方专用

 

1OOh-FFFFFFFFh

保留

CAM一3函数代码数据值常量定义如下:

1668
国家标准下载

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

验证码: 1668