diff mbox

[04/11] multipath: do not print 'path is up' for removed paths

Message ID 1386936854-8399-5-git-send-email-hare@suse.de (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show

Commit Message

Hannes Reinecke Dec. 13, 2013, 12:14 p.m. UTC
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 <hare@suse.de>
---
 multipathd/main.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
diff mbox

Patch

diff --git a/multipathd/main.c b/multipathd/main.c
index 91d7bfc..2633da9 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -1124,6 +1124,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);
@@ -1150,7 +1152,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
@@ -1232,7 +1236,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