[dm-devel] release 0.4.4 ?
christophe varoqui
christophe.varoqui at free.fr
Wed Apr 20 23:18:02 UTC 2005
On jeu, 2005-04-21 at 00:49 +0200, christophe varoqui wrote:
> On jeu, 2005-04-21 at 00:40 +0200, Lars Marowsky-Bree wrote:
> > On 2005-04-21T00:10:52, christophe varoqui <christophe.varoqui at free.fr> wrote:
> >
> > > In the mean time, you should check why your prio callout always errors
> > > when run from multipathd. One obvious reason would be that the callout
> > > was not copied into the ramfs ...
> >
> > How can I check that? I don't see any ramfs/shmfs in mount, and
> > multipathd also doesn't log anything about it.
> >
> "multipathd -v3" will log what files it copies into the ramfs.
>
> You don't see it in "mount" because its in a private namespace, but you
> should see it listed in /proc/$(pidof multipathd)/mounts ... though it
> won't help you see its content :/
>
I think I know what happens.
the binvec is constructed from dict.c only, so it works only in presence
of a config file.
Attached patch does :
* move push_callout to config.[ch]
* use it in store_hwe() too
To make you right, I'll push pre18 now ;)
Regards,
cvaroqui
diff -urN multipath-tools-0.4.4-pre17/libmultipath/config.c
multipath-tools-0.4.4-pre18/libmultipath/config.c
--- multipath-tools-0.4.4-pre17/libmultipath/config.c 2005-04-20
12:50:09.000000000 -0700
+++ multipath-tools-0.4.4-pre18/libmultipath/config.c 2005-04-20
16:24:31.951046352 -0700
@@ -14,6 +14,56 @@
#include "../libcheckers/checkers.h"
+/*
+ * helper function to draw a list of callout binaries found in the
config file
+ */
+extern int
+push_callout(char * callout)
+{
+ int i;
+ char * bin;
+ char * p;
+
+ /*
+ * purge command line arguments
+ */
+ p = callout;
+
+ while (*p != ' ' && *p != '\0')
+ p++;
+
+ if (!conf->binvec)
+ conf->binvec = vector_alloc();
+
+
+ if (!conf->binvec)
+ return 1;
+
+ /*
+ * if this callout is already stored in binvec, don't store it
twice
+ */
+ vector_foreach_slot (conf->binvec, bin, i)
+ if (memcmp(bin, callout, p - callout) == 0)
+ return 0;
+
+ /*
+ * else, store it
+ */
+ bin = MALLOC((p - callout) + 1);
+
+ if (!bin)
+ return 1;
+
+ strncpy(bin, callout, p - callout);
+
+ if (!vector_alloc_slot(conf->binvec))
+ return 1;
+
+ vector_set_slot(conf->binvec, bin);
+
+ return 0;
+}
+
struct hwentry *
find_hwe (vector hwtable, char * vendor, char * product)
{
@@ -195,10 +245,13 @@
if (pgp)
hwe->pgpolicy = pgp;
- if (getuid)
+ if (getuid) {
hwe->getuid = set_param_str(getuid);
- else
+ push_callout(getuid);
+ } else {
hwe->getuid = set_default(DEFAULT_GETUID);
+ push_callout(DEFAULT_GETUID);
+ }
if (!hwe->getuid)
goto out;
@@ -238,17 +291,21 @@
if (pgp)
hwe->pgpolicy = pgp;
- if (getuid)
+ if (getuid) {
hwe->getuid = set_param_str(getuid);
- else
+ push_callout(getuid);
+ } else {
hwe->getuid = set_default(DEFAULT_GETUID);
+ push_callout(DEFAULT_GETUID);
+ }
if (!hwe->getuid)
goto out;
- if (getprio)
+ if (getprio) {
hwe->getprio = set_param_str(getprio);
- else
+ push_callout(getprio);
+ } else
hwe->getprio = NULL;
if (hwhandler)
@@ -404,3 +461,4 @@
free_config(conf);
return 1;
}
+
diff -urN multipath-tools-0.4.4-pre17/libmultipath/config.h
multipath-tools-0.4.4-pre18/libmultipath/config.h
--- multipath-tools-0.4.4-pre17/libmultipath/config.h 2005-04-18
12:12:39.000000000 -0700
+++ multipath-tools-0.4.4-pre18/libmultipath/config.h 2005-04-20
16:20:27.623189832 -0700
@@ -66,6 +66,8 @@
struct config * conf;
+extern int push_callout(char * callout);
+
struct hwentry * find_hwe (vector hwtable, char * vendor, char *
product);
struct mpentry * find_mpe (char * wwid);
char * get_mpe_wwid (char * alias);
diff -urN multipath-tools-0.4.4-pre17/libmultipath/dict.h
multipath-tools-0.4.4-pre18/libmultipath/dict.h
--- multipath-tools-0.4.4-pre17/libmultipath/dict.h 2005-03-29
04:19:43.000000000 -0800
+++ multipath-tools-0.4.4-pre18/libmultipath/dict.h 2005-04-20
16:20:40.726197872 -0700
@@ -6,6 +6,5 @@
#endif
vector init_keywords(void);
-void push_callout(char * callout);
#endif /* _DICT_H */
diff -urN multipath-tools-0.4.4-pre17/libmultipath/dict.c
multipath-tools-0.4.4-pre18/libmultipath/dict.c
--- multipath-tools-0.4.4-pre17/libmultipath/dict.c 2005-04-18
09:08:03.000000000 -0700
+++ multipath-tools-0.4.4-pre18/libmultipath/dict.c 2005-04-20
16:28:21.002225280 -0700
@@ -11,56 +11,6 @@
#include "../libcheckers/checkers.h"
/*
- * helper function to draw a list of callout binaries found in the
config file
- */
-extern int
-push_callout(char * callout)
-{
- int i;
- char * bin;
- char * p;
-
- /*
- * purge command line arguments
- */
- p = callout;
-
- while (*p != ' ' && *p != '\0')
- p++;
-
- if (!conf->binvec)
- conf->binvec = vector_alloc();
-
-
- if (!conf->binvec)
- return 1;
-
- /*
- * if this callout is already stored in binvec, don't store it
twice
- */
- vector_foreach_slot (conf->binvec, bin, i)
- if (memcmp(bin, callout, p - callout) == 0)
- return 0;
-
- /*
- * else, store it
- */
- bin = MALLOC((p - callout) + 1);
-
- if (!bin)
- return 1;
-
- strncpy(bin, callout, p - callout);
-
- if (!vector_alloc_slot(conf->binvec))
- return 1;
-
- vector_set_slot(conf->binvec, bin);
-
- return 0;
-}
-
-/*
* default block handlers
*/
static int
--
christophe varoqui <christophe.varoqui at free.fr>
More information about the dm-devel
mailing list