Subject: RE: iSCSI: Use of the A bit

From: "Julian Satran" <[email-masked]>
Date: Mon, 18 Mar 2002 02:45:05 +0200

Rod,

If you thought that you can reuse ITT as soon as the status arrived you are
mistaken. There is no need for a conservative reuse rule. The ITT may be
reused only after the task termination (status) has been acknowledged.

However even then on a multiple connection a target may get a new command
with an ITT before status ack.
In this case a well designed target will avoid sending the status for the
second command before having the first acked.

The data ack (if any) must precede the status ack and the target should
consider the status ack as implying a data ack.

Julo

                      "Rod Harrison"                                                                     
                      <rod.harrison@win        To:       "Eddy Quicksall" <[email-masked]>,  
                      driver.com>               "Mallikarjun C." <[email-masked]>, <[email-masked]>    
                                               cc:       Julian Satran/Haifa/IBM@IBMIL                   
                      16-03-02 17:42           Subject:  RE: iSCSI: Use of the A bit                     
                      Please respond to                                                                  
                      "Rod Harrison"                                                                     

Mallikarjun, Eddy and all,

             I think this might be dangerous.

             If the initiator receives a DATA-IN with F and A bits set and
a GOOD
SCSI status it would be required to send a data SNACK PDU containing
an initiator task tag that has "expired" at the initiator.

             Initiator task tags are of course reused and there is no
requirement
for the data SNACK to be sent immediately so it would be possible to
have a single ITT in the network referring to more than 1 task. I
think it is way too late in the game to start considering conservative
reuse rules for initiator task tags. That could be a potentially
invasive implementation change, especially when you consider that
reusing things is generally a good thing to do from a caching
perspective.

             Even if the data SNACK were required to be sent immediately
there is
no guarantee that it would be received by the target before PDUs for
the task with the reused ITT when there is more than one connection
per session.

             Since the SCSI status ends the task and therefore releases the
ITT it
seems the only safe way to do this would be to make piggyback status
mutually exclusive with the A bit in a DATA-IN with the F bit set.
This would require the target to wait for the data SNACK before
issuing a SCSI status PDU. Clearly this is unpalatable for latency
reasons.

             - Rod

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of
Eddy Quicksall
Sent: Saturday, March 16, 2002 12:41 PM
To: Mallikarjun C.; [email-masked]
Cc: [email-masked]
Subject: RE: iSCSI: Use of the A bit

Yes, I agree.

Eddy

-----Original Message-----
From: Mallikarjun C. [mailto:[email-masked]]
Sent: Friday, March 15, 2002 11:22 PM
To: [email-masked]
Subject: Re: iSCSI: Use of the A bit

I agree with Julian.

Seems to me that targets should be allowed to ask for an ack
on the last Data-In PDU that concludes the entire transfer for the
task - a follow-up NOP-ping is needless.  I propose that we

replace:
  "it MAY set the A bit to 1 only once every MaxBurstSize bytes and
MUST NOT
do so more frequently than this."

with:
  "it MAY set the A bit to 1 only once every MaxBurstSize bytes or on
the
last
   Data-In PDU that concludes the entire requested transfer from the
target's
   perspective, and MUST NOT do so more frequently than this."
--
Mallikarjun

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

----- Original Message -----
From: "Julian Satran" <[email-masked]>
To: "Paul Koning" <[email-masked]>
Cc: <[email-masked]>; <[email-masked]>;
<[email-masked]>; <[email-masked]>
Sent: Friday, March 15, 2002 11:50 AM
Subject: RE: iSCSI: Use of the A bit

> That could be so but it would be overkill. Status ACK can implicitly
> acknowledge the last transfer.
> And Yes the fact that the last transfer is not mentioned is an
oversight
> that I will correct.
> This does not mean that you HAVE TO raise the A flag or that you are
> ENCOURAGED to do so :-)
>
> Julo
>
>
>
>
> Paul Koning <[email-masked]>
> Sent by: [email-masked]
> 15-03-02 16:09
> Please respond to Paul Koning
>
>
>         To:     [email-masked]
>         cc:     [email-masked], [email-masked]
>         Subject:        RE: iSCSI: Use of the A bit
>
>
>
> >>>>> "Eddy" == Eddy Quicksall <[email-masked]> writes:
>
>  Eddy> I think we may need better explanation about why some folks
>  Eddy> don't want to do the "positive ack".
>
>  >> We got to this position, since so many folks did not want to
>  >> support the positive ack.
>
> Something doesn't compute here.
>
> I don't believe the discussion has anything to do with whether you
> support positive ACK or not.  If you're doing error recovery level 1
> or above, then you are required to support it, because the other end
> is allowed to say A=1 and you're required to answer that.
>
> If you don't want to support positive ACK, the solution is to
support
> only error recovery level 0.
>
> The issue under discussion is whether the rule "you are allowed to
set
> A=1 only once per MaxBurstSize" is correct.  At this point it's
clear
> to me that it is not, because you need to be able to set A=1 at the
> end of the transfer.  The current rule forbids that unless the total
> transfer size is >= MaxBurstSize.
>
> Kevin's proposal is a simple fix to this problem.
>
>                   paul
>
>
>
>

---

From: "Rod Harrison" <[email-masked]>
Date: Mon, 18 Mar 2002 11:27:23 -0000

Julian,

	I hadn't seen this explicitly stated in the spec, although thinking
through the implications of what is said I think it is implicitly in
there. Perhaps we should spell this out a little more. Clearly when
processing DATA-IN with F, A bits and GOOD status initiators need to
be very careful about the order they free the ITT and increment
expStatSn. Although it seems you are saying the target shouldn't
consider it an error to receive a command reusing an ITT before it
sees expStatSn acknowledge status on the original command. Presumably
the target should consider it an error to see an ITT reused if it
hasn't issued a status for the task.

	Both SNACK and Command PDUs carry expStatSN so presumably these could
be used to acknowledge the status. And in the case of the command PDU
the ITT could be reused in the same PDU that acknowledges the its
previous status.

	- Rod

-----Original Message-----
From: [email-masked] [mailto:[email-masked]]On Behalf Of
Julian Satran
Sent: Monday, March 18, 2002 12:45 AM
To: Rod Harrison
Cc: Mallikarjun C.; Eddy Quicksall; [email-masked]; Julian Satran
Subject: RE: iSCSI: Use of the A bit

Rod,

If you thought that you can reuse ITT as soon as the status arrived
you are
mistaken. There is no need for a conservative reuse rule. The ITT may
be
reused only after the task termination (status) has been acknowledged.

However even then on a multiple connection a target may get a new
command
with an ITT before status ack.
In this case a well designed target will avoid sending the status for
the
second command before having the first acked.

The data ack (if any) must precede the status ack and the target
should
consider the status ack as implying a data ack.

Julo

                      "Rod Harrison"
                      <rod.harrison@win        To:       "Eddy
Quicksall" <[email-masked]>,
                      driver.com>               "Mallikarjun C."
<[email-masked]>, <[email-masked]>
                                               cc:       Julian
Satran/Haifa/IBM@IBMIL
                      16-03-02 17:42           Subject:  RE: iSCSI:
Use of the A bit
                      Please respond to
                      "Rod Harrison"

             If the initiator receives a DATA-IN with F and A bits set
and
a GOOD
SCSI status it would be required to send a data SNACK PDU containing
an initiator task tag that has "expired" at the initiator.

             Even if the data SNACK were required to be sent
immediately
there is
no guarantee that it would be received by the target before PDUs for
the task with the reused ITT when there is more than one connection
per session.

             Since the SCSI status ends the task and therefore
releases the
ITT it

             - Rod

-----Original Message-----

Yes, I agree.

Eddy

-----Original Message-----
From: Mallikarjun C. [mailto:[email-masked]]
Sent: Friday, March 15, 2002 11:22 PM
To: [email-masked]
Subject: Re: iSCSI: Use of the A bit

I agree with Julian.

replace:

with:

Mallikarjun Chadalapaka

----- Original Message -----
From: "Julian Satran" <[email-masked]>
To: "Paul Koning" <[email-masked]>
Cc: <[email-masked]>; <[email-masked]>;

oversight
support
set
clear