1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-22 17:35:59 +03:00

Use -d to control level of messages sent to syslog by dmeventd.

Change -d to -f to run dmeventd in foreground.
(mornfall)
This commit is contained in:
Alasdair Kergon 2010-05-14 14:56:39 +00:00
parent e2d136477b
commit bdadde2f7a
5 changed files with 51 additions and 18 deletions

View File

@ -1,5 +1,7 @@
Version 1.02.48 - 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). Do not print encryption key in message debug output (cryptsetup luksResume).
Version 1.02.47 - 30th April 2010 Version 1.02.47 - 30th April 2010

View 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 _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 volatile sig_atomic_t _thread_registries_empty = 1; /* registries are empty initially */
static int _debug = 0;
/* List (un)link macros. */ /* List (un)link macros. */
#define LINK(x, head) dm_list_add(head, &(x)->list) #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) #define DEBUGLOG(fmt, args...) _debuglog(fmt, ## args)
int dmeventd_debug = 0;
static int _foreground = 0;
/* Data kept about a DSO. */ /* Data kept about a DSO. */
struct dso_data { struct dso_data {
struct dm_list list; struct dm_list list;
@ -204,7 +206,7 @@ static void _debuglog(const char *fmt, ...)
time_t P; time_t P;
va_list ap; va_list ap;
if (!_debug) if (!_foreground)
return; return;
va_start(ap,fmt); va_start(ap,fmt);
@ -1662,11 +1664,12 @@ static void _daemonize(void)
static void usage(char *prog, FILE *file) static void usage(char *prog, FILE *file)
{ {
fprintf(file, "Usage:\n"); 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, "\n");
fprintf(file, " -V Show version of dmeventd\n"); fprintf(file, " -V Show version of dmeventd\n");
fprintf(file, " -h Show this help information\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"); fprintf(file, "\n");
} }
@ -1680,7 +1683,7 @@ int main(int argc, char *argv[])
opterr = 0; opterr = 0;
optind = 0; optind = 0;
while ((opt = getopt(argc, argv, "?hVd")) != EOF) { while ((opt = getopt(argc, argv, "?fhVd")) != EOF) {
switch (opt) { switch (opt) {
case 'h': case 'h':
usage(argv[0], stdout); usage(argv[0], stdout);
@ -1688,8 +1691,11 @@ int main(int argc, char *argv[])
case '?': case '?':
usage(argv[0], stderr); usage(argv[0], stderr);
exit(0); exit(0);
case 'f':
_foreground++;
break;
case 'd': case 'd':
_debug++; dmeventd_debug++;
break; break;
case 'V': case 'V':
printf("dmeventd version: %s\n", DM_LIB_VERSION); printf("dmeventd version: %s\n", DM_LIB_VERSION);
@ -1706,7 +1712,7 @@ int main(int argc, char *argv[])
if (setenv("LANG", "C", 1)) if (setenv("LANG", "C", 1))
perror("Cannot set LANG to C"); perror("Cannot set LANG to C");
if (!_debug) if (!_foreground)
_daemonize(); _daemonize();
openlog("dmeventd", LOG_PID, LOG_DAEMON); openlog("dmeventd", LOG_PID, LOG_DAEMON);
@ -1738,7 +1744,7 @@ int main(int argc, char *argv[])
exit(EXIT_FIFO_FAILURE); exit(EXIT_FIFO_FAILURE);
/* Signal parent, letting them know we are ready to go. */ /* Signal parent, letting them know we are ready to go. */
if (!_debug) if (!_foreground)
kill(getppid(), SIGTERM); kill(getppid(), SIGTERM);
syslog(LOG_NOTICE, "dmeventd ready for processing."); syslog(LOG_NOTICE, "dmeventd ready for processing.");

View File

@ -13,6 +13,7 @@
*/ */
#include "lib.h" #include "lib.h"
#include "log.h"
#include "lvm2cmd.h" #include "lvm2cmd.h"
#include "errors.h" #include "errors.h"
@ -22,6 +23,8 @@
#include <pthread.h> #include <pthread.h>
#include <syslog.h> #include <syslog.h>
extern int dmeventd_debug;
/* /*
* register_device() is called first and performs initialisation. * register_device() is called first and performs initialisation.
* Only one device may be registered or unregistered at a time. * 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; 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, static void _temporary_log_fn(int level,
const char *file __attribute((unused)), const char *file __attribute((unused)),
int line __attribute((unused)), int line __attribute((unused)),
int dm_errno __attribute((unused)), int dm_errno __attribute((unused)),
const char *format) const char *message)
{ {
level &= ~_LOG_STDERR; level &= ~(_LOG_STDERR | _LOG_ONCE);
if (!strncmp(format, "WARNING: ", 9) && (level < 5)) switch (level) {
syslog(LOG_CRIT, "%s", format); case _LOG_DEBUG:
else if (dmeventd_debug >= 3)
syslog(LOG_DEBUG, "%s", format); 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) void dmeventd_lvm2_lock(void)

View File

@ -160,7 +160,8 @@ static int _remove_failed_devices(const char *device)
r = dmeventd_lvm2_run(cmd_str); 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; return (r == ECMD_PROCESSED) ? 0 : -1;
} }

View File

@ -87,9 +87,8 @@ prepare_dmeventd() {
trap_teardown trap_teardown
dmeventd -d & dmeventd -f &
LOCAL_DMEVENTD="$!" LOCAL_DMEVENTD="$!"
strace -p $LOCAL_DMEVENTD &
} }
prepare_testroot() { prepare_testroot() {