Hannes, Thanks again for the response.. Please see the comments below.. > Moger, Babu wrote: > > 1. Run I/O on both these Luns > > 2. Pull the cable connected to controller A. > > 3. Failover will happen and Lun 0 will move to controller B. Now both > the Luns are on controller B. > > 4. Connect the cable back on controller A. > > 5. multipath tool will detect the physical Luns on controller A and > run the priority test. > > 6. It will find that Lun 0 is not on preferred path and will initiate > a failback. > > Because it is a controller level failover it will move the Lun 1 > also to controller A. > > Now both the Luns are on controller A. > > 7. Multipath tool will come again and find Lun 1 not on preferred > path and initiate failback. > > This will both the Luns to controller B. > > This will continue forever. > > > Hmm. Yes, correct. > After all, the patch I sent was meant to be a proof of concept, not a > fully fledged > solution. (In fact, I'm quite surprised it worked so well :-) > > What about modifying the LUN select code to switch all _visible_ LUNs > (ie all LUNs which > are _not_ on the preferred path) in one go? > That way we wouldn't run into this issue. In this case handler should be able to do two tasks. 1. move all the Luns when one of the path failed(failover) 2. move only the luns which are not there on preferred path(failback). With the current code rdac_activate(struct scsi_device *sdev) we cannot make that decision. There is no information passed from dm layer to know if this command is for task 1(failover) or task 2(failback). -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel