[dm-devel] release 0.4.4 ?
christophe varoqui
christophe.varoqui at free.fr
Wed Apr 20 22:34:25 UTC 2005
On jeu, 2005-04-21 at 00:04 +0200, christophe varoqui wrote:
> On mer, 2005-04-20 at 23:52 +0200, Lars Marowsky-Bree wrote:
> > On 2005-04-20T23:38:39, christophe varoqui <christophe.varoqui at free.fr> wrote:
> >
> > > I can't reproduce that at OSDL :
> > >
> > > * no config file
> > > * IBM 3542 (tur/group_by_serial/no hwh/no feature)
> > > * mp-tools 0.4.4-pre17
> >
> > That means you're not using a priority callout, which is what the bug is
> > about, right?
> >
> > Anyway, I'll try -pre17 (or maybe -pre18 by then ;-) tomorrow.
> >
> oh, so you use the group_by_prio pgpolicy ?
> Indeed, the fallback prio to 1 is annoying in that scenario.
>
> I'll see how to propagate the error to prevent a map reloading in case
> of prio callout error.
>
> Regards,
That should do the trick :
* errors on prio callout are stored as a negative prio value
* multipath/main.c:coalesce_path() marks maps untouchable if they
contain a path with negative prio
diff -urN multipath-tools-0.4.4-pre17/libmultipath/discovery.c
multipath-tools-0.4.4-pre18/libmultipath/discovery.c
--- multipath-tools-0.4.4-pre17/libmultipath/discovery.c
2005-04-20 12:57:10.000000000 -0700
+++ multipath-tools-0.4.4-pre18/libmultipath/discovery.c
2005-04-20 15:35:29.676340096 -0700
@@ -481,10 +481,11 @@
select_getprio(pp);
if (apply_format(pp->getprio, &buff[0], pp)) {
- pp->priority = 1;
+ condlog(0, "error formatting prio callout
command");
+ pp->priority = -1;
} else if (execute_program(buff, prio, 16)) {
- condlog(3, "error calling out %s", buff);
- pp->priority = 1;
+ condlog(0, "error calling out %s", buff);
+ pp->priority = -1;
} else
pp->priority = atoi(prio);
@@ -498,9 +499,10 @@
select_getuid(pp);
if (apply_format(pp->getuid, &buff[0], pp)) {
+ condlog(0, "error formatting uid callout
command");
memset(pp->wwid, 0, WWID_SIZE);
} else if (execute_program(buff, pp->wwid, WWID_SIZE)) {
- condlog(3, "error calling out %s", buff);
+ condlog(0, "error calling out %s", buff);
memset(pp->wwid, 0, WWID_SIZE);
}
condlog(3, "uid = %s (callout)", pp->wwid);
diff -urN multipath-tools-0.4.4-pre17/multipath/main.c
multipath-tools-0.4.4-pre18/multipath/main.c
--- multipath-tools-0.4.4-pre17/multipath/main.c 2005-04-20
13:36:44.000000000 -0700
+++ multipath-tools-0.4.4-pre18/multipath/main.c 2005-04-20
15:41:35.135781816 -0700
@@ -710,6 +710,9 @@
mpp->size = pp1->size;
mpp->paths = vector_alloc();
+ if (pp1->priority < 0)
+ mpp->action = ACT_NOTHING;
+
if (!mpp->paths)
return 1;
@@ -732,6 +735,9 @@
mpp->wwid);
mpp->action = ACT_NOTHING;
}
+ if (pp2->priority < 0)
+ mpp->action = ACT_NOTHING;
+
if (store_path(mpp->paths, pp2))
return 1;
}
--
christophe varoqui <christophe.varoqui at free.fr>
More information about the dm-devel
mailing list