[dm-devel] Clariion CX600 automatic failback support

goggin, edward egoggin at emc.com
Fri Nov 4 19:36:01 UTC 2005


On Date: Fri, 4 Nov 2005 10:47:51 +0100
Christophe Varoqui <christophe.varoqui at free.fr> wrote

> On Fri, Nov 04, 2005 at 09:19:06AM +0100, Bernd Zeimetz wrote:
> > Hi,
> > 
> > > Looks good, except the call to extract_hwe_from_path in 
> setup_multipath
> > > must be before the call to select_pgfailback.
> > >
> > 
> > We have a ton of these log messages now.
> > >From the last about 2 hours:
> > 
> > 580x multipathd: 3600601f4a20c000099dc229956b0d711: switch 
> to path group #1
> > 714x multipathd: 3600601f4a20c000096dc229956b0d711: switch 
> to path group #1
> > 714x multipathd: 3600601f2a20c0000fb13caa656b0d711: switch 
> to path group #1
> >   45x kernel: device-mapper: dm-emc: emc_pg_init: sending 
> switch-over command
> > 
> > It happens only for these 3 of 8 luns.
> > 
> > Kernel is 2.6.13.4, devmapper 1.01, latest multipath-tools 
> from git, evms 
> > 2.5.3
> > 
> > zeus-1:/# cat /etc/multipath.conf
> > defaults {
> >         failback                                immediate
> > }
> > 
> > 
> > Since we had a lot of trouble with our CX400 (Hardware 
> problems, but they're 
> > supposed to be fixed) I'm wondering what these messages 
> mean, and if we still 
> > have hardware/software bugs somewhere.
> > 
> Yes, the test to determine if a switch is needed is sub-optimal :
> The no activated PG case (all Enabled for exampleÃ) keeps 
> triggering a switch.
> I checked-in a patch to solve that issue.

I've dealt with this problem by patching the device mapper
multipath driver in the kernel.

The patch below patches drivers/md/dm-mpath.c:multipath_status()
to return an active state for a path group which is either the
current path group or setup to be the next path group instead
of just returning an active state for a path group which is
currently active.

*** ../base/linux-2.6.14-rc4/drivers/md/dm-mpath.c	Mon Oct 10 20:19:19
2005
--- drivers/md/dm-mpath.c	Thu Nov  3 04:17:48 2005
***************
*** 1158,1164 ****
  		list_for_each_entry(pg, &m->priority_groups, list) {
  			if (pg->bypassed)
  				state = 'D';	/* Disabled */
! 			else if (pg == m->current_pg)
  				state = 'A';	/* Currently Active */
  			else
  				state = 'E';	/* Enabled */
--- 1158,1164 ----
  		list_for_each_entry(pg, &m->priority_groups, list) {
  			if (pg->bypassed)
  				state = 'D';	/* Disabled */
! 			else if ((pg == m->current_pg) || (pg ==
m->next_pg))
  				state = 'A';	/* Currently Active */
  			else
  				state = 'E';	/* Enabled */




More information about the dm-devel mailing list