Subject: iSCSI : Abort Task "connection allegiance"

From: "Santosh Rao" <[email-masked]>
Date: Sun, 04 Feb 2001 20:38:35 -0000

>To: [email-masked] Subject: iSCSI-related conclusions from Orlando interim 
>Meeting From: [email-masked] Date: Fri, 19 Jan 2001 19:29:36 -0500

>(2) Error Recovery
>- Abort WARNING will be added to the draft.
>- Immediate Delivery of Aborts and similar task management commands
>   may have unexpected results when multiple TCP connections are in use
>   because Abort, Clear Task Set, etc. may bypass command(s) to be
>   aborted/cleared on other TCP connections.
>- Ordered Delivery should be used instead when this is a concern.

-------------------------------------------------------------------

Julian & All,

For the above issue, the Abort Task I/O Error Recovery is udertaken
when an I/O times out (O.S. specific SCSI ULP timer has expired). Under
such circumstances, it is preferrable to have an expedited error
recovery which is not hindered by stalls in its processing due to the
target waiting for missing CmdSNs.
[which are applicable when the Abort Task is sent with a non-0 CmdSN].

In the interests of keeping I/O timeout recovery quick, the
"connection allegiance" policy, currently applicable to all phases of a
command, should be extended to the Abort Task for that command as well
and the Abort Task be sent with a CmdSN of 0.

Regards,
Santosh

_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com

---

From: "Y P Cheng" <[email-masked]>
Date: Mon, 5 Feb 2001 09:33:55 -0800

> [which are applicable when the Abort Task is sent with a non-0 CmdSN].

There are two reasons for issuing abort: 1) application software exits and
OS needs cleaning up, and 2) a request times out and it needs clean restart.
In either cases, we don't want the abort arrives there before the one to be
aborted. Hence, using zero CmdSN is unwise.  If the abort gets there first,
the target will complete the abort quickly and later executes the one to be
aborted anyway.

> and the Abort Task be sent with a CmdSN of 0.

I don't follow this logic at all.  Are you trying to say that if the target
gets an abort, it should enter connection allegiance until the one to be
aborted arrives? This would real make a mess on the target microcode.  How
do we even know the aborted request would arrive?  IMHO, abort should never
have a zero CmdSN.

Y.P.