Subject: RE: iSCSI question

From: Shahram Davari <[email-masked]>
Date: Thu, 8 Aug 2002 13:49:03 -0700

I think I figured out were the problem (confusion) is.

1) Section 5.14 (recover classes) states:

"  The recovery scenarios detailed in the rest of this section are rep-
   resentative rather than exclusive. In every case, they detail the 
   lowest class recovery that MAY be attempted. The implementer is left 
   to decide under which circumstances to escalate to the next recovery 
   class and/or what recovery classes to implement."

2) However, section 5.5 says:

"      a) Each level is a superset of the capabilities of the previous 
      level. For example, Level 1 support implies supporting all capa-
      bilities of Level 0 and more. "

This means that section 5.14, considers the recovery classes as disjoint,
and permits escalating to higher level classes when needed, while setion 5.5 considers each class to be a superset/subset of another class. 

Which one is correct?

Yours,
-Shahram

> -----Original Message-----
> From: Shahram Davari 
> Sent: Thursday, August 08, 2002 4:21 PM
> To: 'Bill Studenmund'
> Cc: [email-masked]'; [email-masked]; 
> [email-masked];
> [email-masked]
> Subject: RE: iSCSI question
> 
> 
> Hi Bill,
> 
> Thanks for your reply. Please see my comments below:
> 
> 1) I doubt that the session re-establishment code is simpler 
> than PDU recovery code.
> But think what you are saying is that, you need to have the 
> session recovery anyway, so the PDU recovery is extra code.
> 2) Even if that is the case, it has nothing to do with the 
> error recovery hierarchy.
> The error recovery hierarchy must show what recovery should 
> be tried before the other ones. In other words it has to show 
> how the recovery escalates.
> 3) I think it should escalate as following: PDU -> Connection 
> -> Session
> 
> 
> Yours,
> -Shahram  
> 
> > -----Original Message-----
> > From: Bill Studenmund [mailto:[email-masked]]
> > Sent: Thursday, August 08, 2002 3:59 PM
> > To: Shahram Davari
> > Cc: [email-masked]'; [email-masked]; 
> > [email-masked];
> > [email-masked]
> > Subject: RE: iSCSI question
> > 
> > 
> > On Thu, 8 Aug 2002, Shahram Davari wrote:
> > 
> > > Pat,
> > >
> > 
> > > Thanks. I understand your point. Although terminating a 
> > session may be
> > > easy, but, starting a new session requires new login, parameter
> > > exchange, new connections establishment, authentication, etc. So I
> > > wonder how is this any simpler than a simple PDU retransmit?
> > 
> > It's simpler in terms of the code in both the initiator and target.
> > 
> > That's how it's simpler. :-)
> > 
> > Take care,
> > 
> > Bill
> > 
>

---

From: Bill Studenmund <[email-masked]>
Date: Thu, 8 Aug 2002 14:22:18 -0700 (PDT)

> and permits escalating to higher level classes when needed, while setion 5.5 considers each class to be a superset/subset of another class.

They both are.

Looking at the list I see:

	- Within a command recovery
	- Within a connection recovery
	- Connection recovery
	- Session Recovery

What isn't there is what error recovery level each option is required at.
Adding that we get:

      Level	Function

	1	Within a command recovery
	1	Within a connection recovery
	2	Connection Recovery
	0	Session recovery

So that means depending on what error recovery level you are operating at
(due to negotiations), you have a different number of options on this
list.

From your other note:

> 1) I doubt that the session re-establishment code is simpler than PDU
> recovery code. But think what you are saying is that, you need to have
> the session recovery anyway, so the PDU recovery is extra code.

For iSCSI, session recovery is simple. We kill the session and all tasks
on it. We let the *SCSI* layer above us deal with retrying the commands.
We don't. We close the socket and de-allocate all the buffers. Maybe the
initiator trys to log in again automagically, but that's not required and
even if it did, the SCSI layer above it still has to re-issue the
commands.

> 2) Even if that is the case, it has nothing to do with the error
> recovery hierarchy. The error recovery hierarchy must show what
> recovery should be tried before the other ones. In other words it has
> to show how the recovery escalates.

There is the hierarchy and the recovery level. The recovery level
indicates what options are available in the hierarchy.

> 3) I think it should escalate as following: PDU -> Connection -> Session

It does. Note: I take "PDU" to mean within-command and within-connection
recoveries.

Error Recovery Level		Hierarchy

	0			Session
	1			"PDU" -> Session
`	2			"PDU" -> Connection -> Session

Take care,

Bill