Subject: Re: Reject PDUs and the F bit

From: "Julian Satran" <[email-masked]>
Date: Sat, 15 Jun 2002 19:05:46 +0300

Mallikarjun,

I suggest the following text that just spells out all cases:

If the error is detected while data from the initiator is still expected 
(the com-mand PDU did not contain all the data and the target has not 
received a Data-out PDU with the Final bit 1 for the unsolicited data - if 
any and all outstanding R2Ts - if any), the target MUST wait until it 
receives the last expected Data-out PDUs with the F bit set to 1 

Julo

"Mallikarjun C." <[email-masked]>
Sent by: [email-masked]
06/15/2002 02:41 AM
Please respond to "Mallikarjun C."

        To:     "Bill Studenmund" <[email-masked]>, <[email-masked]>
        cc: 
        Subject:        Re: Reject PDUs and the F bit

Bill,

On your 1, the answer is yes.  It is designed to allow a generic PDU 
reject
handling code on both sides, which may or may not escalate to the task
termination.  If it did, it would be handled uniformly as any other SCSI 
Response.

On your 2, the answer is yes, the target is expected to wait for all 
outstanding
R2Ts to be responded to (section 6.5 specifies it clearly).  Sorry, I 
agree that it 
isn't as clear as it can be here.

Julian, I suggest replacing the last sentence of the quoted text with the 
below.

     If the error is detected while data from the initiator is still 
expected (the com-
     mand PDU did not contain all the data and/or the target has not 
received
     a Data-Out PDU with the F bit set to 1 in response to each 
outstanding R2T), 
     the target MUST wait until it receives the last expected Data-out PDU 
with 
     the F bit set to 1 before sending the Response PDU.

Thanks!
--
Mallikarjun

Mallikarjun Chadalapaka
Networked Storage Architecture
Network Storage Solutions
Hewlett-Packard MS 5668 
Roseville CA 95747
[email-masked]

----- Original Message ----- 
From: "Bill Studenmund" <[email-masked]>
To: <[email-masked]>
Sent: Friday, June 14, 2002 1:12 PM
Subject: Reject PDUs and the F bit

> I haev a question about the following text in section 9.17.1 of 12-97
> (which I don't think's changed):
> 
>      In all the cases in which a pre-instantiated SCSI task is 
terminated
>      because of the reject, the target MUST issue a proper SCSI command
>      response with CHECK CONDITION as described in Section 9.4.3 
Response.
>      In those cases in which a status for the SCSI task was already sent
>      before the reject no additional status is required. If the error is
>      detected while data from the initiator is still expected (the com-
>      mand PDU did not contain all the data and the target has not 
received
>      a Data-out PDU with the Final bit 1), the target MUST wait until it
>      receives the Data-out PDU with the F bit set to 1 before sending 
the
>      Response PDU.
> 
> I'm confused on two points:
> 
> 1) When do we need to send a Reject PDU if we're also sending a SCSI
> Response that indicates error status? i.e. why send two PDUs? Is it to
> provide both iSCSI and SCSI status?
> 
> 2) I have a question about the, "If the error is detected while data 
from
> the initiator is still expected ..." part. Say the command was an iSCSI
> write, and I have three outstanding R2Ts. Part way through I realize 
that
> I want to error away the task (for whatever reason). Am I correct in
> reading the above text as saying I have to wait for all of my 
outstanding
> R2Ts to close (send the F bit), or do I only have to wait for one to
> close?
> 
> Take care,
> 
> Bill
> 
>