From b87561cba3297ea7d3266ab27d42cfd9b35bc8f5 Mon Sep 17 00:00:00 2001 From: tianzy Date: Wed, 8 Oct 2008 10:47:13 +0000 Subject: [PATCH] Branch b1_6 fix panic on debug_daemon b=15878 i=shadow i=zhenyu.xu --- lnet/libcfs/tracefile.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lnet/libcfs/tracefile.c b/lnet/libcfs/tracefile.c index 172c1c2..4b7a8e7 100644 --- a/lnet/libcfs/tracefile.c +++ b/lnet/libcfs/tracefile.c @@ -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); -- 1.8.3.1