658ff4f3ff
The delayed iscsi/iscsid service start is causing too many problems. This reverts the behavior to where when start is requested we always start. In the future maybe we can make the iscsid service just be used for root on iscsi. Then for other iscsi uses we would just have the iscsi service with iscsiadm starting iscsid and loading modules as needed. We can begin coverting dependent services and anaconda in the next version of fedora.
170 lines
3.9 KiB
Bash
Executable File
170 lines
3.9 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# iscsi: log into iSCSI targets
|
|
#
|
|
# chkconfig: 345 13 89
|
|
# description: Logs into iSCSI targets needed at system startup
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: iscsi
|
|
# Required-Start: iscsid network
|
|
# Should-Start: tgtd
|
|
# Required-Stop: iscsid
|
|
# Should-Stop: tgtd
|
|
# Default-Start: 3 4 5
|
|
# Default-Stop: 0 1 2 6
|
|
# Short-Description: Starts and stops login and scanning of iSCSI devices.
|
|
# Description: iscsi provides the iSCSI state machine for software iscsi/iser
|
|
# and partial offloaded hardware. iscsi logs into and scans
|
|
# for iSCSI devices, and shuts them down when stopped.
|
|
### END INIT INFO
|
|
|
|
# Source function library.
|
|
. /etc/rc.d/init.d/functions
|
|
|
|
exec="/sbin/iscsiadm"
|
|
prog="iscsi"
|
|
config="/etc/iscsi/initiatorname.iscsi"
|
|
lockfile=/var/lock/subsys/$prog
|
|
iscsid_lockfile=/var/lock/subsys/${prog}_iscsid
|
|
|
|
start() {
|
|
[ -x $exec ] || exit 5
|
|
[ -f $config ] || exit 6
|
|
|
|
# if the network isn't up yet exit cleanly, NetworkManager will call us
|
|
# again when the network is up
|
|
[ ! -f /var/lock/subsys/network ] && ! nm-online -t 60 >/dev/null 2>&1 && exit 3
|
|
|
|
# this script is normally called from startup so log into
|
|
# nodes marked node.startup=automatic
|
|
echo -n $"Starting $prog: "
|
|
$exec -m node --loginall=automatic 2>&1 > /dev/null | grep iscsiadm
|
|
# Ignore return code, because this command attempts to log into
|
|
# multiple sessions and some sessions could get logged into and
|
|
# some could be down temporarily.
|
|
success $"Starting $prog"
|
|
touch $lockfile
|
|
echo
|
|
return 0
|
|
}
|
|
|
|
iscsi_sessions_running() {
|
|
declare -a iparams=( $(iscsiadm -m session 2>/dev/null | egrep "tcp|iser|bnx2i|be2iscsi|cxgb3i|cxgb4i") )
|
|
if [[ -z "${iparams[*]}" ]]; then
|
|
# no sessions
|
|
return 2
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
cleanup_successful_stop() {
|
|
success $"Stopping $prog"
|
|
rm -f $lockfile
|
|
echo
|
|
}
|
|
|
|
stop() {
|
|
# Don't turn off iscsi if root is possibly on a iscsi disk.
|
|
rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab)
|
|
if [[ "$rootopts" =~ "_netdev" ]] ; then
|
|
echo $"Can not shutdown iSCSI. Root is on a iSCSI disk."
|
|
|
|
# Just clean up lock file if this is a system shutdown/reboot.
|
|
if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
|
|
rm -f $lockfile
|
|
fi
|
|
|
|
exit 1
|
|
fi
|
|
|
|
echo -n $"Stopping $prog: "
|
|
|
|
if ! iscsi_sessions_running ; then
|
|
cleanup_successful_stop
|
|
return 0
|
|
fi
|
|
|
|
if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
|
|
$exec -m node --logoutall=all 2>&1 > /dev/null
|
|
else
|
|
$exec -m node --logoutall=automatic 2>&1 > /dev/null
|
|
fi
|
|
|
|
ret=$?
|
|
# ignore ISCSI_ERR_NO_OBJS_FOUND/21
|
|
if [[ "$ret" -ne 0 && "$ret" -ne 21 ]]; then
|
|
failure $"Stopping $prog"
|
|
echo
|
|
return 1
|
|
fi
|
|
|
|
cleanup_successful_stop
|
|
return 0
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
start
|
|
}
|
|
|
|
reload() {
|
|
return 3
|
|
}
|
|
|
|
force_reload() {
|
|
restart
|
|
}
|
|
|
|
rh_status() {
|
|
[ -f $lockfile ] || { echo $"$prog is stopped" ; return 3 ; }
|
|
|
|
declare -a iparams=( $(iscsiadm -m session 2>/dev/null | egrep "tcp|iser|bnx2i|be2iscsi|cxgb3i|cxgb4i") )
|
|
if [[ -z "${iparams[*]}" ]]; then
|
|
# no sessions
|
|
echo $"No active sessions"
|
|
return 2
|
|
fi
|
|
|
|
iscsiadm -m session -P 3
|
|
return 0
|
|
}
|
|
|
|
rh_status_q() {
|
|
rh_status >/dev/null 2>&1
|
|
}
|
|
|
|
|
|
case "$1" in
|
|
start)
|
|
rh_status_q && exit 0
|
|
$1
|
|
;;
|
|
stop)
|
|
$1
|
|
;;
|
|
restart)
|
|
$1
|
|
;;
|
|
reload)
|
|
rh_status_q || exit 7
|
|
$1
|
|
;;
|
|
force-reload)
|
|
force_reload
|
|
;;
|
|
status)
|
|
rh_status
|
|
;;
|
|
condrestart|try-restart)
|
|
rh_status_q || exit 0
|
|
restart
|
|
;;
|
|
*)
|
|
echo $"Usage: $0
|
|
{start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
|
|
exit 2
|
|
esac
|
|
exit $?
|