int select_checker(struct config *conf, struct path *pp) { char *origin, *checker_name; struct checker * c = &pp->checker; do_set(checker_name, conf->overrides, checker_name, "(setting: multipath.conf overrides section)"); do_set(checker_name, pp->hwe, checker_name, "(setting: array configuration)"); do_set(checker_name, conf, checker_name, "(setting: multipath.conf defaults/devices section)"); do_default(checker_name, DEFAULT_CHECKER); out: checker_get(conf->multipath_dir, c, checker_name); condlog(3, "%s: path_checker = %s %s", pp->dev, c->name, origin); if (conf->checker_timeout) { c->timeout = conf->checker_timeout; condlog(3, "%s: checker timeout = %u s (setting: multipath.conf defaults/devices section)", pp->dev, c->timeout); } else if (sysfs_get_timeout(pp, &c->timeout) > 0) condlog(3, "%s: checker timeout = %u ms (setting: kernel sysfs)", pp->dev, c->timeout); else { c->timeout = DEF_TIMEOUT; condlog(3, "%s: checker timeout = %u ms (setting: multipath internal)", pp->dev, c->timeout); } return 0; }
extern int select_checker(struct path *pp) { struct checker * c = &pp->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)); goto out; } if (conf->checker_name) { checker_get(c, conf->checker_name); condlog(3, "%s: path checker = %s (config file default)", pp->dev, checker_name(c)); goto out; } checker_get(c, DEFAULT_CHECKER); condlog(3, "%s: path checker = %s (internal default)", pp->dev, checker_name(c)); out: if (conf->checker_timeout) { c->timeout = conf->checker_timeout * 1000; condlog(3, "%s: checker timeout = %u ms (config file default)", pp->dev, c->timeout); } else if (pp->udev && sysfs_get_timeout(pp, &c->timeout) == 0) condlog(3, "%s: checker timeout = %u ms (sysfs setting)", pp->dev, c->timeout); else { c->timeout = DEF_TIMEOUT; condlog(3, "%s: checker timeout = %u ms (internal default)", pp->dev, c->timeout); } return 0; }