SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    RE: iscsi: rev 05 2.5.1 requires ACA support



    (sorry this got kind of lengthy - but I do have proposed solution to what I
    believe are the problems below)
    
    Julian,
    I don't think iSCSI needs to look at the NACA bit in the CDB - I don't think
    iSCSI should care about ACA at all.
    
    In my 10+ years of working with SCSI disk products I've yet to see a host
    driver that cared about ordering.  As David said below, if there is an
    ordering dependency then the application waits for completion of the first
    I/O before releasing the second.  One gets the best performance from a SCSI
    block I/O target (from a single disk to a large RAID controller) by issuing
    queued commands with simple tags and allowing the target to freely re-order
    the commands internally.  When an error happens it doesn't matter what
    commands are in-flight because they are all independent I/Os.  This is the
    way high performance SCSI disks and disk subsystems work.  It would be a
    mistake (in my opinion) for iSCSI to come in and mandate the extra
    complexity of ACA to handle a corner case most of the SCSI world it is
    trying to penetrate doesn't care about.
    
    Granted, tape and other sequential devices are a different story.  However,
    I participated heavily in T11 for 2 to 3 years helping develop a error
    recovery scheme that would allow SCSI tape devices to work with FC.  The
    bottom line, however, was that while we talked about it over and over, no FC
    tape vendor had a device that supported queuing.  If you don't queue, then
    nothing is in-flight when an error occurs.  (streaming is accomplished by
    caching in the target).  After this drug on for a couple of years and the
    complexities of queuing to sequential devices became evident, a new project
    was started in T10 to develop a new tape command set that included relative
    block addresses in the CDB - making the new tape model very similar to
    disk - each command can be interpreted independently and precise delivery
    order is not a fundamental requirement.
    
    ===================
    OK, enough of my preaching.  Here is my understanding of the issues, and
    what I believe the solution set should include:
    
    Problem Statements:
    --------------------------
    - problem 1) When an initiator's I/Os are cleared by it own actions (e.g.
    sending a task management function of abort task set) how does it know which
    of issued commands were aborted and which were still in-flight and had not
    yet made it to the target.
    
    - problem 2) (closely related to 1)  How are task management functions
    delivered - with the immediate delivery option (CmdSN=0) or not? (reference
    1.2.2.1, top of page 12)  If immediate, then problem 1 is aggravated if
    multiple connections are used.  If not immediate, then we can have a problem
    with the task management function never being delivered because the I/O we
    are trying to abort never made it to the target and the target's iSCSI layer
    wont' pass up the task management function because the CmdSN number is
    wrong.
    
    - problem 3) When an initiators I/Os are cleared by the actions of another
    initiator (e.g. the other imitator sent clear task set or lun reset) how
    does it know which of its outstanding commands were cleared and which will
    finish.
    
    Proposed Solutions:
    ------------------------
    + solution to 1 and 2) I propose all task management functions be required
    to use the  following:
      - immediate delivery option
    
      - utilize a new task management function sequence number field (call it
    TskMgmtSN)
    
      - all task management functions shall be sent on all active connections
    with the same value for TskMgmtSN
    
      - the target must receive the same task management function (identified by
    TskMgmtSN) on all active connections before it acts on it.  (Use a timer
    (TBD) to weed out and close down defective connections.)
    
      - the target must send the task management response on all active
    connections, again identified by the TskMgmtSN assigned by the initiator.
    
    
    + solution to problem 3)  Two currently defined mechanism in SCSI already
    take care of this.  Neither are widely used today, but they are already
    defined.
    
      A) initiator may set NACA on all commands and the target will enter ACA
    when it sends the unit attention that commands were cleared by another
    initiator.  (Note, I see no need for the async event notice.)
    
    OR
    
      B) enable the newly defined Task Aborted status.  This option doesn't give
    any guarantees about ordering, but as I argued above the vast majority of
    SCSI devices don't care.
    
    
    Charles Binford
    Blue Spruce Networks
    office: (316) 315-0382 / cell: (316) 210-6404
    e-fax: (509) 756-4425
    
    
    
    
    -----Original Message-----
    From: owner-ips@ece.cmu.edu [mailto:owner-ips@ece.cmu.edu]On Behalf Of
    julian_satran@il.ibm.com
    Sent: Friday, March 16, 2001 9:33 AM
    To: ips@ece.cmu.edu
    Subject: RE: iscsi: rev 05 2.5.1 requires ACA support
    
    
    
    
    David,
    
    As SCSI can liberally set or reset the bits in CDB and we don't want iSCSI
    to have to look into it (we managed to avoid this until now) I though that
    it will serve us well to request ACA support so that we get it at least
    from all the new drivers.
    
    As with many of other tiny inconsistencies we are bound to encounter this
    stems in part from the fact that SAM considers the specific protocol (FCP,
    SBP etc.) as a blending of transport and SCSI (see the many protocol
    specific parameters and behaviors) without specifically addressing the
    "separability" issue that the layering purists among us demand.
    
    Regards,
    Julo
    
    
    Black_David@emc.com on 16/03/2001 16:21:53
    
    Please respond to Black_David@emc.com
    
    To:   Julian Satran/Haifa/IBM@IBMIL, ips@ece.cmu.edu
    cc:
    Subject:  RE: iscsi: rev 05 2.5.1 requires ACA support
    
    
    
    
    If that's the case, then the wording that Ralph
    pointed out needs to be modified to indicate that
    ACA is used only when appropriate.
    
    --David
    
    > -----Original Message-----
    > From:   julian_satran@il.ibm.com [SMTP:julian_satran@il.ibm.com]
    > Sent:   Friday, March 16, 2001 2:34 AM
    > To:     ips@ece.cmu.edu
    > Subject:     RE: iscsi: rev 05 2.5.1 requires ACA support
    >
    >
    >
    > We are aware of the support for ACA missing from some drivers.
    > The situation is even exacerbated by the fact that certain exceptions
    that
    > are not errors per-se
    > will require ACA to be fired to accomodate for commands in flight (like
    > reservations, busy, task-set-full).
    >
    > However actions at the initiator can be fine-tuned with the NACA bit in
    > CDB
    > and the ACA atrribute for the task.
    >
    > Julo
    >
    > Black_David@emc.com on 16/03/2001 03:46:29
    >
    > Please respond to Black_David@emc.com
    >
    > To:   Julian Satran/Haifa/IBM@IBMIL, ips@ece.cmu.edu
    > cc:
    > Subject:  RE: iscsi: rev 05 2.5.1 requires ACA support
    >
    >
    >
    >
    > > After an error if you have commands in flight you want them all dropped
    > > until you specifically reset the ACA and restart the queue (prevent
    > things
    > > to be executed out of order).
    >
    > The T10 folks will have to go after this one in more detail, but Julian's
    > above statement is correct *only* if the commands in flight depend on
    > the one that caused the error (i.e. executing them out of order will
    cause
    > problems).  This is generally not the case for disks where the usual
    > practice is to enforce command execution order dependencies
    > (e.g., database write ordering) in the operating system and applications
    > by waiting for responses (yes it's possible to do better, but lots of
    > existing software doesn't).  The result is that commands in
    > flight can be executed in arbitrary order with arbitrary ones of them
    > failing without causing further difficulties.  As Ralph has pointed out,
    > most hosts do not use ACA for disk-based storage, and if iSCSI
    > always does ACA, this will cause nasty integration issues.
    >
    > Just to stir the pot further, I believe Fibre Channel provides a negative
    > example, because if FC drops a frame (which is not a good idea,
    > but can still happen), the FC component that dropped the frame has no
    > clue about what ACA is, or how to get the target (which is not the
    > same piece of hardware) to enter ACA state.  Both Class 2 and Class 3
    > are vulnerable to this.
    >
    > Tapes are another matter - do we still have a tape expert on the list?
    >
    > I thought where we were headed on ACA was something along the
    > lines of:
    > - Targets MUST implement.
    > - Initiators MAY use.
    > - Initiator support for ACA is NOT REQUIRED.
    > which would imply a text key for Initiators to tell Targets
    > whether ACA behavior is expected.  Did I miss something?
    >
    > --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:18 2001
6315 messages in chronological order