X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fscripts%2Flustre_rmmod;h=e07f4c98f9a553e01afc77e48d6af55e4ac92be8;hb=6c3606b79a4c25946255a680f79ff2d58df66bbc;hp=c3065948e096ff00cdc00afb830afb50c895bfd5;hpb=f4968a17d48f9d182ac5592f4ac7a17aa43bbde3;p=fs%2Flustre-release.git diff --git a/lustre/scripts/lustre_rmmod b/lustre/scripts/lustre_rmmod index c306594..e07f4c9 100755 --- a/lustre/scripts/lustre_rmmod +++ b/lustre/scripts/lustre_rmmod @@ -4,17 +4,39 @@ # 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 >/dev/null || true + $RMMOD $MODULE 2>/dev/null || true + return 0 +} + +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