From 0495af99340cbbdaf6a339d5c3fb39e3e287790a Mon Sep 17 00:00:00 2001 From: thantry Date: Fri, 30 May 2003 16:51:00 +0000 Subject: [PATCH] Bug1275 - enhance debug_daemon to dump out previouse log, as debug_daemon, on starts up --- lnet/libcfs/debug.c | 14 +++++++++++--- lustre/portals/libcfs/debug.c | 14 +++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/lnet/libcfs/debug.c b/lnet/libcfs/debug.c index 6233b8d..e2470ec 100644 --- a/lnet/libcfs/debug.c +++ b/lnet/libcfs/debug.c @@ -274,7 +274,7 @@ int portals_debug_daemon(void *arg) void *journal_info; mm_segment_t oldfs; unsigned long force_flush = 0; - unsigned long size; + unsigned long size, off, flags; int rc; kportal_daemonize("ldebug_daemon"); @@ -295,7 +295,17 @@ int portals_debug_daemon(void *arg) debug_daemon_state.overlapped = 0; debug_daemon_state.stopped = 0; + + spin_lock_irqsave(&portals_debug_lock, flags); + off = atomic_read(&debug_off_a) + 1; + if (debug_wrapped) + off = (off >= debug_size)? 0 : off; + else + off = 0; + atomic_set(&debug_daemon_next_write, off); atomic_set(&debug_daemon_state.paused, 0); + spin_unlock_irqrestore(&portals_debug_lock, flags); + oldfs = get_fs(); set_fs(KERNEL_DS); while (1) { @@ -431,8 +441,6 @@ int portals_debug_daemon_start(char *file, unsigned int size) init_waitqueue_head(&debug_daemon_state.lctl); init_waitqueue_head(&debug_daemon_state.daemon); - atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a)); - daemon_file_size_limit = size << 20; debug_daemon_state.lctl_event = 0; diff --git a/lustre/portals/libcfs/debug.c b/lustre/portals/libcfs/debug.c index 6233b8d..e2470ec 100644 --- a/lustre/portals/libcfs/debug.c +++ b/lustre/portals/libcfs/debug.c @@ -274,7 +274,7 @@ int portals_debug_daemon(void *arg) void *journal_info; mm_segment_t oldfs; unsigned long force_flush = 0; - unsigned long size; + unsigned long size, off, flags; int rc; kportal_daemonize("ldebug_daemon"); @@ -295,7 +295,17 @@ int portals_debug_daemon(void *arg) debug_daemon_state.overlapped = 0; debug_daemon_state.stopped = 0; + + spin_lock_irqsave(&portals_debug_lock, flags); + off = atomic_read(&debug_off_a) + 1; + if (debug_wrapped) + off = (off >= debug_size)? 0 : off; + else + off = 0; + atomic_set(&debug_daemon_next_write, off); atomic_set(&debug_daemon_state.paused, 0); + spin_unlock_irqrestore(&portals_debug_lock, flags); + oldfs = get_fs(); set_fs(KERNEL_DS); while (1) { @@ -431,8 +441,6 @@ int portals_debug_daemon_start(char *file, unsigned int size) init_waitqueue_head(&debug_daemon_state.lctl); init_waitqueue_head(&debug_daemon_state.daemon); - atomic_set(&debug_daemon_next_write, atomic_read(&debug_off_a)); - daemon_file_size_limit = size << 20; debug_daemon_state.lctl_event = 0; -- 1.8.3.1