From: Hannes Reinecke Date: Fri, 13 Dec 2013 12:12:40 +0000 (+0100) Subject: multipath: do not print 'path is up' for removed paths X-Git-Tag: 0.5.0~14 X-Git-Url: https://git.opensvc.com/gitweb.cgi?p=multipath-tools%2F.git;a=commitdiff_plain;h=2a9f94a6a8674bdfe52dc50ff36859bcb2aae22a;hp=99f04bd59d25d746458fca4ef2b87128daca6a42 multipath: do not print 'path is up' for removed paths When a path is removed the previous checker message is still kept in the checker context, and will be printed upon each check. This causes multipath to print out 'path is up' even though it already has been removed from sysfs. Signed-off-by: Hannes Reinecke --- diff --git a/multipathd/main.c b/multipathd/main.c index 32195119..309b1aab 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1127,6 +1127,8 @@ check_path (struct vectors * vecs, struct path * pp) newstate = path_offline(pp); if (newstate == PATH_UP) newstate = get_state(pp, 1); + else + checker_clear_message(&pp->checker); if (newstate == PATH_WILD || newstate == PATH_UNCHECKED) { condlog(2, "%s: unusable path", pp->dev); @@ -1153,7 +1155,9 @@ check_path (struct vectors * vecs, struct path * pp) if (newstate != pp->state) { int oldstate = pp->state; pp->state = newstate; - LOG_MSG(1, checker_message(&pp->checker)); + + if (strlen(checker_message(&pp->checker))) + LOG_MSG(1, checker_message(&pp->checker)); /* * upon state change, reset the checkint @@ -1235,7 +1239,8 @@ check_path (struct vectors * vecs, struct path * pp) pp->tick = pp->checkint; } } - else if (newstate == PATH_DOWN) { + else if (newstate == PATH_DOWN && + strlen(checker_message(&pp->checker))) { if (conf->log_checker_err == LOG_CHKR_ERR_ONCE) LOG_MSG(3, checker_message(&pp->checker)); else