Whamcloud - gitweb
b1020f44dfb6e41af7d9bf80ff0f7f9e6ef9045a
[fs/lustre-release.git] / lustre / scripts / lustre_rmmod
1 #!/bin/sh
2 #
3 # remove all lustre modules.  Won't succeed if they're in use, or if you
4 # manually did a 'lctl network up'.
5 ###############################################################################
6
7 FSTYPE=${1:-ldiskfs}
8
9 TMP=${TMP:-/tmp}
10 LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
11 LCTL=${LCTL:-"$LUSTRE/utils/lctl"}
12 [ ! -f "$LCTL" ] && export LCTL=$(which lctl 2> /dev/null)
13
14 RMMOD=rmmod
15 if [ `uname -r | cut -c 3` -eq 4 ]; then
16     RMMOD="modprobe -r"
17 fi
18
19 unload_dep_module() {
20     # libcfs                107852  17 llite_lloop,lustre,obdfilter,ost,...
21     local MODULE=$1
22     local DEPS=$(lsmod | awk '($1 == "'$MODULE'") { print $4 }' | tr ',' ' ')
23     for SUBMOD in $DEPS; do
24         unload_dep_module $SUBMOD
25     done
26     [ "$MODULE" = "libcfs" ] && $LCTL dk $TMP/debug || true
27     $RMMOD $MODULE || true
28 }
29
30 lsmod | grep libcfs > /dev/null && $LCTL dl
31 lsmod | grep $FSTYPE && unload_dep_module $FSTYPE
32 unload_dep_module libcfs
33
34 MODULES=$($LCTL modules | awk '{ print $2 }')
35 if [ -n "$MODULES" ]; then
36     echo "Modules still loaded: "
37     echo $MODULES
38     exit 1
39 fi
40 exit 0
41