summaryrefslogtreecommitdiff
path: root/multipathd
diff options
context:
space:
mode:
authorBenjamin Marzinski <bmarzins@redhat.com>2010-03-25 00:44:17 -0500
committerChristophe Varoqui <christophe.varoqui@opensvc.com>2010-03-25 20:18:23 +0100
commite276a4eb7aff698a9a070b582d3b56d41c35c89e (patch)
tree68f36b9216d0ecc726ec245371c2bccee0f5320f /multipathd
parent6ec48625e68f66e993178348a4a1e7916ac1222d (diff)
downloadmultipath-tools-e276a4eb7aff698a9a070b582d3b56d41c35c89e.tar.gz
multipath-tools-e276a4eb7aff698a9a070b582d3b56d41c35c89e.tar.bz2
multipath-tools-e276a4eb7aff698a9a070b582d3b56d41c35c89e.zip
multipath: patch checker consolidation
This patch does two things. First, it allows the tur checker to retry when it fails with DID_TRANSPORT_DISRUPTED. Second, it makes both calls to check a path use get_state, do avoid duplicated code. Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Diffstat (limited to 'multipathd')
-rw-r--r--multipathd/main.c20
1 files changed, 2 insertions, 18 deletions
diff --git a/multipathd/main.c b/multipathd/main.c
index 8754144..5bf20bb 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -934,25 +934,9 @@ check_path (struct vectors * vecs, struct path * pp)
*/
pp->tick = conf->checkint;
- if (!checker_selected(&pp->checker)) {
- pathinfo(pp, conf->hwtable, DI_SYSFS);
- select_checker(pp);
- }
- if (!checker_selected(&pp->checker)) {
- condlog(0, "%s: checker is not set", pp->dev);
- return;
- }
- /*
- * Set checker in async mode.
- * Honored only by checker implementing the said mode.
- */
- checker_set_async(&pp->checker);
-
- newstate = path_offline(pp);
- if (newstate == PATH_UP)
- newstate = checker_check(&pp->checker);
+ newstate = get_state(pp, 1);
- if (newstate < 0) {
+ if (newstate == PATH_WILD || newstate == PATH_UNCHECKED) {
condlog(2, "%s: unusable path", pp->dev);
pathinfo(pp, conf->hwtable, 0);
return;