]> sourceware.org Git - lvm2.git/commitdiff
Use -d to control level of messages sent to syslog by dmeventd.
authorAlasdair Kergon <agk@redhat.com>
Fri, 14 May 2010 14:56:39 +0000 (14:56 +0000)
committerAlasdair Kergon <agk@redhat.com>
Fri, 14 May 2010 14:56:39 +0000 (14:56 +0000)
Change -d to -f to run dmeventd in foreground.
(mornfall)

WHATS_NEW_DM
daemons/dmeventd/dmeventd.c
daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c
daemons/dmeventd/plugins/mirror/dmeventd_mirror.c
test/test-utils.sh

index c40b8b73d2634eed253d4ca6262dcd9209786594..b4a56d40e15ecf64f8c0d07d77c05e5c089da8f0 100644 (file)
@@ -1,5 +1,7 @@
 Version 1.02.48 -
 =================================
+  Use -d to control level of messages sent to syslog by dmeventd.
+  Change -d to -f to run dmeventd in foreground.
   Do not print encryption key in message debug output (cryptsetup luksResume).
 
 Version 1.02.47 - 30th April 2010
index 6d1fcd0ddc5b6ac41b5f32e410486fc1b735d311..23cc4689d5bb6e87a49ec2ba363277ad9b069ffb 100644 (file)
@@ -54,7 +54,6 @@
 
 static volatile sig_atomic_t _exit_now = 0;    /* set to '1' when signal is given to exit */
 static volatile sig_atomic_t _thread_registries_empty = 1;     /* registries are empty initially */
-static int _debug = 0;
 
 /* List (un)link macros. */
 #define        LINK(x, head)           dm_list_add(head, &(x)->list)
@@ -98,6 +97,9 @@ static pthread_mutex_t _global_mutex;
 
 #define DEBUGLOG(fmt, args...) _debuglog(fmt, ## args)
 
+int dmeventd_debug = 0;
+static int _foreground = 0;
+
 /* Data kept about a DSO. */
 struct dso_data {
        struct dm_list list;
@@ -204,7 +206,7 @@ static void _debuglog(const char *fmt, ...)
         time_t P;
         va_list ap;
  
-        if (!_debug)
+        if (!_foreground)
                 return;
  
         va_start(ap,fmt);
@@ -1662,11 +1664,12 @@ static void _daemonize(void)
 static void usage(char *prog, FILE *file)
 {
        fprintf(file, "Usage:\n");
-       fprintf(file, "%s [Vhd]\n", prog);
+       fprintf(file, "%s [-V] [-h] [-d] [-d] [-d] [-f]\n", prog);
        fprintf(file, "\n");
        fprintf(file, "   -V       Show version of dmeventd\n");
        fprintf(file, "   -h       Show this help information\n");
-       fprintf(file, "   -d       Don't fork, run in the foreground\n");
+       fprintf(file, "   -d       Log debug messages to syslog (-d, -dd, -ddd)\n");
+       fprintf(file, "   -f       Don't fork, run in the foreground\n");
        fprintf(file, "\n");
 }
 
@@ -1680,7 +1683,7 @@ int main(int argc, char *argv[])
        opterr = 0;
        optind = 0;
 
-       while ((opt = getopt(argc, argv, "?hVd")) != EOF) {
+       while ((opt = getopt(argc, argv, "?fhVd")) != EOF) {
                switch (opt) {
                case 'h':
                        usage(argv[0], stdout);
@@ -1688,8 +1691,11 @@ int main(int argc, char *argv[])
                case '?':
                        usage(argv[0], stderr);
                        exit(0);
+               case 'f':
+                       _foreground++;
+                       break;
                case 'd':
-                       _debug++;
+                       dmeventd_debug++;
                        break;
                case 'V':
                        printf("dmeventd version: %s\n", DM_LIB_VERSION);
@@ -1706,7 +1712,7 @@ int main(int argc, char *argv[])
        if (setenv("LANG", "C", 1))
                perror("Cannot set LANG to C");
 
-       if (!_debug)
+       if (!_foreground)
                _daemonize();
 
        openlog("dmeventd", LOG_PID, LOG_DAEMON);
@@ -1738,7 +1744,7 @@ int main(int argc, char *argv[])
                exit(EXIT_FIFO_FAILURE);
 
        /* Signal parent, letting them know we are ready to go. */
-       if (!_debug)
+       if (!_foreground)
                kill(getppid(), SIGTERM);
        syslog(LOG_NOTICE, "dmeventd ready for processing.");
 
index bff60b48a5d36a363218044e6115efbcb3659867..bc72d5396c0ab4b8f22ba0ee69dc88a105816484 100644 (file)
@@ -13,6 +13,7 @@
  */
 
 #include "lib.h"
+#include "log.h"
 
 #include "lvm2cmd.h"
 #include "errors.h"
@@ -22,6 +23,8 @@
 #include <pthread.h>
 #include <syslog.h>
 
+extern int dmeventd_debug;
+
 /*
  * register_device() is called first and performs initialisation.
  * Only one device may be registered or unregistered at a time.
@@ -40,19 +43,41 @@ static void *_lvm_handle = NULL;
  */
 static pthread_mutex_t _event_mutex = PTHREAD_MUTEX_INITIALIZER;
 
-/* FIXME Remove this: Pass messages back to dmeventd core for processing. */
+/*
+ * FIXME Do not pass things directly to syslog, rather use the existing logging
+ * facilities to sort logging ... however that mechanism needs to be somehow
+ * configurable and we don't have that option yet
+ */
 static void _temporary_log_fn(int level,
                              const char *file __attribute((unused)),
                              int line __attribute((unused)),
                              int dm_errno __attribute((unused)),
-                             const char *format)
+                             const char *message)
 {
-       level &= ~_LOG_STDERR;
-
-       if (!strncmp(format, "WARNING: ", 9) && (level < 5))
-               syslog(LOG_CRIT, "%s", format);
-       else
-               syslog(LOG_DEBUG, "%s", format);
+       level &= ~(_LOG_STDERR | _LOG_ONCE);
+
+       switch (level) {
+       case _LOG_DEBUG:
+               if (dmeventd_debug >= 3)
+                       syslog(LOG_DEBUG, "%s", message);
+               break;
+       case _LOG_INFO:
+               if (dmeventd_debug >= 2)
+                       syslog(LOG_INFO, "%s", message);
+               break;
+       case _LOG_NOTICE:
+               if (dmeventd_debug >= 1)
+                       syslog(LOG_NOTICE, "%s", message);
+               break;
+       case _LOG_WARN:
+               syslog(LOG_WARNING, "%s", message);
+               break;
+       case _LOG_ERR:
+               syslog(LOG_ERR, "%s", message);
+               break;
+       default:
+               syslog(LOG_CRIT, "%s", message);
+       }
 }
 
 void dmeventd_lvm2_lock(void)
index 788f9f5a8dae0afd828e515a65d2dfdbeac4c34a..0e24dca03d6b13ee5b59d6633ded6d50c3b8496a 100644 (file)
@@ -160,7 +160,8 @@ static int _remove_failed_devices(const char *device)
 
        r = dmeventd_lvm2_run(cmd_str);
 
-       syslog(LOG_INFO, "Repair of mirrored LV %s/%s %s.", vg, lv, (r == ECMD_PROCESSED) ? "finished successfully" : "failed");
+       syslog(LOG_INFO, "Repair of mirrored LV %s/%s %s.", vg, lv,
+              (r == ECMD_PROCESSED) ? "finished successfully" : "failed");
 
        return (r == ECMD_PROCESSED) ? 0 : -1;
 }
index 497d2340d528dedde1c3232cf3413459ecb0686e..fd804b15ad0ff53db018dc92423e3fba69e0d134 100644 (file)
@@ -87,9 +87,8 @@ prepare_dmeventd() {
 
        trap_teardown
 
-       dmeventd -d &
+       dmeventd -f &
        LOCAL_DMEVENTD="$!"
-       strace -p $LOCAL_DMEVENTD &
 }
 
 prepare_testroot() {
This page took 0.048004 seconds and 5 git commands to generate.