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



    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