Whamcloud - gitweb
LU-5830 scripts: use lustre_rmmod in lnet start/stop script 13/12513/4
authorBruno Faccini <bruno.faccini@intel.com>
Fri, 31 Oct 2014 00:59:51 +0000 (01:59 +0100)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 7 Nov 2014 01:18:44 +0000 (01:18 +0000)
In lnet's start/stop script stop phase, use lustre_rmmod instead
to try to unload a static list/sequence of modules.

Signed-off-by: Bruno Faccini <bruno.faccini@intel.com>
Change-Id: Ie8584b32e4d7cd21de0ed18954aa38124485964d
Reviewed-on: http://review.whamcloud.com/12513
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Brian J. Murrell <brian.murrell@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
lustre/scripts/lnet

index b02c74a..a98df4b 100644 (file)
 # Check for and source configuration file otherwise set defaults
 [ -f /etc/sysconfig/lnet ] && . /etc/sysconfig/lnet
 
-declare -r TOP_MODULES=(       \
-       obdecho                 \
-       llite                   \
-       lustre                  \
-       osc                     \
-       lov                     \
-       mds                     \
-       mdc                     \
-       mgs                     \
-       mgc                     \
-       ost                     \
-       obdfilter               \
-       lquota                  \
-       ptlrpc                  \
-)
-declare -r BOTTOM_MODULES=(    \
-       ksocklnd                \
-       kqswlnd                 \
-       ko2iblnd                \
-       obdclass                \
-       lnet                    \
-       lvfs                    \
-       libcfs                  \
-       ldiskfs                 \
-)
-
 declare -r awkprog='BEGIN { rc = -1 }
                       { if ( $1 == module_name ) { rc = $3; exit; } }
                    END { print rc }'
@@ -78,44 +52,9 @@ run_postexec_check ()
        fi
 }
 
-remove_modules ()
-{
-       local modules="${@}"
-       local ref_cnt
-
-       for mod in $modules; do
-               ref_cnt=`/sbin/lsmod | awk "$awkprog" "module_name=$mod"`
-               if [ $ref_cnt -lt 0 ]; then
-                       # module not loaded, skip it
-                       continue
-               fi
-               if [ $ref_cnt -gt 0 ]; then
-                       # module in use.  maybe it just needs a few seconds
-                       # after removal of previous modules.
-                       sleep 5
-                       ref_cnt=`/sbin/lsmod | awk "$awkprog" module_name=$mod`
-               fi
-               if [ $ref_cnt -eq 0 ]; then
-                       # unload the module
-                       echo "Removing module $mod"
-                       /sbin/rmmod $mod
-                       if [ $? -ne 0 ]; then
-                               echo "ERROR: Failed to remove module $mod."
-                               return 1
-                       fi
-               else
-                       # boo!  module still in use.
-                       echo "ERROR: Module $mod has non-zero reference count."
-                       return 1
-               fi
-       done
-
-       return 0
-}
-
 stop_lnet ()
 {
-       local errmsg=`/usr/sbin/lctl network unconfigure 2>&1`
+       local errmsg=$(/usr/sbin/lctl network down 2>&1)
        if [ $? -gt 0 ]; then
                # The following error message means that lnet is already
                # unconfigured, and the modules are not loaded.
@@ -201,9 +140,8 @@ case "$1" in
        ;;
   stop)
        run_preexec_check "stop"
-       remove_modules ${TOP_MODULES[*]} || exit 1
        stop_lnet || exit 1
-       remove_modules ${BOTTOM_MODULES[*]} || exit 1
+       lustre_rmmod || exit 1
        rm -f /var/lock/subsys/lnet
        run_postexec_check "stop"
        ;;