Whamcloud - gitweb
Branch b1_6
authortianzy <tianzy>
Wed, 8 Oct 2008 10:47:13 +0000 (10:47 +0000)
committertianzy <tianzy>
Wed, 8 Oct 2008 10:47:13 +0000 (10:47 +0000)
fix panic on debug_daemon
b=15878
i=shadow
i=zhenyu.xu

lnet/libcfs/tracefile.c

index 172c1c2..4b7a8e7 100644 (file)
@@ -827,7 +827,9 @@ int trace_daemon_command(char *str)
        tracefile_write_lock();
 
        if (strcmp(str, "stop") == 0) {
+                tracefile_write_unlock();
                trace_stop_thread();
+                tracefile_write_lock();
                 memset(tracefile, 0, sizeof(tracefile));
 
        } else if (strncmp(str, "size=", 5) == 0) {
@@ -1020,6 +1022,25 @@ static int tracefiled(void *arg)
 
                 cfs_filp_close(filp);
                 put_pages_on_daemon_list(&pc);
+                if (!list_empty(&pc.pc_pages)) {
+                        int i;
+
+                        printk(KERN_ALERT "Lustre: trace pages aren't empty\n");
+                        printk(KERN_ALERT "total cpus(%d): ", num_possible_cpus());
+                        for (i = 0; i < num_possible_cpus(); i++)
+                                if (cpu_online(i))
+                                        printk(KERN_ALERT "%d(on) ", i);
+                                else
+                                        printk(KERN_ALERT "%d(off) ", i);
+                        printk(KERN_ALERT "\n");
+
+                        i = 0;
+                        list_for_each_entry_safe(tage, tmp, &pc.pc_pages,
+                                                 linkage)
+                                printk(KERN_ALERT "page %d belongs to cpu %d\n",
+                                       ++i, tage->cpu);
+                        printk(KERN_ALERT "There are %d pages unwritten\n", i);
+                }
                 __LASSERT(list_empty(&pc.pc_pages));
         }
         complete(&tctl->tctl_stop);