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@xxxxxxx> 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@xxxxxxx>