if (!strncmp(name, c->name, CHECKER_NAME_LEN))
return c;
}
- c = add_checker(name);
- if (c)
- return c;
- return checker_default();
+ return add_checker(name);
}
struct checker * add_checker (char * name)
return c->message;
}
-struct checker * checker_default (void)
+void checker_get (struct checker * dst, char * name)
{
- return checker_lookup(DEFAULT_CHECKER);
-}
+ struct checker * src = checker_lookup(name);
-void checker_get (struct checker * dst, struct checker * src)
-{
+ if (!src) {
+ dst->check = NULL;
+ return;
+ }
dst->fd = src->fd;
dst->sync = src->sync;
strncpy(dst->name, src->name, CHECKER_NAME_LEN);
void checker_set_fd (struct checker *, int);
void checker_enable (struct checker *);
void checker_disable (struct checker *);
-struct checker * checker_lookup (char *);
int checker_check (struct checker *);
int checker_selected (struct checker *);
char * checker_name (struct checker *);
char * checker_message (struct checker *);
-struct checker * checker_default (void);
-void checker_get (struct checker *, struct checker *);
+void checker_get (struct checker *, char *);
#endif /* _CHECKERS_H */
if (dhwe->selector && !(hwe->selector = set_param_str(dhwe->selector)))
goto out;
+
+ if (dhwe->checker_name && !(hwe->checker_name = set_param_str(dhwe->checker_name)))
+ goto out;
hwe->pgpolicy = dhwe->pgpolicy;
hwe->pgfailback = dhwe->pgfailback;
hwe->rr_weight = dhwe->rr_weight;
hwe->no_path_retry = dhwe->no_path_retry;
hwe->minio = dhwe->minio;
- hwe->checker = dhwe->checker;
hwe->prio = dhwe->prio;
if (dhwe->bl_product && !(hwe->bl_product = set_param_str(dhwe->bl_product)))
if (!conf->prio)
conf->prio = prio_default();
- if (!conf->checker)
- conf->checker = checker_lookup(DEFAULT_CHECKER);
+ if (!conf->checker_name)
+ conf->checker_name = set_default(DEFAULT_CHECKER);
return 0;
out:
int minio;
int pg_timeout;
struct prio * prio;
- struct checker * checker;
char * bl_product;
};
int with_sysfs;
int pgpolicy;
struct prio * prio;
- struct checker * checker;
enum devtypes dev_type;
int minio;
int checkint;
char * features;
char * hwhandler;
char * bindings_file;
+ char * checker_name;
vector keywords;
vector mptable;
static int
def_path_checker_handler(vector strvec)
{
- char * buff;
-
- buff = set_value(strvec);
+ conf->checker_name = set_value(strvec);
- if (!buff)
+ if (!conf->checker_name)
return 1;
- conf->checker = checker_lookup(buff);
- FREE(buff);
-
return 0;
}
static int
hw_path_checker_handler(vector strvec)
{
- char * buff;
struct hwentry * hwe = VECTOR_LAST_SLOT(conf->hwtable);
if (!hwe)
return 1;
- buff = set_value(strvec);
+ hwe->checker_name = set_value(strvec);
- if (!buff)
+ if (!hwe->checker_name)
return 1;
- hwe->checker = checker_lookup(buff);
- FREE(buff);
-
return 0;
}
{
struct hwentry * hwe = (struct hwentry *)data;
- if (!hwe->checker)
- return 0;
- if (!checker_selected(hwe->checker))
+ if (!hwe->checker_name)
return 0;
- if (hwe->checker == conf->checker)
+ if (!strcmp(hwe->checker_name, conf->checker_name))
return 0;
- return snprintf(buff, len, "%s", checker_name(hwe->checker));
+ return snprintf(buff, len, "%s", hwe->checker_name);
}
static int
static int
snprint_def_path_checker (char * buff, int len, void * data)
{
- if (!conf->checker)
+ if (!conf->checker_name)
return 0;
- if (conf->checker == checker_default())
+ if (conf->checker_name == DEFAULT_CHECKER)
return 0;
- return snprintf(buff, len, "%s", checker_name(conf->checker));
+ return snprintf(buff, len, "%s", conf->checker_name);
}
static int
struct hwentry * hwe = default_hw;
while (hwe->vendor) {
- hwe->checker = checker_lookup(hwe->checker_name);
hwe->prio = prio_lookup(hwe->prio_name);
r += store_hwe(hw, hwe);
hwe++;
{
struct checker * c = &pp->checker;
- if (pp->hwe && pp->hwe->checker) {
- checker_get(c, pp->hwe->checker);
+ if (pp->hwe && pp->hwe->checker_name) {
+ checker_get(c, pp->hwe->checker_name);
condlog(3, "%s: path checker = %s (controller setting)",
pp->dev, checker_name(c));
return 0;
}
- if (conf->checker) {
- checker_get(c, conf->checker);
+ if (conf->checker_name) {
+ checker_get(c, conf->checker_name);
condlog(3, "%s: path checker = %s (config file default)",
pp->dev, checker_name(c));
return 0;
}
- checker_get(c, checker_default());
+ checker_get(c, DEFAULT_CHECKER);
condlog(3, "%s: path checker = %s (internal default)",
pp->dev, checker_name(c));
return 0;