From 655012434b7c059811a5f26001e47dd418f20a36 Mon Sep 17 00:00:00 2001 From: Mateusz Kusiak Date: Wed, 20 Nov 2024 17:20:32 +0000 Subject: [PATCH] debug: add timestamps for debug messages Timestamps on debug messages help establish what takes long to process. Debug messages are print only if DDEBUG flag is passed. Add timestamps for debug messages. Remove dead code from dprintf dummies for non-debug builds. Remove timestamps from current debug messages. Signed-off-by: Mateusz Kusiak --- mdadm.h | 14 +++++++++++--- monitor.c | 5 +---- super-intel.c | 3 +-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/mdadm.h b/mdadm.h index 5aa50854..b9945a29 100644 --- a/mdadm.h +++ b/mdadm.h @@ -1899,15 +1899,23 @@ static inline sighandler_t signal_s(int sig, sighandler_t handler) } #ifdef DEBUG +#include + #define dprintf(fmt, arg...) \ - fprintf(stderr, "%s: %s: "fmt, Name, __func__, ##arg) + do { \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + double timestamp = ts.tv_sec + ts.tv_nsec / 1e9; \ + fprintf(stderr, "[%10.5f] %s: %s: " fmt, timestamp, Name, __func__, ##arg); \ + } while (0) + #define dprintf_cont(fmt, arg...) \ fprintf(stderr, fmt, ##arg) #else #define dprintf(fmt, arg...) \ - ({ if (0) fprintf(stderr, "%s: %s: " fmt, Name, __func__, ##arg); 0; }) + do { } while (0) #define dprintf_cont(fmt, arg...) \ - ({ if (0) fprintf(stderr, fmt, ##arg); 0; }) + do { } while (0) #endif static inline int xasprintf(char **strp, const char *fmt, ...) { diff --git a/monitor.c b/monitor.c index 81ae8893..3c54f8cb 100644 --- a/monitor.c +++ b/monitor.c @@ -406,7 +406,6 @@ static int read_and_act(struct active_array *a) struct mdinfo *mdi; int ret = 0; int count = 0; - struct timeval tv; bool write_checkpoint = false; a->next_state = bad_word; @@ -453,10 +452,8 @@ static int read_and_act(struct active_array *a) check_for_cleared_bb(a, mdi); } - gettimeofday(&tv, NULL); - dprintf("(%d): %ld.%06ld state:%s prev:%s action:%s prev: %s start:%llu\n", + dprintf("(%d): state:%s prev:%s action:%s prev: %s start:%llu\n", a->info.container_member, - tv.tv_sec, tv.tv_usec, array_states[a->curr_state], array_states[a->prev_state], sync_actions[a->curr_action], diff --git a/super-intel.c b/super-intel.c index 55c71e26..87026f5a 100644 --- a/super-intel.c +++ b/super-intel.c @@ -5092,7 +5092,6 @@ imsm_thunderdome(struct intel_super **super_list, int len) for (i = 0; i < tbl_size; i++) { struct imsm_disk *d; struct intel_disk *idisk; - struct imsm_super *mpb = super_table[i]->anchor; s = super_table[i]; d = &s->disks->disk; @@ -5108,7 +5107,7 @@ imsm_thunderdome(struct intel_super **super_list, int len) if (!s) dprintf("marking family: %#x from %d:%d offline\n", - mpb->family_num, + super_table[i]->anchor->family_num, super_table[i]->disks->major, super_table[i]->disks->minor); super_table[i] = s; -- 2.47.2