SORT BY:

LIST ORDER
THREAD
AUTHOR
SUBJECT


SEARCH

IPS HOME


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

    Re: iSCSI: ERL=1 question.



    Just one minor change in the text.
    
    In sub-bullet (ii), replace "Data-SNACK reject" with
    "SNACK rejected". 
    
    The former is a Reject reason code, and the latter 
    is an iSCSI response reason with a defined key-ASC-ASCQ
    in section 3.4.3.
    -- 
    Mallikarjun 
    
    
    Mallikarjun Chadalapaka
    Networked Storage Architecture
    Network Storage Solutions Organization
    MS 5668	Hewlett-Packard, Roseville.
    cbm@rose.hp.com
    
    
    "Mallikarjun C." wrote:
    > 
    > Prasenjit,
    > 
    > I tend to agree with you.
    > 
    > The "must send status after SNACK reject" rule you pointed out was
    > originally introduced to avoid infinite loops where an initiator
    > continually asks for data re-transmit, and target keeps rebuffing
    > (for transient internal reasons, since data SNACK is legal for
    > ErrorRecoveryLevel=1).  The intent was to force the I/O completion,
    > precluding SNACK retries.
    > 
    > In the case you describe, the target already delivered the status, so
    > I propose that all we need to ensure is that there are no SNACK retries.
    > Initiator should be able to internally assume a "Data-SNACK reject"
    > reason - it does so today anyway if no recovery for the lost data is
    > attempted.
    > 
    > Here is the new text for consideration (to replace the bullet (a) text
    > on page 134 in section 8.4 of rev09) -
    > 
    > a) Request the desired data PDU through SNACK. In its turn,
    >    the target MUST either resend the data PDU or, reject the
    >    SNACK with a Reject PDU with a reason-code of "Data-SNACK
    >    Reject" in which case
    >         (i) if the status had not already been sent for the
    >             command, the target MUST terminate the command with
    >             an iSCSI command response reason of "SNACK rejected".
    >         (ii)if the status was already sent, no further action is
    >             necessary for the target.  Initiator in this case
    >             MUST internally signal the completion with the "Data-SNACK
    >             reject" reason disregarding any received status PDU,
    >             but must wait for the status to be received before doing
    >             so.
    >    [OR].....
    > 
    > Note that there's one paranoid case here in sub-bullet (ii) above
    > where a status SNACK (if status is also lost...) will cause the target
    > to report the original status again (SNACK demands a replica) with a
    > successful completion.  But in reality, the intervening "Data-SNACK
    > Reject" had already sealed the fate of the I/O on the initiator.
    > The retransmitted status merely fills the StatSN hole and gives the
    > initiator the determinism to re-use the ITT.
    > 
    > The wording in sub-bullet (ii) will cover this paranoid case as well.
    > 
    > Comments?
    > 
    > To Santosh:
    > 
    > > > upon
    > > > encountering a datasn hole, say, data_snack_sent, and it should ignore
    > > > any scsi status received while in this state.
    > 
    > I wouldn't recommend that!  If the Data SNACK were successful, this
    > status
    > is the final status for the I/O.  Discarding the status would mean
    > setting
    > the stage for a(n unnecessary) status SNACK in future.
    > --
    > Mallikarjun
    > 
    > Mallikarjun Chadalapaka
    > Networked Storage Architecture
    > Network Storage Solutions Organization
    > MS 5668 Hewlett-Packard, Roseville.
    > cbm@rose.hp.com
    > 
    > Prasenjit Sarkar wrote:
    > >
    > > Santosh,
    > >
    > > Regarding (B), I did not even venture to imply that there would be a
    > > stat_sn hole.
    > >
    > > I'm a little confused about your data snack recovery rule, but that is
    > > besides the point and I can discuss this offline with you.
    > >
    > > My chief concern is that ERL 1 leaves open the possibility for duplicate
    > > SCSI status PDUs. There are three solutions:
    > >
    > > 1. Leave it to implementors who can use their judgement to decide which
    > > status to ignore.
    > > 2. Formulate a tight rule: status PDU with higher stat_sn number always
    > > wins.
    > > 3. Change the standard so that duplication does not happen.
    > >
    > > I would like the standard to at least discuss this and then state what path
    > > they chose and why (with good reason of course). I do not think that this
    > > is merely an implementation issue.
    > >
    > > My preference is of course: 3,2,1.
    > >
    > >    Prasenjit Sarkar
    > >    Research Staff Member
    > >    IBM Almaden Research
    > >    San Jose
    > >
    > >
    > >                     Santosh Rao
    > >                     <santoshr@cup.       To:     Prasenjit Sarkar/Almaden/IBM@IBMUS
    > >                     hp.com>              cc:     ips@ece.cmu.edu
    > >                     Sent by:             Subject:     Re: iSCSI: ERL=1 question.
    > >                     owner-ips@ece.
    > >                     cmu.edu
    > >
    > >
    > >                     01/03/2002
    > >                     06:45 PM
    > >
    > >
    > >
    > > Prasenjit,
    > >
    > > Regarding your question (B)....
    > >
    > > Anytime the initiator's receive path successfully receives a pdu and
    > > passes format and digest error tests, the local state information of
    > > exp_cmdsn, max_cmdsn, statsn should be updated based on the values that
    > > are carried in that pdu and the rules specified in Section 2.2.2.
    > >
    > > Thus, in your below context, when the first scsi status pdu was
    > > received, the exp_statsn should have gotten updated and there should not
    > > have been any hole in statsn sequence. What am I missing (?)
    > >
    > > Regarding your question (A)...
    > >
    > > You may have read more into my answer than was intended.
    > >
    > > It is not the job of the lower layered pdu assembly path to filter out
    > > duplicate scsi status pdu's. Rather, this intelligence would lie within
    > > the module (finite state machine) that implemented the i/o path logic.
    > >
    > > While a data_snack has been sent and the i/o state machine is awaiting
    > > missing data pdu's , any received scsi status for that exchange must not
    > > be sent up to the SCSI ULP. Upon successful receipt of all the missing
    > > data pdu[s], the status can then be conveyed to the ULP.
    > >
    > > (I don't have a strong opinion either way, if we should have to state
    > > the above in the draft, or leave it unsaid as implementation specifics.
    > > I guess, at some point we cross over into the realm of an implementation
    > > guide vs a protocol specification :)
    > >
    > > - Santosh
    > >
    > > Prasenjit Sarkar wrote:
    > > >
    > > > I'm assuming Santosh wanted to reply to the entire group, so I am
    > > > forwarding his response to the mailing list.
    > > >
    > > > Santosh's argument is to provide the (unstated) rule that data assembly
    > > is
    > > > the domain of a lower iSCSI layer whose job is to filter out duplicate
    > > SCSI
    > > > status PDUs. I would gladly accept this argument except that a standard
    > > > should present a generic rule which should be independent of how a
    > > protocol
    > > > is implemented. I would prefer a rule based on stat_sn ordering or any
    > > > other equivalent rather than one based on ideal iSCSI layering.
    > > >
    > > > Santosh's motivation of having a seamless way of completing commands is
    > > > probably not true as initiators are allowed to generate SCSI responses.
    > > >
    > > >    Prasenjit Sarkar
    > > >    Research Staff Member
    > > >    IBM Almaden Research
    > > >    San Jose
    > > >
    > > >
    > > >                     Santosh Rao
    > > >                     <santoshr@cup.       To:     Prasenjit
    > > Sarkar/Almaden/IBM@IBMUS
    > > >                     hp.com>              cc:
    > > >                     Sent by:             Subject:     Re: iSCSI: ERL=1
    > > question.
    > > >                     santoshr@cup.h
    > > >                     p.com
    > > >
    > > >
    > > >                     01/03/2002
    > > >                     05:00 PM
    > > >
    > > >
    > > >
    > > > Prasenjit,
    > > >
    > > > Responses inline.
    > > >
    > > > Regards,
    > > > Santosh
    > > >
    > > > Prasenjit Sarkar wrote:
    > > > >
    > > > > Assume the following scenario where I and T stand for initiator and
    > > > target
    > > > > respectively.
    > > > >
    > > > > 1. I->T: Scsi Cmd
    > > > >
    > > > > 2. T->I: Scsi Data (DataSN:0)
    > > > >
    > > > > 3. T->I: Scsi Status (Good)
    > > > >
    > > > > Assume there is a data digest problem for the data with DataSN:0, so
    > > > >
    > > > > 4. I->T: Data Snack for DataSN:0
    > > > >
    > > > > The target for some reason cannot respond with the data, so according
    > > to
    > > > > the spec
    > > > >
    > > > > 5: T->I: Reject with reason DATA_SNACK_REJECT
    > > > >
    > > > > 6. T->I: Scsi Status (iSCSI response: SNACK rejected -> SCSI READ
    > > Error)
    > > > >
    > > > > The questions are as follows:
    > > > >
    > > > > A. Is SAM ambivalent of the fact that there can be two statii for the
    > > > same
    > > > > command? (I dont have a problem if SAM doesnt)
    > > >
    > > > I'm not certain on what SAM says on this one. However, one can envision
    > > > that the iscsi i/o finite state machine would enter into some state upon
    > > > encountering a datasn hole, say, data_snack_sent, and it should ignore
    > > > any scsi status received while in this state.
    > > > The lower pdu receive and re-assembly module should have passed format
    > > > and digest checks (assuming the frame came thru fine) and so, the local
    > > > value of exp_statsn should have gotten updated within this initiator
    > > > instance's iscsi connection finite state machine.
    > > >
    > > > Thus.....
    > > > i) since the 1st status was ignored while awaiting a data_snack
    > > > response, only 1 scsi status ends up being processed by the i/o finite
    > > > state m/c.
    > > >
    > > > ii) there will not be a statsn hole, since the previous status was
    > > > received successfully by the receive path, resulting in an update to
    > > > exp_statsn. however, the staus was discarded within the i/o fsm.
    > > >
    > > > >
    > > > > B, Does the second SCSI status have the same StatSN as the first?
    > > Likely,
    > > > > it does not, but it should be clearly stated that a SCSI status with
    > > > higher
    > > > > stat_sn overrides one with the lower stat_sn.
    > > >
    > > > See above.
    > > >
    > > > >
    > > > > C. I'm looking for motivation here: why does the target (rather than
    > > the
    > > > > initiator) generate the second status? Couldnt the initiator also do
    > > the
    > > > > same on receiving the DATA_SNACK_REJECT?
    > > >
    > > > So that all I/Os receive a single method of completion via the SCSI
    > > > status, I guess.
    > > >
    > > > --
    > > > ##################################
    > > > Santosh Rao
    > > > Software Design Engineer,
    > > > HP-UX iSCSI Driver Team,
    > > > Hewlett Packard, Cupertino.
    > > > email : santoshr@cup.hp.com
    > > > Phone : 408-447-3751
    > > > ##################################
    > >
    > > --
    > > ##################################
    > > Santosh Rao
    > > Software Design Engineer,
    > > HP-UX iSCSI Driver Team,
    > > Hewlett Packard, Cupertino.
    > > email : santoshr@cup.hp.com
    > > Phone : 408-447-3751
    > > ##################################
    


Home

Last updated: Sat Jan 05 08:18:09 2002
8288 messages in chronological order