124 lines
3.6 KiB
Plaintext
124 lines
3.6 KiB
Plaintext
From d9cc62aa19e92df154f016c167265fd74a848063 Mon Sep 17 00:00:00 2001
|
|
From: Hannes Reinecke <hare@suse.de>
|
|
Date: Tue, 29 Apr 2008 14:02:49 +0200
|
|
Subject: [PATCH] Don't print failure messages for callouts by default
|
|
|
|
Calling 'multipath -ll' on devices with paths results in
|
|
lots of error messages; they really should be suppressed
|
|
for the normal output. The user can always have them printed
|
|
out by increasing verbosity.
|
|
|
|
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
|
---
|
|
libmultipath/callout.c | 14 ++++++++++++--
|
|
libmultipath/discovery.c | 8 ++++----
|
|
libmultipath/prioritizers/alua.c | 6 +++++-
|
|
3 files changed, 21 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/libmultipath/callout.c b/libmultipath/callout.c
|
|
index d54f3ca..4dd33c5 100644
|
|
--- a/libmultipath/callout.c
|
|
+++ b/libmultipath/callout.c
|
|
@@ -10,6 +10,7 @@
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include <stdlib.h>
|
|
+#include <fcntl.h>
|
|
#include <sys/wait.h>
|
|
#include <errno.h>
|
|
|
|
@@ -32,7 +33,7 @@ int execute_program(char *path, char *value, int len)
|
|
int retval;
|
|
int count;
|
|
int status;
|
|
- int fds[2];
|
|
+ int fds[2], null_fd;
|
|
pid_t pid;
|
|
char *pos;
|
|
char arg[PROGRAM_SIZE];
|
|
@@ -75,7 +76,16 @@ int execute_program(char *path, char *value, int len)
|
|
close(STDOUT_FILENO);
|
|
|
|
/* dup write side of pipe to STDOUT */
|
|
- dup(fds[1]);
|
|
+ if (dup(fds[1]) < 0)
|
|
+ return -1;
|
|
+
|
|
+ /* Ignore writes to stderr */
|
|
+ null_fd = open("/dev/null", O_WRONLY);
|
|
+ if (null_fd > 0) {
|
|
+ close(STDERR_FILENO);
|
|
+ dup(null_fd);
|
|
+ close(null_fd);
|
|
+ }
|
|
|
|
retval = execv(argv[0], argv);
|
|
|
|
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
|
|
index 83e1865..8cfb53f 100644
|
|
--- a/libmultipath/discovery.c
|
|
+++ b/libmultipath/discovery.c
|
|
@@ -623,8 +623,8 @@ get_state (struct path * pp)
|
|
}
|
|
pp->state = checker_check(c);
|
|
condlog(3, "%s: state = %i", pp->dev, pp->state);
|
|
- if (pp->state == PATH_DOWN)
|
|
- condlog(2, "%s: checker msg is \"%s\"",
|
|
+ if (pp->state == PATH_DOWN && strlen(checker_message(c)))
|
|
+ condlog(3, "%s: checker msg is \"%s\"",
|
|
pp->dev, checker_message(c));
|
|
return 0;
|
|
}
|
|
@@ -642,7 +642,7 @@ get_prio (struct path * pp)
|
|
}
|
|
pp->priority = prio_getprio(pp->prio, pp);
|
|
if (pp->priority < 0) {
|
|
- condlog(0, "%s: %s prio error", pp->dev, prio_name(pp->prio));
|
|
+ condlog(3, "%s: %s prio error", pp->dev, prio_name(pp->prio));
|
|
pp->priority = PRIO_UNDEF;
|
|
return 1;
|
|
}
|
|
@@ -663,7 +663,7 @@ get_uid (struct path * pp)
|
|
condlog(0, "error formatting uid callout command");
|
|
memset(pp->wwid, 0, WWID_SIZE);
|
|
} else if (execute_program(buff, pp->wwid, WWID_SIZE)) {
|
|
- condlog(0, "error calling out %s", buff);
|
|
+ condlog(3, "error calling out %s", buff);
|
|
memset(pp->wwid, 0, WWID_SIZE);
|
|
return 1;
|
|
}
|
|
diff --git a/libmultipath/prioritizers/alua.c b/libmultipath/prioritizers/alua.c
|
|
index 67e4adb..1b52b8e 100644
|
|
--- a/libmultipath/prioritizers/alua.c
|
|
+++ b/libmultipath/prioritizers/alua.c
|
|
@@ -22,6 +22,7 @@
|
|
#define ALUA_PRIO_NOT_SUPPORTED 1
|
|
#define ALUA_PRIO_RTPG_FAILED 2
|
|
#define ALUA_PRIO_GETAAS_FAILED 3
|
|
+#define ALUA_PRIO_TPGS_FAILED 4
|
|
|
|
int
|
|
get_alua_info(int fd)
|
|
@@ -38,7 +39,7 @@ get_alua_info(int fd)
|
|
|
|
rc = get_target_port_group_support(fd);
|
|
if (rc < 0)
|
|
- return rc;
|
|
+ return -ALUA_PRIO_TPGS_FAILED;
|
|
|
|
if (rc == TPGS_NONE)
|
|
return -ALUA_PRIO_NOT_SUPPORTED;
|
|
@@ -85,6 +86,9 @@ int getprio (struct path * pp)
|
|
case ALUA_PRIO_GETAAS_FAILED:
|
|
condlog(0, "%s: couln't get asymmetric access state", pp->dev);
|
|
break;
|
|
+ case ALUA_PRIO_TPGS_FAILED:
|
|
+ condlog(3, "%s: couln't get supported alua states", pp->dev);
|
|
+ break;
|
|
}
|
|
}
|
|
return rc;
|
|
--
|
|
1.5.2.4
|
|
|