Subject: iSCSI: RefCmdSN != CmdSN

From: Eddy Quicksall <[email-masked]>
Date: Thu, 28 Feb 2002 19:46:06 -0500

Is there a reason that this check is mandated? Is there a case where this
can happen with bug free code?

 If RefCmdSN does not match the CmdSN of the command to be aborted at the
 target, the abort action MUST NOT be performed and the response MUST
 be 'function rejected'.

[email-masked]

---

From: "Mallikarjun C." <[email-masked]>
Date: Thu, 28 Feb 2002 17:47:05 -0800

Eddy,

I agree that targets don't have to check both always, only when it
is needed.

The intended role of RefCmdSN is to help identify the right command
when the command to be aborted had not arrived - the command
could be lost due to digest errors or as part of connection failure.
So I think the quoted text should be rephrased to:

Section 9.5.4
For the ABORT TASK function, initiators MUST always set this to the
CmdSN of the task identified by the Initiator Task Tag field.  Targets however
must consider the field valid only when the task indicated by the Initiator
Task Tag field does not exist.

Section 9.6.1
For the ABORT TASK function,
    a) if the ITT identifies a valid task leading to a successful termination,
        targets must return the "Function complete" response.
    b)if the ITT does not identify an existing task but if the CmdSN indicated
       by the RefCmdSN field in the task management function request is within
       the valid CmdSN window, targets must consider the CmdSN received
       and return the "Function complete" response.
   c) if the ITT does not identify an existing task and if the CmdSN indicated
       by the RefCmdSN field in the task management function request is outside
       the valid CmdSN window, targets must return the "Task does not exist"
response.

Comments?
--
Mallikarjun

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