Subject: iscsi : how should a target process a logout ?

From: Santosh Rao <[email-masked]>
Date: Fri, 28 Sep 2001 18:14:49 -0700

All,

Please refer Rev 7.98 Section 3.14 on logout : 

"After receiving the Logout command the target completes all pending
commands (device activity, data to/from the initiator, R2T and status
transfers) that it deems fit to conclude, and then issues the Logout
response and half-closes the TCP connection (sends FIN)."

I object to the following wording :

"target completes all pending commands (device activity, data to/from
the initiator, R2T and status transfers) that it deems fit to conclude"

The above seems to imply that the target is supposed to continue
processing the pending commands and only upon their completion would it
send a logout response.

I suggest that the above wording be removed and something in its place
be added to indicate clearly that a target MUST :

- abort all pending I/Os on that connection/session if the logout reason
code is "close the connection", " or "close the session" respectively.

- transfer the allegiance of all pending commands on that connection if
the logout reason code is "remove the connection for recovery".

- NOT send back scsi response for any aborted I/Os. The logout response
implicitly terminates all the pending I/Os on that connection, [or
session, if the session is being logged out.]

- NOT send any further PDUs to the initiator, other than the response to
the logout.

Comments ?

Thanks,
Santosh

-- 
##################################
Santosh Rao
Software Design Engineer,
HP-UX iSCSI Driver Team,
Hewlett Packard, Cupertino.
email : [email-masked]
Phone : 408-447-3751
##################################

---

From: "Julian Satran" <[email-masked]>
Date: Sat, 29 Sep 2001 12:39:51 +0300

Santosh,

Good point. This text is relatively old.

The new text will read:

After receiving the Logout command the target aborts all pending commands 
on that connection/session if the logout reason code is "close the 
connection", " or "close the session" and suspends all data/status/R2T 
transfers on behalf of pending commands if the reason code is "remove 
connection for recovery". The target then issues the Logout response and 
half-closes the TCP connection (sends FIN).  After receiving the Logout 
response and attempting to receive the FIN (if still possible), the 
initiator MUST completely close the logging-out connection. For the 
aborted commands, no additional responses should be expected after that.

Note that a Logout for a CID may be performed on a different transport 
connection when the TCP connection for the CID had already been 
terminated.  In such a case, only a logical "closing" of the iSCSI 
connection for the CID is implied with a Logout. 

All commands that were not aborted or not completed (with status) and 
acknowledged when the connection is closed completely can be reassigned to 
a new connection if the target supports connection recovery.

Regards,
Julo

Santosh Rao <[email-masked]>
Sent by: [email-masked]
29-09-01 03:14
Please respond to Santosh Rao

        To:     IPS Reflector <[email-masked]>
        cc: 
        Subject:        iscsi : how should a target process a logout ?

All,

Comments ?

Thanks,
Santosh