[dm-devel] rdac priority checker changing priorities

Chandra Seetharaman sekharan at us.ibm.com
Thu Apr 30 18:05:43 UTC 2009


Hannes,

I think we need to revisit the priority value we provide for preferred
path(4) relative to active path (2) and non-preferred(1).

Consider the following scenario:

Access to a lun thru 2 preferred and 2 non-preferred path. Lets call
path group with preferred paths as pg1 and with non-preferred paths as
pg2. 

Initially pg1 has priority of 8 and pg2 has priority of 2. pg1 is chosen
and I/O goes thru pg1, all good.

Both the paths in pg1 fails, pg2 has been made the active path group and
I/O is sent thru that path and since it became "active", its priority
raises to 6 ( 2 path times (active + non-preferred)). 

When one of the paths in pg1 comes back, one would expect the failback
to happen. It doesn't happen as pg1's priority (4) is smaller than that
of pg2 (6). Which is not correct.

We can do the same exercise with more than 4 paths also, like 6, 8 etc.,
and the results are worse.

So, IMO we need to give the disproportionately large number for
preferred path w.r.t active and non-preferred. What do you think ?

chandra



On Thu, 2009-04-30 at 08:25 +0200, Hannes Reinecke wrote:
> Hi Lucas,
> 
> Lucas Brasilino wrote:
> > Hi
> > 
> > I don't know if I'm misundertanding something. I've got an DS4700 and I'm
> > switching from RDAC[1] to multipath, since it's natively supported in
> > the distribution I use
> > here (SLES 10 SP2).
> > 
> > Since RDAC[1] works perfect, I'm trying to use 'rdac' priority in multipath.
> > 
> > My /etc/multiconf.conf is quite tiny, since I'm building it step-by-step :-) :
> > 
> > blacklist {
> > 	devnode "^sda[0-9]*"
> > }
> > 
> > defaults {
> > 	user_friendly_names	yes
> > 	prio			rdac
> > 	path_checker		tur
> > }
> > 
> > multipaths {
> > 	multipath {
> > 		wwid	3600a0b8000327b900000107549f85224
> > 		alias	mpath0
> > 	}
> > }
> > 
> > I think that using 'prio rdac' makes multipath to use 'mpath_prio_rdac' tool.
> > 
> >  # multipath -v2 -ll
> > mpath0 (3600a0b8000327b900000107549f85224) dm-0 IBM,1814      FAStT
> > [size=140G][features=1 queue_if_no_path][hwhandler=1 rdac]
> > \_ round-robin 0 [prio=6][active]
> >  \_ 9:0:0:0  sdb 8:16  [active][ready]
> > \_ round-robin 0 [prio=1][enabled]
> >  \_ 10:0:0:0 sdc 8:32  [active][ghost]
> > 
> > So the first path has priority 6, as I can confirm:
> > 
> > # mpath_prio_rdac /dev/sdb
> > 6
> > # mpath_prio_rdac /dev/sdc
> > 1
> > 
> > After the first path (prio=6) failure I get:
> > 
> > # multipath -v2 -ll
> > sdb: rdac prio: inquiry command indicates error
> > mpath0 (3600a0b8000327b900000107549f85224) dm-0 IBM,1814      FAStT
> > [size=140G][features=1 queue_if_no_path][hwhandler=1 rdac]
> > \_ round-robin 0 [prio=0][enabled]
> >  \_ 9:0:0:0  sdb 8:16  [failed][faulty]
> > \_ round-robin 0 [prio=1][enabled]
> >  \_ 10:0:0:0 sdc 8:32  [active][ghost]
> > 
> > Ok.. working great, activating the second path. But after the faulty
> > path is restored:
> > 
> > # multipath -v2 -ll
> > mpath0 (3600a0b8000327b900000107549f85224) dm-0 IBM,1814      FAStT
> > [size=140G][features=1 queue_if_no_path][hwhandler=1 rdac]
> > \_ round-robin 0 [prio=2][enabled]
> >  \_ 9:0:0:0  sdb 8:16  [active][ghost]
> > \_ round-robin 0 [prio=5][active]
> >  \_ 10:0:0:0 sdc 8:32  [active][ready]
> > 
> > Second path is now priority!!! And of course does not fails back! By
> > the way, my LUN is configured in
> > DS4700 in sort a way that the first path *is* the path to preferred controller.
> > 
> > I think path priorities should not change. If so first path goes back
> > to 'active' status.
> > Am I misunderstanding something ? Or messing things up?
> > 
> You are using an old version of multipathing for SLES10 SP2.
> This had a bug triggering priority inversion on RDAC.
> Please update to the latest version.
> 
> Cheers,
> 
> Hannes




More information about the dm-devel mailing list