SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


    [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

    RE: iSCSI:flow control, acknowledgement, and a deterministic recovery



    Following on,
    
    As an overview, there is a change allowing commands trapped within the
    sequencer to be rejected for replay at a new sequence.  There would need to
    be a means of re-associating the PDU with new CmdSN or use the X-bit to
    reissue.  The rejected sequences should become invalidated for only those
    rejected due to an immediate command bypass and disallow the X-bit.  To
    replay, these sequence associations would require reassignment.
    
    The advantage would be:
      1) No need to score-board any sequencer bypass.
      2) Immediate opening of the window for urgent commands.
      3) Quick repairs for a connection problem.
      4) Immediate acknowledgement for all executed commands.
      5) No need to trap iSCSI errors within SCSI layer.
    
    You would want to invalidate sequences only for commands rejected due to an
    immediate command placement.  PDU rejected due to a digest error appears to
    invalidate the sequence within the iSCSI proposal.  What is abort task
    action, retire SCSI tag?  Is the target making assurances of a free tag?
    Targets detecting data digest errors may abort tasks by issuing a Reject PDU
    after waiting for all data if it does not support R2T. Is the only method of
    control, a SCSI layer abort, and should this be an option?
    
    Notes:
    Ver 5 Page 80:
    
    "6.2 Digest Errors
    
       When a target receives an iSCSI PDU with a header digest error or a
       payload digest error in an iSCSI PDU, it MUST answer with a Reject
       iSCSI PDU with a Reason-code of Header-Digest-error or Data-Digest-
       Error and discard the offending PDU.  If the error is a Data-Digest-
       Error in a Data-PDU, the target MUST either request retransmission
       with a R2T or answer with a Reject iSCSI PDU and abort the task.
       However if the error is detected while data from the initiator is
       still expected (the command PDU did not contain all the data and the
       target has not received a Data PDU with the final bit Set) the target
       MUST wait until it receives the a Data PDU with the F bit set before
       sending the Reject PDU.
    
       When an initiator receives an iSCSI PDU with a header digest error,
       it MUST discard it.  When an initiator receives any iSCSI PDU other
       than a data PDU, with a Data-Digest-Error, and this PDU is part of a
       task (has an Initiator Task Tag set), it MUST discard the PDU. It MAY
       restart the task (reissue the command with the same Initiator Task
       Tag and the X-bit set to 1).  If the reissued command is a SCSI
       command and it implies Read Data (Expected Data Length is not 0), the
       reissued command also includes the sequence number of the Next Data
       Packet expected by the initiator (0 if there was no data packet yet).
    
       When an initiator receives an iSCSI data PDU with a Data-Digest
       error, it must discard the PDU and it MUST either request the missing
       data PDUs through SACK or abort the task and terminate the command
       with an error.
    
    6.3 Sequence Errors
    
       When an initiator receives an iSCSI data PDU with an out-of-order
       DataSN or a SCSI command response PDU with an EndDataSN implying
       missing data PDUs it MAY request the missing data PDUs through a data
       SACK PDU or handle this case as a connection failure.  In its turn,
       the target MUST either reject the SACK with a Reject PDU with a
       reason-code of Data-SACK-Reject or resend the data PDU.
    
       When an initiator receives an iSCSI status PDU with an out-of-order
       StatSN implying missing responses, it MUST either request the missing
       response PDUs through a status SACK or handle this case as a
       connection failure.  The target MUST reissue the missing responses.
       As a side effect of receiving the missing responses, the initiator
       may discover missing data PDUs. The initiator MUST NOT acknowledge
       (either explicitly through ExpStatRN or implicitly through a status
       SACK) the received responses until it has completed receiving all the
       data PDUs of a SCSI command."
    
    Page 83:
    
    "6.7.1.1 Recovery Within-connection
    
       At the initiator, the following cases lend themselves to within-
       connection recovery:
    
          (1)Lost iSCSI numbered Response recognized by either receiving
          it with a data digest error or receiving a Response PDU with a
          higher StatSN than expected. The initiator MAY request the
          missing responses through SACK, in which case the target MUST
          reissue them.
          (2)Requests not acknowledged for a long time. Requests are
          acknowledged explicitly through ExpCmdSN or implicitly by
          receiving data and/or status. The initiator MAY reissue non-
          acknowledged commands. The reissued, non-acknowledged commands
          MUST carry their original CmdSN and the X (retry) flag set to
          1.  Note that this is the only case in which the reissued
          command carries the same CmdSN as the "original".
          N.B. While the original connection for a command is still
          "active" (i.e., has not been logged-out or restarted), any
          command MUST be retried only on the original connection. After
          logging out the original connection, commands can be retried on
          a different connection, but must still carry the original
          CmdSN."
    
    Doug
    
    


Home

Last updated: Tue Sep 04 01:05:08 2001
6315 messages in chronological order