 
| 
 | 
 [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 |