|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: iSCSI: Target increment CmdSN on unretryable rejectscomments in text - julo
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? +++ yes +++ 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? +++ yes +++ Thanks for your continued help. -- Joe Pittman jpittman@netapp.com
Home Last updated: Thu May 02 09:18:39 2002 9936 messages in chronological order |