3 # lnet This shell script takes care of starting and stopping
4 # the lnet (Lustre networking) services.
7 # description: Part of the lustre file system.
9 # config: /etc/sysconfig/lnet
11 # Source function library.
12 [ -f /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
14 # Source networking configuration and check that networking is up.
15 [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network && \
16 [ "${NETWORKING}" = "no" ] && exit 0
18 # Check for and source configuration file otherwise set defaults
19 [ -f /etc/sysconfig/lnet ] && . /etc/sysconfig/lnet
21 declare -r awkprog='BEGIN { rc = -1 }
22 { if ( $1 == module_name ) { rc = $3; exit; } }
25 # Usage: run_preexec_check [ start | restart | condrestart ]
26 # The single parameter will be passed to the PREEXEC_SCRIPT
29 if [ -n "$PREEXEC_CHECK" ] && ! $PREEXEC_CHECK ; then
30 echo "Pre-exec check \"$PREEXEC_CHECK\" failed. Aborting."
34 if [ -n "$PREEXEC_SCRIPT" ] && ! "$PREEXEC_SCRIPT" "$1" ; then
35 echo "Pre-exec script \"$PREEXEC_SCRIPT\" failed. Aborting."
40 # Usage: run_postexec_check [ start | restart | condrestart ]
41 # The single parameter will be passed to the POSTEXEC_SCRIPT
44 if [ -n "$POSTEXEC_CHECK" ] && ! $POSTEXEC_CHECK ; then
45 echo "Post-exec check \"$POSTEXEC_CHECK\" failed. Aborting."
49 if [ -n "$POSTEXEC_SCRIPT" ] && ! "$POSTEXEC_SCRIPT" "$1" ; then
50 echo "Post-exec script \"$POSTEXEC_SCRIPT\" failed. Aborting."
57 local errmsg=$(/usr/sbin/lctl network down 2>&1)
59 # The following error message means that lnet is already
60 # unconfigured, and the modules are not loaded.
61 echo $errmsg | grep "LNET unconfigure error 19" > /dev/null
74 old_nullglob="`shopt -p nullglob`"
78 # LSB compliance - return 3 if service is not running
79 # Lustre-specific returns
80 # 150 - partial startup
81 # 151 - health_check unhealthy
84 egrep -q "lnet" /proc/modules && STATE="loaded"
86 # check for any routes - on a portals router this is the only thing
87 VAR=$(lctl get_param -n routes 2>&1)
93 # check if this is a router
94 if [[ "$(lctl get_param -n routes)" =~ "Routing enabled" ]]; then
99 # check for error in health_check
100 local health_check=$(lctl get_param -n health_check)
101 if [[ "$health_check" =~ "NOT HEALTHY" ]]; then
106 if [[ "$health_check" =~ "LBUG" ]]; then
115 LUSTRE_ROUTES_CONFIG_FILE="/etc/sysconfig/lnet_routes.conf"
116 LUSTRE_LNET_CONFIG_FILE="/etc/sysconfig/lnet.conf"
117 LUSTRE_LNET_CONFIG_UTILITY="/usr/sbin/lnetctl"
119 # See how we were called.
122 run_preexec_check "start"
123 touch /var/lock/subsys/lnet
124 modprobe lnet || exit 1
125 lctl network up || exit 1
126 # if a routes config file is given then use it to configure the
127 # routes if not then default to LUSTRE_ROUTES_CONFIG_FILE
129 lustre_routes_config $2
130 elif [ -f "$LUSTRE_ROUTES_CONFIG_FILE" ]; then
131 lustre_routes_config $LUSTRE_ROUTES_CONFIG_FILE
133 # if an lnet.conf file exists then pass that to the lnetctl
134 # utility for parsing. This will configure the items defined
135 # in YAML format in the config file.
136 if [ -f $LUSTRE_LNET_CONFIG_UTILITY ] && [ -f "$LUSTRE_LNET_CONFIG_FILE" ]; then
137 $LUSTRE_LNET_CONFIG_UTILITY import < $LUSTRE_LNET_CONFIG_FILE
139 run_postexec_check "start"
142 run_preexec_check "stop"
144 lustre_rmmod || exit 1
145 rm -f /var/lock/subsys/lnet
146 run_postexec_check "stop"
156 touch /var/lock/subsys/lnet
159 if [ ! -f /var/lock/subsys/lnet ] ; then
160 echo $"start"; exit 0
164 [ -f /var/lock/subsys/lnet ] && {
170 echo $"Usage: lustre {start|stop|status|restart|reload|condrestart}"