Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=commit... Commit: 0cbcb84795f63a5094d1119cadb47a942158c11d Parent: de6f04cc3900857111f14c25a548e745322acb24 Author: Ryan O'Hara rohara@redhat.com AuthorDate: Fri Jul 29 11:39:47 2011 -0500 Committer: Ryan O'Hara rohara@redhat.com CommitterDate: Mon Aug 1 05:38:31 2011 -0500
fence_kdump: Fix logging
Change the log_debug and log_error macros. For fence_kdump, also write to syslog.
Resolves: rhbz#461948
Signed-off-by: Ryan O'Hara rohara@redhat.com Reviewed-by: Fabio M. Di Nitto fdinitto@redhat.com --- fence/agents/kdump/fence_kdump.c | 74 ++++++++++++++++++-------------- fence/agents/kdump/fence_kdump_send.c | 44 ++++++++++--------- 2 files changed, 65 insertions(+), 53 deletions(-)
diff --git a/fence/agents/kdump/fence_kdump.c b/fence/agents/kdump/fence_kdump.c index adfffa4..8fdb681 100644 --- a/fence/agents/kdump/fence_kdump.c +++ b/fence/agents/kdump/fence_kdump.c @@ -39,16 +39,20 @@
static int verbose = 0;
-#define log_debug(lvl, fmt, args...) \ -do { \ - if (lvl <= verbose) \ - fprintf (stdout, fmt, ##args); \ +#define log_debug(lvl, fmt, args...) \ +do { \ + if (lvl <= verbose) { \ + fprintf (stdout, "[debug]: " fmt, ##args); \ + syslog (LOG_INFO, fmt, ##args); \ + } \ } while (0);
-#define log_error(lvl, fmt, args...) \ -do { \ - if (lvl <= verbose) \ - fprintf (stderr, fmt, ##args); \ +#define log_error(lvl, fmt, args...) \ +do { \ + if (lvl <= verbose) { \ + fprintf (stderr, "[error]: " fmt, ##args); \ + syslog (LOG_ERR, fmt, ##args); \ + } \ } while (0);
static int @@ -87,7 +91,7 @@ read_message (const fence_kdump_node_t *node, void *msg, int len)
error = recvfrom (node->socket, msg, len, 0, (struct sockaddr *) &ss, &size); if (error < 0) { - log_error (1, "[error]: recvfrom (%s)\n", strerror (errno)); + log_error (2, "recvfrom (%s)\n", strerror (errno)); goto out; }
@@ -96,13 +100,13 @@ read_message (const fence_kdump_node_t *node, void *msg, int len) port, sizeof (port), NI_NUMERICHOST | NI_NUMERICSERV); if (error != 0) { - log_error (1, "[error]: getnameinfo (%s)\n", gai_strerror (error)); + log_error (2, "getnameinfo (%s)\n", gai_strerror (error)); goto out; }
error = strcasecmp (node->addr, addr); if (error != 0) { - log_debug (1, "[debug]: discard message from '%s'\n", addr); + log_debug (1, "discard message from '%s'\n", addr); }
out: @@ -130,16 +134,16 @@ do_action_off (const fence_kdump_opts_t *opts) FD_ZERO (&rfds); FD_SET (node->socket, &rfds);
- log_debug (1, "[debug]: waiting for message from %s\n", node->addr); + log_debug (0, "waiting for message from '%s'\n", node->addr);
for (;;) { error = select (node->socket + 1, &rfds, NULL, NULL, &timeout); if (error < 0) { - log_error (1, "[error]: select (%s)\n", strerror (errno)); + log_error (2, "select (%s)\n", strerror (errno)); break; } if (error == 0) { - log_debug (1, "[debug]: timeout after %d seconds\n", opts->timeout); + log_debug (0, "timeout after %d seconds\n", opts->timeout); break; }
@@ -148,15 +152,16 @@ do_action_off (const fence_kdump_opts_t *opts) }
if (msg.magic != FENCE_KDUMP_MAGIC) { - log_debug (1, "[debug]: invalid magic number '0x%X'\n", msg.magic); + log_debug (1, "invalid magic number '0x%X'\n", msg.magic); continue; }
switch (msg.version) { case FENCE_KDUMP_MSGV1: + log_debug (0, "received valid message from '%s'\n", node->addr); return (0); default: - log_debug (1, "[debug]: invalid message version '0x%X'\n", msg.version); + log_debug (1, "invalid message version '0x%X'\n", msg.version); continue; } } @@ -272,7 +277,7 @@ print_usage (const char *self) return; }
-static void +static int get_options_node (fence_kdump_opts_t *opts) { int error; @@ -281,8 +286,8 @@ get_options_node (fence_kdump_opts_t *opts)
node = malloc (sizeof (fence_kdump_node_t)); if (!node) { - log_error (1, "[error]: malloc (%s)\n", strerror (errno)); - return; + log_error (2, "malloc (%s)\n", strerror (errno)); + return (1); }
memset (node, 0, sizeof (fence_kdump_node_t)); @@ -299,9 +304,9 @@ get_options_node (fence_kdump_opts_t *opts) node->info = NULL; error = getaddrinfo (node->name, node->port, &hints, &node->info); if (error != 0) { - log_error (1, "[error]: getaddrinfo (%s)\n", gai_strerror (error)); + log_error (2, "getaddrinfo (%s)\n", gai_strerror (error)); free_node (node); - return; + return (1); }
error = getnameinfo (node->info->ai_addr, node->info->ai_addrlen, @@ -309,9 +314,9 @@ get_options_node (fence_kdump_opts_t *opts) node->port, sizeof (node->port), NI_NUMERICHOST | NI_NUMERICSERV); if (error != 0) { - log_error (1, "[error]: getnameinfo (%s)\n", gai_strerror (error)); + log_error (2, "getnameinfo (%s)\n", gai_strerror (error)); free_node (node); - return; + return (1); }
hints.ai_family = node->info->ai_family; @@ -322,30 +327,30 @@ get_options_node (fence_kdump_opts_t *opts) node->info = NULL; error = getaddrinfo (NULL, node->port, &hints, &node->info); if (error != 0) { - log_error (1, "[error]: getaddrinfo (%s)\n", gai_strerror (error)); + log_error (2, "getaddrinfo (%s)\n", gai_strerror (error)); free_node (node); - return; + return (1); }
node->socket = socket (node->info->ai_family, node->info->ai_socktype, node->info->ai_protocol); if (node->socket < 0) { - log_error (1, "[error]: socket (%s)\n", strerror (errno)); + log_error (2, "socket (%s)\n", strerror (errno)); free_node (node); - return; + return (1); }
error = bind (node->socket, node->info->ai_addr, node->info->ai_addrlen); if (error != 0) { - log_error (1, "[error]: bind (%s)\n", strerror (errno)); + log_error (2, "bind (%s)\n", strerror (errno)); free_node (node); - return; + return (1); }
list_add_tail (&node->list, &opts->nodes);
- return; + return (0); }
static void @@ -469,12 +474,17 @@ main (int argc, char **argv) get_options_stdin (&opts); }
+ openlog ("fence_kdump", LOG_CONS|LOG_PID, LOG_DAEMON); + if (opts.action == FENCE_KDUMP_ACTION_OFF) { if (opts.nodename == NULL) { - log_error (0, "[error]: action 'off' requires nodename\n"); + log_error (0, "action 'off' requires nodename\n"); + exit (1); + } + if (get_options_node (&opts) != 0) { + log_error (0, "failed to get node '%s'\n", opts.nodename); exit (1); } - get_options_node (&opts); }
if (verbose != 0) { diff --git a/fence/agents/kdump/fence_kdump_send.c b/fence/agents/kdump/fence_kdump_send.c index 7a48bd6..fab3d36 100644 --- a/fence/agents/kdump/fence_kdump_send.c +++ b/fence/agents/kdump/fence_kdump_send.c @@ -39,16 +39,16 @@
static int verbose = 0;
-#define log_debug(lvl, fmt, args...) \ -do { \ - if (lvl <= verbose) \ - fprintf (stdout, fmt, ##args); \ +#define log_debug(lvl, fmt, args...) \ +do { \ + if (lvl <= verbose) \ + fprintf (stdout, "[debug]: " fmt, ##args); \ } while (0);
-#define log_error(lvl, fmt, args...) \ -do { \ - if (lvl <= verbose) \ - fprintf (stderr, fmt, ##args); \ +#define log_error(lvl, fmt, args...) \ +do { \ + if (lvl <= verbose) \ + fprintf (stderr, "[error]: " fmt, ##args); \ } while (0);
static int @@ -58,11 +58,11 @@ send_message (const fence_kdump_node_t *node, void *msg, int len)
error = sendto (node->socket, msg, len, 0, node->info->ai_addr, node->info->ai_addrlen); if (error < 0) { - log_error (1, "[error]: sendto (%s)\n", strerror (errno)); + log_error (2, "sendto (%s)\n", strerror (errno)); goto out; }
- log_debug (1, "[debug]: message sent to node '%s'\n", node->addr); + log_debug (1, "message sent to node '%s'\n", node->addr);
out: return (error); @@ -94,7 +94,7 @@ print_usage (const char *self) return; }
-static void +static int get_options_node (fence_kdump_opts_t *opts) { int error; @@ -103,8 +103,8 @@ get_options_node (fence_kdump_opts_t *opts)
node = malloc (sizeof (fence_kdump_node_t)); if (!node) { - log_error (1, "[error]: malloc (%s)\n", strerror (errno)); - return; + log_error (2, "malloc (%s)\n", strerror (errno)); + return (1); }
memset (node, 0, sizeof (fence_kdump_node_t)); @@ -121,9 +121,9 @@ get_options_node (fence_kdump_opts_t *opts) node->info = NULL; error = getaddrinfo (node->name, node->port, &hints, &node->info); if (error != 0) { - log_error (1, "[error]: getaddrinfo (%s)\n", gai_strerror (error)); + log_error (2, "getaddrinfo (%s)\n", gai_strerror (error)); free_node (node); - return; + return (1); }
error = getnameinfo (node->info->ai_addr, node->info->ai_addrlen, @@ -131,23 +131,23 @@ get_options_node (fence_kdump_opts_t *opts) node->port, sizeof (node->port), NI_NUMERICHOST | NI_NUMERICSERV); if (error != 0) { - log_error (1, "[error]: getnameinfo (%s)\n", gai_strerror (error)); + log_error (2, "getnameinfo (%s)\n", gai_strerror (error)); free_node (node); - return; + return (1); }
node->socket = socket (node->info->ai_family, node->info->ai_socktype, node->info->ai_protocol); if (node->socket < 0) { - log_error (1, "[error]: socket (%s)\n", strerror (errno)); + log_error (2, "socket (%s)\n", strerror (errno)); free_node (node); - return; + return (1); }
list_add_tail (&node->list, &opts->nodes);
- return; + return (0); }
static void @@ -219,7 +219,9 @@ main (int argc, char **argv)
for (; optind < argc; optind++) { opts.nodename = argv[optind]; - get_options_node (&opts); + if (get_options_node (&opts) != 0) { + log_error (1, "failed to get node '%s'\n", opts.nodename); + } opts.nodename = NULL; }
cluster-commits@lists.fedorahosted.org