ErrorRecovery 之任务重置

在 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)

http://mixin125.m.blog.chinaunix.net/uid-7749031-id-2044708.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值