|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI: Target increment CmdSN on unretryable rejects
Julian,
Thanks for your quick response. Can you help me by answering
the followup question below?
> What am I missing here?
>
> A) Is there a class of 'command rejects' for which CmdSN should
> be incremented? Namely, those commands for which retrying the
> same command doesn't make sense?
>
> B) Or perhaps the specification must allow an initiator to plug
> a CmdSN hole by sending a NOP.
>
> +++ the interdiction on pluging is to insure that the initiator
> knows what he does and has enough tools to keep the intended
> order. For the case you describe initiator may abort the
> "hole" (that is allowed) on the same connection as specified
> under task management. Enabling NOPs is not needed +++
I see the following text in Draft12, section 9.6.1:
For the ABORT TASK function:
a) if the ITT identifies a valid task...
b) if the ITT does not identify an existing task but if the
CmdSN indicated by the RefCmdSN field in the task management
function request is within the valid CmdSN window (between
MaxCmdSN and ExpCmdSN), targets must consider the CmdSN
received and return the "Function complete" response.
c) if the ITT does not identify an existing task and ...
outside the valid CmdSN window, ... "Task does not exist"
Is case b) above the piece of text within the specification that
describes 'aborting the hole', or is there some other discussion
of this?
To make sure I am clear on this, can you tell me whether the
following statements are accurate?
Consider this situation:
- Target's ExpCmdSN=10, MaxCmdSN=19
- Initiator sends 4 commands, numbered 10-13
- Target processes command 10, recognizes a situation which
warrants reject, and which will always warrant a reject
no matter how many times it is retried (i.e. Text command
with invalid TTT; SNACK for data when target does not support;
or ANY Invalid PDU field-type error)
In this situation, my understanding is that the target must
behave as follows:
- Delay submission of commands 11-13 until the command window
hole at CmdSN=10 is plugged
- If the initiator retries command 10, the target will send
the same reject message again
- If the initiator sends a non-immediate TaskMgmt ABORT_TASK
command (CmdSN 14), to abort command 10, the target will NOT
process command 14 because the hole has still not been filled
- If the initiator sends an immediate TaskMgmt ABORT_TASK command
to abort command 10, the target will process this request
immediately, consider command 10 to have been sent (9.6.1 case b),
close the hole, and respond to the immediate TaskMgmt command with
Function Complete. Then, the target will resume submitting
the sequenced commands starting with 11 (since the hole at 10
has been closed).
Is my understanding correct?
Thanks for your continued help.
--
Joe Pittman
jpittman@netapp.com
Home Last updated: Wed May 01 17:18:33 2002 9934 messages in chronological order |