X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fscripts%2Flustre_rmmod;h=a4f81d885674ff783bb178a66ddcc7b7b4de09ed;hp=2f6b6c29a2c99d844cc0feb0a0123b5ffb2dc1b7;hb=d821adb626e050206f1b4605f1159cf65ad22af5;hpb=d2d56f38da01001c92a09afc6b52b5acbd9bc13c diff --git a/lustre/scripts/lustre_rmmod b/lustre/scripts/lustre_rmmod index 2f6b6c2..a4f81d8 100755 --- a/lustre/scripts/lustre_rmmod +++ b/lustre/scripts/lustre_rmmod @@ -4,9 +4,39 @@ # manually did a 'lctl network up'. ############################################################################### -SRCDIR=`dirname $0` -PATH=$PWD/$SRCDIR:$SRCDIR:$SRCDIR/../utils:$PATH +FSTYPE=${1:-ldiskfs} + +TMP=${TMP:-/tmp} +LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)} +LCTL=${LCTL:-"$LUSTRE/utils/lctl"} +[ ! -f "$LCTL" ] && export LCTL=$(which lctl 2> /dev/null) + +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 >/dev/null || true + $RMMOD $MODULE 2>/dev/null || true + return 0 +} + +lsmod | grep obdclass > /dev/null && $LCTL dl +lsmod | grep $FSTYPE > /dev/null && unload_dep_module $FSTYPE +lsmod | grep libcfs > /dev/null && 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 -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 -lsmod | grep lnet > /dev/null && lctl modules | awk '{ print $2 }' | xargs rmmod