X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fportals%2Flibcfs%2Fdebug.c;h=8043ac47857bf752a22c594edf896c87da6ddc9b;hb=eef0dc3356976bad84f7aefb6595f10443a5980d;hp=52e74938f4b6c9ebb08639e51a2a70529b95d795;hpb=50253ef5d916b4f17c5628b8b80d76509e64765d;p=fs%2Flustre-release.git diff --git a/lustre/portals/libcfs/debug.c b/lustre/portals/libcfs/debug.c index 52e7493..8043ac4 100644 --- a/lustre/portals/libcfs/debug.c +++ b/lustre/portals/libcfs/debug.c @@ -50,6 +50,29 @@ #include #include +#include + +unsigned int portal_subsystem_debug = ~0 - (S_PORTALS | S_QSWNAL | S_SOCKNAL | + S_GMNAL | S_IBNAL); +EXPORT_SYMBOL(portal_subsystem_debug); + +unsigned int portal_debug = (D_WARNING | D_DLMTRACE | D_ERROR | D_EMERG | D_HA | + D_RPCTRACE | D_VFSTRACE); +EXPORT_SYMBOL(portal_debug); + +unsigned int portal_cerror = 1; +EXPORT_SYMBOL(portal_cerror); + +unsigned int portal_printk; +EXPORT_SYMBOL(portal_printk); + +unsigned int portal_stack; +EXPORT_SYMBOL(portal_stack); + +#ifdef __KERNEL__ +atomic_t portal_kmemory = ATOMIC_INIT(0); +EXPORT_SYMBOL(portal_kmemory); +#endif #define DEBUG_OVERFLOW 1024 static char *debug_buf = NULL; @@ -569,7 +592,7 @@ int portals_debug_init(unsigned long bufsize) debug_buf = vmalloc(bufsize + DEBUG_OVERFLOW); if (debug_buf == NULL) return -ENOMEM; - memset(debug_buf, 0, debug_size); + memset(debug_buf, 0, bufsize + DEBUG_OVERFLOW); debug_wrapped = 0; //printk(KERN_INFO "Portals: allocated %lu byte debug buffer at %p.\n", @@ -633,9 +656,9 @@ int portals_debug_mark_buffer(char *text) if (debug_buf == NULL) return -EINVAL; - CDEBUG(0, "********************************************************\n"); + CDEBUG(D_TRACE,"***************************************************\n"); CWARN("DEBUG MARKER: %s\n", text); - CDEBUG(0, "********************************************************\n"); + CDEBUG(D_TRACE,"***************************************************\n"); return 0; } @@ -686,16 +709,18 @@ __s32 portals_debug_copy_to_user(char *buf, unsigned long len) copied = 0; list_for_each(pos, &my_pages) { unsigned long to_copy; - page = list_entry(pos, struct page, list); + void *addr; + page = list_entry(pos, struct page, list); to_copy = min(total - off, PAGE_SIZE); if (to_copy == 0) { off = 0; to_copy = min(debug_size - off, PAGE_SIZE); } finish_partial: - memcpy(kmap(page), debug_buf + off, to_copy); - kunmap(page); + addr = kmap_atomic(page, KM_USER0); + memcpy(addr, debug_buf + off, to_copy); + kunmap_atomic(addr, KM_USER0); copied += to_copy; if (copied >= total) break; @@ -803,8 +828,10 @@ portals_debug_msg(int subsys, int mask, char *file, const char *fn, subsys, mask, smp_processor_id(), tv.tv_sec, tv.tv_usec, stack, current->pid); max_nob -= prefix_nob; + if(*(format + strlen(format) - 1) != '\n') - *(format + strlen(format)) = '\n'; + printk(KERN_INFO "format at %s:%d:%s doesn't end in newline\n", + file, line, fn); #if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) msg_nob = snprintf(debug_buf + debug_off + prefix_nob, max_nob, @@ -922,6 +949,8 @@ void portals_run_lbug_upcall(char *file, const char *fn, const int line) char *portals_nid2str(int nal, ptl_nid_t nid, char *str) { switch(nal){ +/* XXX this should be a nal method of some sort */ +#ifndef CRAY_PORTALS case TCPNAL: /* userspace NAL */ case SOCKNAL: @@ -934,16 +963,14 @@ char *portals_nid2str(int nal, ptl_nid_t nid, char *str) case SCIMACNAL: sprintf(str, "%u:%u", (__u32)(nid >> 32), (__u32)nid); break; +#endif default: - return NULL; + snprintf(str, PTL_NALFMT_SIZE-1, "(?%llx)", (long long)nid); } return str; } #ifdef __KERNEL__ -#include -#if (LUSTRE_KERNEL_VERSION >= 30) -#warning "FIXME: remove workaround when l30 is widely used" char stack_backtrace[LUSTRE_TRACE_SIZE]; spinlock_t stack_backtrace_lock = SPIN_LOCK_UNLOCKED; @@ -954,7 +981,7 @@ extern int is_kernel_text_address(unsigned long addr); char *portals_debug_dumpstack(void) { asm("int $3"); - return "dump stack"; + return "dump stack\n"; } #elif defined(__i386__) @@ -1016,7 +1043,6 @@ char *portals_debug_dumpstack(void) #endif /* __arch_um__ */ EXPORT_SYMBOL(stack_backtrace_lock); EXPORT_SYMBOL(portals_debug_dumpstack); -#endif /* LUSTRE_KERNEL_VERSION < 30 */ #endif /* __KERNEL__ */ EXPORT_SYMBOL(portals_debug_dumplog);