|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] iSCSI: target resource "leak"/logout commandJulian, There is a corner case where - a [group of] command completion[s] will never be acked (ExpStatRN) - the corresponding task[s] are not "retried" because they are perfectly completed from the initiator point of view and - the session continues to work fine. Thus the resource for the task[s] may never be released on the target (the target waits for ExpStatRN acking the completion before releasing task resources) because on the target side the ack of the completion is not received and on the initiator will not retry the command. A resource (memory) "leak" happens on the target. First i described the scenario, then the solution. Scenario ======= Session with 2 TCP connections 1 and 2 1) A command completion (StatRN=10) is received by the initiator (over cx 1) for the command 5. 2) The initiator sends back ExpStatRN=11 with a command over TCP cx 1 3) The TCP cx 1 drops and the command 5 (so ExpStatRN=11) will never make it to the target. 4) The command 5 is not retried on the connection 2 because for the initiator it is perfectly completed. 5) The target never gets the completion acked and doesn't know when to release resources. Solution ======= - Add the field ExpStatRN in the logout command. - The initiator puts in this field the last value of ExpStatRN of the failed cx. (Not the ExpStatRN value of the connection used to transport the logout) - The target when receiving the logout, reads ExpStatRN and is able to free up the resources. Regards, Pierre
Home Last updated: Tue Sep 04 01:05:56 2001 6315 messages in chronological order |