Whamcloud - gitweb
b=16403
authorgrev <grev>
Thu, 3 Sep 2009 17:13:00 +0000 (17:13 +0000)
committergrev <grev>
Thu, 3 Sep 2009 17:13:00 +0000 (17:13 +0000)
i=Adilger
t-f use lustre_rmmod to unload modules

lustre/scripts/lustre_rmmod
lustre/tests/test-framework.sh

index c306594..b1020f4 100755 (executable)
@@ -4,17 +4,38 @@
 # manually did a 'lctl network up'.
 ###############################################################################
 
-SRCDIR=`dirname $0`
-PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH
+FSTYPE=${1:-ldiskfs}
 
-case `uname -r` in
-2.4.*) RMMOD="modprobe -r";;
-*) RMMOD="rmmod";;
-esac
+TMP=${TMP:-/tmp}
+LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
+LCTL=${LCTL:-"$LUSTRE/utils/lctl"}
+[ ! -f "$LCTL" ] && export LCTL=$(which lctl 2> /dev/null)
 
-lctl modules | awk '{ print $2 }' | xargs $RMMOD >/dev/null 2>&1
-# do it again, in case we tried to unload the lnd's too early
-lctl modules | awk '{ print $2 }' | xargs $RMMOD >/dev/null 2>&1
-# third times the charm
-lsmod | grep lnet > /dev/null && lctl modules | awk '{ print $2 }' | xargs $RMMOD
+RMMOD=rmmod
+if [ `uname -r | cut -c 3` -eq 4 ]; then
+    RMMOD="modprobe -r"
+fi
+
+unload_dep_module() {
+    # libcfs                107852  17 llite_lloop,lustre,obdfilter,ost,...
+    local MODULE=$1
+    local DEPS=$(lsmod | awk '($1 == "'$MODULE'") { print $4 }' | tr ',' ' ')
+    for SUBMOD in $DEPS; do
+        unload_dep_module $SUBMOD
+    done
+    [ "$MODULE" = "libcfs" ] && $LCTL dk $TMP/debug || true
+    $RMMOD $MODULE || true
+}
+
+lsmod | grep libcfs > /dev/null && $LCTL dl
+lsmod | grep $FSTYPE && unload_dep_module $FSTYPE
+unload_dep_module libcfs
+
+MODULES=$($LCTL modules | awk '{ print $2 }')
+if [ -n "$MODULES" ]; then
+    echo "Modules still loaded: "
+    echo $MODULES
+    exit 1
+fi
+exit 0
 
index 4c835b2..9f0ce36 100644 (file)
@@ -108,6 +108,8 @@ init_test_env() {
     export TUNEFS=${TUNEFS:-"$LUSTRE/utils/tunefs.lustre"}
     [ ! -f "$TUNEFS" ] && export TUNEFS=$(which tunefs.lustre)
     export CHECKSTAT="${CHECKSTAT:-"checkstat -v"} "
+    export LUSTRE_RMMOD=${LUSTRE_RMMOD:-$LUSTRE/scripts/lustre_rmmod}
+    [ ! -f "$LUSTRE_RMMOD" ] && export LUSTRE_RMMOD=$(which lustre_rmmod 2> /dev/null)
     export FSTYPE=${FSTYPE:-"ldiskfs"}
     export NAME=${NAME:-local}
     export DIR2
@@ -220,46 +222,6 @@ load_modules() {
     [ -f $LUSTRE/utils/mount.lustre ] && cp $LUSTRE/utils/mount.lustre /sbin/. || true
 }
 
-RMMOD=rmmod
-if [ `uname -r | cut -c 3` -eq 4 ]; then
-    RMMOD="modprobe -r"
-fi
-
-wait_for_lnet() {
-    local UNLOADED=0
-    local WAIT=0
-    local MAX=60
-    MODULES=$($LCTL modules | awk '{ print $2 }')
-    while [ -n "$MODULES" ]; do
-    sleep 5
-    $RMMOD $MODULES >/dev/null 2>&1 || true
-    MODULES=$($LCTL modules | awk '{ print $2 }')
-        if [ -z "$MODULES" ]; then
-        return 0
-        else
-            WAIT=$((WAIT + 5))
-            echo "waiting, $((MAX - WAIT)) secs left"
-        fi
-        if [ $WAIT -eq $MAX ]; then
-            echo "LNET modules $MODULES will not unload"
-        lsmod
-            return 3
-        fi
-    done
-}
-
-unload_dep_module() {
-    #lsmod output
-    #libcfs                107852  17 llite_lloop,lustre,obdfilter,ost,...
-    local MODULE=$1
-    local DEPS=$(lsmod | awk '($1 == "'$MODULE'") { print $4 }' | tr ',' ' ')
-    for SUBMOD in $DEPS; do
-        unload_dep_module $SUBMOD
-    done
-    [ "$MODULE" = "libcfs" ] && $LCTL dk $TMP/debug || true
-    $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)
@@ -276,24 +238,8 @@ check_mem_leak () {
 unload_modules() {
     wait_exit_ST client # bug 12845
 
-    lsmod | grep libcfs > /dev/null && $LCTL dl
-    [ -z "$CLIENTONLY" ] && unload_dep_module $FSTYPE
-    unload_dep_module libcfs
-
-    local MODULES=$($LCTL modules | awk '{ print $2 }')
-    if [ -n "$MODULES" ]; then
-        echo "Modules still loaded: "
-        echo $MODULES
-        if [ "$(lctl dl)" ]; then
-            echo "Lustre still loaded"
-            lctl dl || true
-            lsmod
-            return 2
-        else
-            echo "Lustre stopped but LNET is still loaded, waiting..."
-            wait_for_lnet || return 3
-        fi
-    fi
+    $LUSTRE_RMMOD $FSTYPE || return 2
+
     HAVE_MODULES=false
 
     check_mem_leak || return 254