Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129084
  • 博文数量: 38
  • 博客积分: 1277
  • 博客等级: 中尉
  • 技术积分: 450
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-11 23:24
文章分类

全部博文(38)

文章存档

2012年(2)

2011年(7)

2010年(24)

2009年(5)

分类: 服务器与存储

2010-02-09 01:36:23

    在 Initiator 处理一个任务时,任务未完成,但中间数据有误了(如CRC失败),可以通过任务重置来本connection 上的该任务分配置到一个新的 connection 中,然后继续完成乘下的数据,免得整个任务重新执行。任务重置属于commond recovery,涉及到多 connection。

    将一个 command 重新分配到一个connection上时,target应该从当前状态继续执行该command。例如,重置read command时, Target应当利用TestManageRequest中ExpDataSN(无数据传送时置0)值,来激活read command发送乘下的数据以及status. ExpDataSN 表示所有已经发送成功的数据pdu号(读时为Data-In中的DataSN, 写时为R2T中的R2TSN),但不包括DataSN等于ExpDataSN 的Data-In PDU,或R2TSN等于ExpDataSN的R2T。Target可以在重新分配的connect上发送或接收所有乘下的数据,当然,如果target无法得到一个准确的任务状态时,可以选择发送或接收所有的数据。Initiator不允许通过Snack请求重传PDU号小于
ExpDataSN的数据。对于所有类型的command,一个重置请求,表明了该任务仍在被initiator处理中,如果Target返回'Function Complete' response时,Target 必须正确地完成该任务,如果须要,可以调用Data/R2T/status 重传,但必须要传输/重传 status PDU.

Read Command 重置过程:

Connect-1:  Read cmd      ---------------->
                          <---------------  Data-In(DataSn=0)
                          <---------------  Data-In(DataSn=1)
           CRC-Error      <---------------  Data-In(DataSn=2)
Connect-2:  Login(MC/s)   ---------------->
                          <---------------  LoginResponse
            Logout        ----------------> Remove connect-1 for recovery
           TaskManagement ----------------> Reassign task (ExpDataSN=2)
                          <---------------  TaskManagementRsp(complete)
                          <---------------  Data-In(DataSn=2)
                          <---------------  Data-In(ststud)

Write Command 重置过程:

Connect-1:  Write cmd     ---------------->
                          <---------------  R2T(R2TSN=0)
            DataOut(SN=0) ---------------->
            DataOut(SN=1) ---------------->
            DataOut(SN=2) ---------------->  CRC-Error
                          <---------------  Reject
Connect-2:  Login(MC/s)   ---------------->
                          <---------------  LoginResponse
            Logout        ----------------> Remove connect-1 for recovery
           TaskManagement ----------------> Reassign task (ExpDataSN=0)
                          <---------------  TaskManagementRsp(complete)
                          <---------------  R2T(R2TSN=0)
            DataOut(SN=0) ---------------->
            DataOut(SN=1) ---------------->
            DataOut(SN=2) ---------------->
            DataOut(SN=3) ---------------->
            DataOut(F)    ---------------->
                          <---------------  Scsi Response
                          <---------------  Data-In(DataSn=2)
                          <---------------  Data-In(ststud)

阅读(1037) | 评论(2) | 转发(1) |
0

上一篇:ViStor试用

下一篇:pyTarget history

给主人留下些什么吧!~~

chinaunix网友2011-05-18 03:51:15

RFC就是最好的资料,难道还不够??

chinaunix网友2010-11-11 11:42:01

你好,我最近也在做ISCSI的研究,例如读写数据包的分析,有很多疑问。你有没有相关的资料不?发下参考,我的邮箱是shundong8@163.com 谢谢