SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: iSCSI Autosense



    Douglas,
    
    I am very pleased to see closure on the issue of whether or not
    it is possible to build a reliable bridge between a packetized
    protocol and a parallel SCSI device that supports only CA (Contingent
    Allegiance).  Agreement on that point was clearly a critical step
    between previous discussions and making Autosense the modus operandi
    of iSCSI.
    
    } > To the best of my knowledge it is extremely difficult to
    } > implement the CA model in a packetized transfer model because
    } > the CA condition is cleared by the next command to arrive
    } > at the target regardless of what kind of command that is.
    
    } Not true.  Only for the nexus is this true.
    
    Yes, I am assuming that only a single I_T_L nexus is involved.
    Unless there are some iSCSI constraints that I don't know about
    (see below), that seems like a reasonable assumption.
    
    } > Since most packetized protocols allow several commands to be
    } > in flight concurrently between initiator and target, the most
    } > probably case in a packetized protocol is that an in flight
    } > command will clear a CA condition long before the initiator
    } > finds out about it and has a chance to fire off the needed
    } > REQUEST SENSE in to get the sense data.
    
    } These in flight commands are a different nexus such that Sense
    } data is not lost.  If the device can not maintain separate Sense
    } information BUSY is returned.
    
    Are you suggesting that iSCSI prohibits more than one command from
    being in flight from a single initiator to a single target/LUN?  I 
    have not read anything in the iSCSI draft that would suggest this.
    I find it difficult to believe that there is such a limitation in 
    iSCSI as it would be a horrific performance bottleneck.
    
    } > The bottom line here is that Autosense works for packetized
    } > protocols and CA does not.  Since it is trivial to translate
    } > a packetized Autosense front end to the CA behavior of an
    } > older backend SCSI device, the right thing for iSCSI to do
    } > is to make Autosense mandatory and not to provide any way
    } > whatsoever to disable it.
    
    } iSCSI does provide a means to disable it, but not to refuse it.
    
    What is the point of disabling Autosense if the only result is to
    put iSCSI in a dysfunctional mode of operation?
    
    } > The fact that SAM is written with a preference for CA is
    } > (like CA itself) a historical artifact.  So long as the
    } > wording continues to be correct, it is unlikely that T10
    } > will change the wording (if it ain't broke don't fix it).
    } >
    } > However, the ancient leanings of SAM should not under any
    } > circumstances be used as a justification for iSCSI support
    } > for a CA-like interface.  As noted above, CA doesn't work
    } > for packetized protocols like iSCSI.
    
    } A mistaken conclusion.
    
    I have no response to such a slander on my knowledge of SCSI
    that lacks even the decency to include an explanation.
    
    } > ACA (Auto Contingent Allegiance) is absolutely positively
    } > NOT the super-duper, all fixed up for a packetized world
    } > brother of CA.  ACA is orthogonal to Autosense and actually
    } > has no place in this discussion.
    
    } Odd, but error control and reporting does not seem orthogonal.
    
    But they are.  Error reporting means getting a description of
    the error from the place where the error occurred to the place
    that needs to know that the error occurred.  Error control is
    an embellishment that obliges the place where the error occurred
    to cooperate with some other entity in resolving the error.
    
    Error reporting is a necessary basic feature.  Error control
    adds additional complexity based on the assumption that the
    system designers cannot adequately define error processing
    so that the point of error detection takes all necessary
    recovery steps before reporting the error.
    
    } > IN ALL CASES, ACA is optional.  Simply return 0 in the
    } > NormACA bit (bit 5 byte 3) of the Standard INQUIRY Data
    } > and you don't support ACA and you are expected to refuse
    } > to process any CDB with the NACA bit set to 1.
    
    } For a means of get things to stop, some mechanism should exist.
    } This becomes difficult by suggesting refusal of Autosense is a
    } bad choice.  ACA may not exist for this purpose if you allow
    } older devices.  I suggest that there be a means to refuse
    } Autosense.  If the driver can not support this option, it can
    } refuse the device.
    
    Absolutely correct, "a means for get[ting] things to stop" must
    be provided for in the standard.  For a packetized protocol,
    the tools are:
    
      1) no stop - Autosense
      2) stop - ACA
    
    Like bridging Autosense for a CA-only device, bridging ACA for a non
    ACA device is possible although not as trivial as Autosense.  Stated
    simplistically, bridging software monitors the NACA bit, CHECK CONDITION
    status returns and performs the functions that an ACA capable device
    would.  Complexity arises only when the NACA bit is not a constant
    value, so to keep this short I'll consider only the case where NACA
    always equals 1.  Note, the case where NACA always equals 0 is not
    interesting because that means ACA is never used.
    
    Assuming that NACA always equals 1, the bridging software takes the
    following steps upon receipt of a CHECK CONDITION status from its
    non-ACA endpoint device:
    
       1) Establish a state on the I_T_L Nexus that causes all newly
          received commands to be immediately returned with an ACA
          ACTIVE status unless the ACA Task Attribute is specified
          in the SCSI Command packet (see 3.2.2 in draft-satran-
          iscsi-01.txt).
       2) Send a REQUEST SENSE command to the endpoint device.
       3) Package any previous command status with the sense data
          received as a result of the REQUEST SENSE command in a SCSI
          Response packet (see 3.3 in draft-satran-iscsi-01.txt) and
          send the packet to the initiator.
       4) Continue processing incoming SCSI Command packets as described
          above until one arrives with NACA equal to 0 (this is where
          things get dicey) or until a SCSI Task Management Command
          packet is received with the Clear ACA function specified
          (see 3.7 in draft-satran-iscsi-01.txt).
    
    N.B. Steps 1 and 4 are the 'error control' capability discussed above.
    Steps 2 and 3 are the 'error reporting' capability and they are
    incidentally the same steps the bridge would be required to perform
    if ACA were not in use.  The two are orthogonal.
    
    Thanks.
    
    Ralph Weber
    ENDL Texas
    
    
    


Home

Last updated: Tue Sep 04 01:07:37 2001
6315 messages in chronological order