a4c8b301eb
- Add patch to make iscsiadm complain and exit when run as user instead of hang spinning for the database lock - Add patch to make iscsiadm start iscsid when needed (rh 436175 related) - Don't start iscsi service when network not yet up (in case of using NM) add NM dispatcher script to start iscsi service once network is up
132 lines
2.6 KiB
Bash
Executable File
132 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# iscsid iSCSI daemon
|
|
#
|
|
# chkconfig: 345 7 89
|
|
# description: Starts and stops the iSCSI daemon.
|
|
#
|
|
# processname: iscsid
|
|
# pidfile: /var/run/iscsid.pid
|
|
# config: /etc/iscsi/iscsid.conf
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: iscsid
|
|
# Default-Start: 3 4 5
|
|
# Default-Stop: 0 1 2 6
|
|
# Short-Description: Starts and stops login iSCSI daemon.
|
|
# Description: iscsid provides the iSCSI session and connection state machine
|
|
# for software iscsi/iser (iscsi_tcp/ib_iser) and partialy
|
|
# offloaded hardware (bnx2i).
|
|
### END INIT INFO
|
|
|
|
# Source function library.
|
|
. /etc/rc.d/init.d/functions
|
|
|
|
exec=/sbin/iscsid
|
|
prog=iscsid
|
|
config=/etc/iscsi/iscsid.conf
|
|
lockfile=/var/lock/subsys/$prog
|
|
|
|
# FIXME this has a false positive for root on nfs
|
|
root_is_iscsi() {
|
|
rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' /etc/mtab)
|
|
[[ "$rootopts" =~ "_netdev" ]]
|
|
}
|
|
|
|
start() {
|
|
[ -x $exec ] || exit 5
|
|
[ -f $config ] || exit 6
|
|
|
|
# only start if nodes are setup to startup automatically or root is iscsi
|
|
grep -qrs "node.startup = automatic" /var/lib/iscsi/nodes
|
|
if [ $? -eq 0 ] || root_is_iscsi; then
|
|
echo -n $"Starting $prog: "
|
|
modprobe -q iscsi_tcp
|
|
modprobe -q ib_iser
|
|
daemon $prog
|
|
retval=$?
|
|
echo
|
|
[ $retval -eq 0 ] || return 1
|
|
touch $lockfile
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
stop() {
|
|
declare -a iparams=( $(iscsiadm -m session 2>/dev/null | egrep "tcp|iser") )
|
|
if [[ -n "${iparams[*]}" ]]; then
|
|
# We have active sessions, so don't stop iscsid!!
|
|
echo -n $"Not stopping $prog: iscsi sessions still active"
|
|
warning $"Not stopping $prog: iscsi sessions still active"
|
|
echo
|
|
return 0
|
|
fi
|
|
|
|
echo -n $"Stopping $prog: "
|
|
killproc $prog
|
|
retval=$?
|
|
echo
|
|
|
|
modprobe -r ib_iser 2>/dev/null
|
|
modprobe -r iscsi_tcp 2>/dev/null
|
|
|
|
[ $retval -eq 0 ] && rm -f $lockfile
|
|
return $retval
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
start
|
|
}
|
|
|
|
reload() {
|
|
return 3
|
|
}
|
|
|
|
force_reload() {
|
|
restart
|
|
}
|
|
|
|
rh_status() {
|
|
status $prog
|
|
}
|
|
|
|
rh_status_q() {
|
|
rh_status >/dev/null 2>&1
|
|
}
|
|
|
|
|
|
case "$1" in
|
|
start)
|
|
rh_status_q && exit 0
|
|
$1
|
|
;;
|
|
stop)
|
|
rh_status_q || exit 0
|
|
$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 $?
|