Subject: Connection Recovery

From: "Rahul Bhagwat" <[email-masked]>
Date: Mon, 5 Nov 2001 19:01:28 +0530

Hi,

Is there any order in task reassignments and connection logout (implicit or explicit)
during a connection recovery. 

If these two are not related, what is the use of moving the connection to CLEANUP_WAIT
state? CLEANUP_WAIT state typically means that there are pending tasks for this
connection due to which it cannot be moved to FREE state. That is only difference 
betweeen FREE state and CLEANUP_WAIT state.

Which probably means that it is mandatory that Task reassigment happens before
logging out a failed connection (in CLEANUP_WAIT state). Once a CSM-E or a CSM-I
drives the connection to free state, all the pending tasks need to be freed up.

Am I correct here?

Regards,
Rahul

---

From: "Mallikarjun C." <[email-masked]>
Date: Mon, 5 Nov 2001 12:08:07 -0800

Rahul,

A successful connection logout (implicit or explicit) must precede the
task reassignments during a connection recovery operation.

But please note that the notion of "connection cleanup" (graceful closing of
a
previously operational iSCSI connection) in the state diagrams goes beyond
the connection recovery (in fact, that is the reason I renamed from its
previous
name, please refer to my email to ips on 11/2/01 with the slide posting
announcement).
A connection cleanup is highly desirable even in the absence of task
reassignment,
to quickly reclaim the tags and buffers on either end (or, both sides would
have
to wait for a connection timeout to happen, symbolized by the M1
transition).

>Once a CSM-E or a CSM-I

Not correct.  The decision to free up the pending tasks is depedent on the
operational ErrorRecoveryLevel in the CSM-I case (please look at the
discussion in section 3.12.2), or is dependent on the Logout reason code
(recovery Vs close) in the CSM-E case.  All the FREE state symbolizes
really is that the iSCSI connection is gracefully closed with a successful
explicit/implit iSCSI Logout.  The pending tasks at this point have no
connection allegiance, and are loosely "owned" by the session.  It is
legitimate
for the pending tasks to be existent (waiting for reassignment) even when
all the connections reported FREE (please look at the discussion under
3.15.2, Time2Retain).

Regards.
--
Mallikarjun

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

----- Original Message -----
From: Rahul Bhagwat
To: [email-masked]
Sent: Monday, November 05, 2001 5:31 AM
Subject: Connection Recovery

Hi,

Is there any order in task reassignments and connection logout (implicit or
explicit)
during a connection recovery.

If these two are not related, what is the use of moving the connection to
CLEANUP_WAIT
state? CLEANUP_WAIT state typically means that there are pending tasks for
this
connection due to which it cannot be moved to FREE state. That is only
difference
betweeen FREE state and CLEANUP_WAIT state.

Which probably means that it is mandatory that Task reassigment happens
before
logging out a failed connection (in CLEANUP_WAIT state). Once a CSM-E or a
CSM-I
drives the connection to free state, all the pending tasks need to be freed
up.

Am I correct here?

Regards,
Rahul

---

From: "Rahul Bhagwat" <[email-masked]>
Date: Tue, 6 Nov 2001 10:42:50 +0530

Hi,

The only possible state that CLEANUP_WAIT eventually ends up is
FREE (on timeout or successful implicit/explicit logout).

If task reassignment happens unrelated to connection state, is there any
other resource associated with connection that can be still used while it is
in CLEANUP_WAIT state.

Why do we have to wait for initiator to send logout to clean up things.

Regards,
Rahul

---

From: "Mallikarjun C." <[email-masked]>
Date: Tue, 06 Nov 2001 10:11:36 -0800

Rahul Bhagwat wrote:
> If task reassignment happens unrelated to connection state, 

As I already said -
" A successful connection logout (implicit or explicit) must precede the
 task reassignments during a connection recovery operation."

Task reassignment *is* related to connection state FREE.

>is there any

I am not sure I quite understood what you're saying here.  

There's an architected timeout (M1 transition) to reclaim the
resources, I only pointed out Logout as "highly desirable"
if all an implementation wants is to reclaim connection and
task resources.  

OTOH, Logout is mandatory if task reassignment is sought. 
A CLEANUP_WAIT state from initiator's perspective (let's say
due to an initiator NIC failure) does not imply a CLEANUP_WAIT
on the target (for the same connection).  Logout is a mechanism
that forces both sides to sync up on the FREE state, and is 
the architected mechanism to formally decouple the connection
allegiance of the task.  It is to avoid cases where target 
may receive stale PDUs on one connection, while receiving the
PDUs also on a (reassigned) different connection.  
-- 
Mallikarjun 

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