[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