From: Alasdair Kergon Date: Thu, 16 Jul 2009 00:52:06 +0000 (+0000) Subject: Add log_errno to set a specific errno and replace log_error in due course. X-Git-Tag: old-v2_02_50~117 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=5e3369aba3c34e6839dc25f796dd0217b8e3f741;p=lvm2.git Add log_errno to set a specific errno and replace log_error in due course. --- diff --git a/WHATS_NEW b/WHATS_NEW index 9caa56f1e..e3299bf0a 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.50 - ================================ + Add log_errno to set a specific errno and replace log_error in due course. Add lvm_errno and lvm_errmsg to liblvm to obtain failure information. Change create_toolcontext to still return an object if it fails part-way. Add EUNCLASSIFIED (-1) as the default LVM errno code. diff --git a/lib/log/log.h b/lib/log/log.h index 110f1b0e9..563608803 100644 --- a/lib/log/log.h +++ b/lib/log/log.h @@ -16,6 +16,8 @@ #ifndef _LVM_LOG_H #define _LVM_LOG_H +#include + /* * printf()-style macros to use for messages: * @@ -62,6 +64,7 @@ #define log_verbose(args...) log_notice(args) #define log_print(args...) LOG_LINE(_LOG_WARN, args) #define log_error(args...) log_err(args) +#define log_errno(args...) LOG_LINE_WITH_ERRNO(_LOG_ERR, args) /* System call equivalents */ #define log_sys_error(x, y) \ diff --git a/lib/log/lvm-logging.h b/lib/log/lvm-logging.h index ef140d22d..035e32a07 100644 --- a/lib/log/lvm-logging.h +++ b/lib/log/lvm-logging.h @@ -16,12 +16,17 @@ #ifndef _LVM_LOGGING_H #define _LVM_LOGGING_H +#define EUNCLASSIFIED -1 /* Generic error code */ + void print_log(int level, const char *file, int line, int dm_errno, const char *format, ...) __attribute__ ((format(printf, 5, 6))); -#define EUNCLASSIFIED -1 /* Generic error code */ -#define LOG_LINE(l, x...) print_log(l, __FILE__, __LINE__ , EUNCLASSIFIED, ## x) +#define LOG_LINE(l, x...) \ + print_log(l, __FILE__, __LINE__ , EUNCLASSIFIED, ## x) + +#define LOG_LINE_WITH_ERRNO(l, e, x...) \ + print_log(l, __FILE__, __LINE__ , e, ## x) #include "log.h" diff --git a/libdm/misc/dm-logging.h b/libdm/misc/dm-logging.h index ee3ed34ef..13ab80473 100644 --- a/libdm/misc/dm-logging.h +++ b/libdm/misc/dm-logging.h @@ -21,15 +21,16 @@ extern dm_log_fn dm_log; extern dm_log_with_errno_fn dm_log_with_errno; -#define LOG_MESG(l, f, ln, x...) \ +#define LOG_MESG(l, f, ln, e, x...) \ do { \ if (dm_log_is_non_default()) \ dm_log(l, f, ln, ## x); \ else \ - dm_log_with_errno(l, f, ln, 0, ## x); \ + dm_log_with_errno(l, f, ln, e, ## x); \ } while (0) -#define LOG_LINE(l, x...) LOG_MESG(l, __FILE__, __LINE__, ## x) +#define LOG_LINE(l, x...) LOG_MESG(l, __FILE__, __LINE__, 0, ## x) +#define LOG_LINE_WITH_ERRNO(l, e, x...) LOG_MESG(l, __FILE__, __LINE__, e, ## x) #include "log.h" diff --git a/libdm/mm/dbg_malloc.c b/libdm/mm/dbg_malloc.c index ea9720889..36fd74daa 100644 --- a/libdm/mm/dbg_malloc.c +++ b/libdm/mm/dbg_malloc.c @@ -205,7 +205,7 @@ int dm_dump_memory_debug(void) } str[sizeof(str) - 1] = '\0'; - LOG_MESG(_LOG_INFO, mb->file, mb->line, + LOG_MESG(_LOG_INFO, mb->file, mb->line, 0, "block %d at %p, size %" PRIsize_t "\t [%s]", mb->id, mb->magic, mb->length, str); tot += mb->length;