Am Freitag, den 22.08.2008, 09:29 +1000 schrieb Mark Harvey: > My current line of thinking is: > - storing a 'bit mask' for each initiator (containing registrant only, > exclusive.... that this initiator has registered / is permitted). > which is tagged by PRgeneration value. > - Each lu contains a mask of of permitted actions (e.g. ssc would most > likely not allow shared access, while sbc devices may allow shared > read access). > - On each SCSI cmd: > Test PRgeneration is not latter then lu's PRgeneration recorded > value. If PRgeneration is later, walk thru initiator list and > re-calculate bit mask & update lu's PRgeneration. > Compare two masks and allow/reject SCSI cmd on outcome. > > > Really, really rough pseudo code which is not even thought thru yet... > > (Incremented by RESERVATION-OUT) > pr->PRgeneration > > struct pr_nexus { > i_t_nexus; (vague hand-waving pointing to some unknown way to > identify i_t_nexus) > pr_generation; (Value of PRgeneration at time this struct was updated) > uint mask; (permission mask allowed by this i_t_nexus) > } pr_nexus; I'm afraid I still don't fully understand: where do you maintain this pr_nexus, at the LU? Then you'd need an efficient way to look up the pr_nexus and we've come full circle to my initial comment. Or am I missing something? Cheers, Arne -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html |