Subject: Reject PDUs and the F bit

From: Bill Studenmund <[email-masked]>
Date: Fri, 14 Jun 2002 13:12:30 -0700 (PDT)

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

---

From: "Mallikarjun C." <[email-masked]>
Date: Fri, 14 Jun 2002 16:41:53 -0700

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]