From c099889e2df21be19170cb73605c769a654ffb0a Mon Sep 17 00:00:00 2001 From: grev Date: Thu, 18 Sep 2008 20:39:16 +0000 Subject: [PATCH] b=16799 i=Adilger cleanup_obdclass () fix; check_mem_leak t-f fn --- lustre/obdclass/class_obd.c | 7 ++++--- lustre/tests/test-framework.sh | 36 +++++++++++++++++------------------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/lustre/obdclass/class_obd.c b/lustre/obdclass/class_obd.c index dc99873..16533c4 100644 --- a/lustre/obdclass/class_obd.c +++ b/lustre/obdclass/class_obd.c @@ -636,10 +636,11 @@ static void cleanup_obdclass(void) cfs_mem_cache_destroy(obd_lvfs_ctxt_cache); lprocfs_free_stats(&obd_memory); - CDEBUG((memory_leaked | pages_leaked) ? D_ERROR : D_INFO, - "obd_memory max: "LPU64", leaked: "LPU64" " + CDEBUG((memory_leaked) ? D_ERROR : D_INFO, + "obd_memory max: "LPU64", leaked: "LPU64"\n", + memory_max, memory_leaked); + CDEBUG((pages_leaked) ? D_ERROR : D_INFO, "obd_memory_pages max: "LPU64", leaked: "LPU64"\n", - memory_max, memory_leaked, pages_max, pages_leaked); EXIT; diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 628703e..f6ba057 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -246,6 +246,19 @@ unload_dep_module() { $RMMOD $MODULE || true } +check_mem_leak () { + LEAK_LUSTRE=$(dmesg | tail -n 30 | grep "obd_memory.*leaked" || true) + LEAK_PORTALS=$(dmesg | tail -n 20 | grep "Portals memory leaked" || true) + if [ "$LEAK_LUSTRE" -o "$LEAK_PORTALS" ]; then + echo "$LEAK_LUSTRE" 1>&2 + echo "$LEAK_PORTALS" 1>&2 + mv $TMP/debug $TMP/debug-leak.`date +%s` || true + log "Memory leaks detected" + [ -n "$IGNORE_LEAK" ] && { echo "ignoring leaks" && return 0; } || true + return 1 + fi +} + unload_modules() { wait_exit_ST client # bug 12845 @@ -269,16 +282,8 @@ unload_modules() { fi HAVE_MODULES=false - LEAK_LUSTRE=$(dmesg | tail -n 30 | grep "obd mem.*leaked" || true) - LEAK_PORTALS=$(dmesg | tail -n 20 | grep "Portals memory leaked" || true) - if [ "$LEAK_LUSTRE" -o "$LEAK_PORTALS" ]; then - echo "$LEAK_LUSTRE" 1>&2 - echo "$LEAK_PORTALS" 1>&2 - mv $TMP/debug $TMP/debug-leak.`date +%s` || true - echo "Memory leaks detected" - [ -n "$IGNORE_LEAK" ] && echo "ignoring leaks" && return 0 - return 254 - fi + check_mem_leak || return 254 + echo "modules unloaded." return 0 } @@ -446,15 +451,8 @@ cleanup_check() { [ -e $TMP/debug ] && mv $TMP/debug $TMP/debug-busy.`date +%s` exit 205 fi - LEAK_LUSTRE=`dmesg | tail -n 30 | grep "obd mem.*leaked" || true` - LEAK_PORTALS=`dmesg | tail -n 20 | grep "Portals memory leaked" || true` - if [ "$LEAK_LUSTRE" -o "$LEAK_PORTALS" ]; then - echo "$0: $LEAK_LUSTRE" 1>&2 - echo "$0: $LEAK_PORTALS" 1>&2 - echo "$0: Memory leak(s) detected..." 1>&2 - mv $TMP/debug $TMP/debug-leak.`date +%s` - exit 204 - fi + + check_mem_leak || exit 204 [ "`lctl dl 2> /dev/null | wc -l`" -gt 0 ] && lctl dl && \ echo "$0: lustre didn't clean up..." 1>&2 && return 202 || true -- 1.8.3.1