SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: iSCSI: Out Of Sequence due to null sequence with multiple con nections.



    
    Doug,
    
    thanks.  If you (or anyone) could correct the psuedo-code below to 
    illustrate your solution, it might help achieve quicker consensus 
    and avoid some discussion.
    
    I see what I missed, in addition to Julian's point about the 
    refTaskTag usage preventing ITT reuse.  But dont you still need 
    the cmdSN of the original task to find out if task_mgmt command 
    is early or late?
     (a..assuming you are still sending the task_mgmt 
    command with immediate delivery)
    
    **Event=task_mgmt at initiator:
        purge PDUs in queue at initiator
        send task_mgmt to target (cmdSN=0)
    
    **Event=task_mgmt at target:
        compare refCmdSN with executing <min,max>CmdSN queue
        if (refCmdSN < minCmdSN)
            /*task_mgmt cmd is early */
            must wait & drop the orig_task PDU when it arrives 
        else if (refCmdSN > maxCmdSN)
            /*task_mgmt cmd is late, original task has completed at target*/
            return task_response (response code=Task was not in task set)
        else
            /*task is executing*/
            give task_mgmt command to SCSI layer
    
    
    -Sandeep 
    
    
    Douglas Otis wrote:
    > 
    > David,
    > 
    > Sandeep missed a point found within serial math, you have a window that
    > rotates with respect to prior commands based on the magnitude of the
    > difference.  There is no need to maintain any state other than the sequence
    > of the flagged command where prior pending to be sent commands are rejected.
    > Obviously before this window rotates more than 2 billion PDUs, this prior
    > value will need to be retired.  This is not a difficult or high overhead
    > operation with respect to rejecting prior commands.  There would not be any
    > decisions within the sequencer regarding content of any rejected PDU.  You
    > still should want to purge PDUs waiting in a queue pending to be sent to the
    > target should an "immediate" command be flagged.  Your concept creates an
    > odd event with both sequential and non-sequential delivery of a task
    > management command.  You are then left with a time interval where a
    > non-sequential command reception must modify behavior waiting for a possible
    > counter-part.  Causing all pending PDUs to be rejected immediately there is
    > no waiting for status information or any further activity to occur.  You
    > would see reject-reject-status.  If the initiator needs these rejected
    > commands replayed, this becomes an option of the initiator.
    > 
    > Doug
    > 
    > > > I would state this much stronger.  Applications had better not have to
    > > know
    > > > that it is iSCSI underneath vs. FCP or parallel SCSI else I believe we
    > > > missed the objective (granted, some things such as target address space
    > > are
    > > > unavoidably different, but I believe task management functions should be
    > > the
    > > > same).  The transport needs to handle the transport issues without
    > > exposing
    > > > quirks to the SCSI or application layer.
    > >
    > > Unfortunately, I think we have an impossible situation.  It appears to me
    > > that
    > > we have to pick at most two of the following three goals, as I have yet to
    > > see
    > > any way to achieve all three for a single task management command on a
    > > multiple connection session:
    > >
    > > (1) The command takes effect immediately and its status/response
    > >       is available immediately.
    > > (2) The command affects all commands in flight, and its status/response
    > >       is delayed until all such effects are complete.
    > > (3) There is no significant visible departure from existing SCSI task
    > >       management behavior.
    > >
    > > The problem is that trying to do both (1) and (2) either requires SCSI to
    > > "execute" the task management command twice or requires that iSCSI do
    > > some task management (e.g., on the in-flight commands) on SCSI's behalf
    > > (or worse like having SCSI prolong the execution of the task management
    > > command until everything in flight in iSCSI arrives).  All of these appear
    > > to lead to problems with (3) in one form or another - two executions
    > > result in two SCSI status/responses that have to be merged, and iSCSI
    > > task management will sooner or later do something different from SCSI
    > > (e.g., I sincerely doubt that a Target in a bridge will ever get this 100%
    > > identical to the devices that are being bridged).
    > >
    > > The current iSCSI draft provides the choice of  [(1)] XOR [(2), (3)];
    > > the reason for not getting (3) with (1) is the possibility of the task
    > > management command bypassing commands that it's supposed to
    > > affect.  Charles' original proposal is [(2), (3)] because it has
    > > to time out
    > > a stuck connection before executing the command, and is roughly
    > > equivalent to sending the command for ordered delivery and having
    > > the implementation treat any queue between iSCSI and SCSI as
    > > being on the SCSI side of the line.  Doug Otis's counter-proposal
    > > falls into the category of iSCSI doing task management on SCSI's
    > > behalf and provides an example of how this results in visible changes
    > > in behavior -- for the CLEAR ACA task management command,
    > > aborting all tasks that are queued or in flight is generally incorrect.
    > >
    > > I would note that this issue does not arise on single connection sessions,
    > > because sending the command for immediate delivery plus some care not
    > > to reorder things in the iSCSI Target (i.e., consider the iSCSI to SCSI
    > > queue
    > > to be in "SCSI" and hence subject to the task management command)
    > > obtains all of (1) through (3).
    > >
    > > Going out on a limb, I suspect applications will generally want [(2), (3)]
    > > -- send for ordered delivery and wait for the dust to settle because that
    > > provides the best odds of having some weird device get into a known
    > > state from which further progress is possible.  This allows the
    > > application
    > > to not know whether parallel SCSI, FCP or iSCSI is underneath and
    > > relies on other iSCSI recovery procedures to make sure that the task
    > > management command is delivered and executed (e.g., unstick and/or
    > > close "stuck" connections).  There will be cases in which (1) is
    > > needed (e.g., observe tape robot doing something obviously wrong,
    > > and get it to stop immediately), but those may involve fairly blunt
    > > instruments (e.g., LUN RESET) and the need to clean up any collateral
    > > damage.
    > >
    > > Sandeep's proposal to create state in the target either fails to achieve
    > > (1) [if the response is delayed until the state is removed] or
    > > violates SAM2
    > > [returns the response to the task management command before the task
    > > management command is complete].  Having state linger after a completed
    > > LUN or TARGET RESET is almost certainly wrong.
    > >
    > > So, I think I'm down to sending task management functions once, usually
    > > for ordered delivery with the application making the ordered vs. immediate
    > > delivery choice (and sending the task management function twice if it
    > > so chooses).  I think apps will generally choose ordered
    > > delivery, choosing
    > > predictable behavior over immediacy concerns.  Aside from a longer
    > > discussion of this issue, I still don't see the need for additional
    > > mechanism(s) to task management - what have I missed in the above
    > > discussion?
    > >
    > > --David
    > >
    > > ---------------------------------------------------
    > > David L. Black, Senior Technologist
    > > EMC Corporation, 42 South St., Hopkinton, MA  01748
    > > +1 (508) 435-1000 x75140     FAX: +1 (508) 497-8500
    > > black_david@emc.com       Mobile: +1 (978) 394-7754
    > > ---------------------------------------------------
    > >
    > >
    


Home

Last updated: Tue Sep 04 01:05:11 2001
6315 messages in chronological order