Description of problem:
The Linux iSCSI initiator shipped with RHEL 6 has a deficiency when it comes to SCSI reservations and registrations.
SCSI registrations are (as I understand it) supposed to be tied to the session ID (initiator,target,isid tuple) in iSCSI targets. This is fine, but because the our iSCSI initiator does not conservatively reuse iSIDs (an optional, recommended feature; see 9.1.1 of the iSCSI standard), a new session is formed on each reboot.
Our cluster software can write-exclusive, registrants-only SCSI reservations as a method to perform I/O fencing. On each boot, the cluster nodes acquire registrations on devices in order to gain access.
With the current initiator behavior, these registration keys can be duplicated - since the keys are tied to the iSCSI session, and a new session is established on each reboot due to shifting iSIDs.
Contrast to FC, where there is no notion of iSID: rebooting will not cause registration keys to be duplicated.
Thus, our cluster software and likely other applications which rely on SCSI registrations/reservations cannot work predictably.
This feature request is to implement some sort of optional method to reuse iSIDs (minimally, across reboots) in order to prevent multiple sessions from forming in environments where they are not desired.
I should rephrase my first statement:
"The Linux iSCSI initiator shipped with RHEL 6 has a deficiency when it comes to
SCSI reservations and registrations."
This isn't a deficiency/bug/problem, but simply a missing optional feature.
Note that this behavior does not cause problems with all arrays. Some arrays ignore the iSID (which is as, I understand it, incorrect behavior). Arrays which ignore the iSID do not exhibit duplicate keys.
Some arrays clear all keys for all I_T nexuses/sessions when a host preempts-and-aborts itself.
This is not going to make 6.2.
It should be doable for rhel 5.8 and rhel 6.3 though.
*** This bug has been marked as a duplicate of bug 745579 ***