SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: iSCSI: Target increment CmdSN on unretryable rejects





    comments in text - julo


    "Pittman, Joseph" <Joseph.Pittman@netapp.com>
    Sent by: owner-ips@ece.cmu.edu

    05/01/2002 11:12 PM
    Please respond to "Pittman, Joseph"

           
            To:        Julian Satran/Haifa/IBM@IBMIL
            cc:        "'ips@ece.cmu.edu'" <ips@ece.cmu.edu>
            Subject:        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?

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