Whamcloud - gitweb
Bug1275 - enhance debug_daemon to dump out previouse log, as debug_daemon, on starts up
authorthantry <thantry>
Fri, 30 May 2003 16:51:00 +0000 (16:51 +0000)
committerthantry <thantry>
Fri, 30 May 2003 16:51:00 +0000 (16:51 +0000)
lnet/libcfs/debug.c
lustre/portals/libcfs/debug.c

index 6233b8d..e2470ec 100644 (file)
@@ -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;
index 6233b8d..e2470ec 100644 (file)
@@ -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;