Mike Snitzer wrote: > > On Wed, Sep 22 2010 at 6:13am -0400, > Hannes Reinecke wrote: > >> Mike Christie wrote: >>> On 09/21/2010 02:33 PM, Mike Snitzer wrote: >>>> 2) the patch also modified alua_rtpg() so implicit ALUA would retry >>>> (just like explicit ALUA currently does) if TPGS_STATE_TRANSITIONING >>>> - so why should we avoid retry for implicit but do it for explicit? >>> Leaving that for Hannes. I cannot think of a reason. Probably just did >>> not do it. >> Finally I got around to answering this. >> >> I've attached a patch which I made the other day which seems to work >> reasonably well. >> Looks better from my side, so if you agree I'll be sending it >> upstream properly. > > Looks good for covering this "2)" change above. > > But "1)" change you had concern with (in my previous patch) was that > alua_prep_fn would return BLKPREP_DEFER if TPGS_STATE_TRANSITIONING. > This was bad in that FS requests (like the directio path checker) would > always call ->prep_fn and that if TPGS_STATE_TRANSITIONING the RTPG > state would never be reevaluated.. leaving us stuck in BLKPREP_DEFER. > > Seems I'm missing a new flow that proves this is no longer a concern. > The device_handler will keep retrying any path in 'transitioning'. After ALUA_FAILOVER_TIMEOUT the device handler will either have updated the port state to something other than 'transitioning' or returned with 'SCSI_DH_RETRY'. But yes, you are right; we should be setting the port to something else than 'transitioning' then. Probably 'standby' is a good choice here. New patch attached. Thanks for the review. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg)