iscsi-initiator-utils/iscsid.init
Mike Christie 658ff4f3ff fix iscsi/iscsid service start
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.
2012-02-06 21:33:18 -06:00

184 lines
3.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
iscsi_lockfile=/var/lock/subsys/iscsi
# 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_iscsid() {
echo -n $"Starting $prog: "
modprobe -q iscsi_tcp
modprobe -q ib_iser
modprobe -q cxgb3i
modprobe -q cxgb4i
modprobe -q bnx2i
modprobe -q be2iscsi
daemon iscsiuio
daemon $prog
retval=$?
echo
touch $lockfile
}
force_start() {
start_iscsid
# a force start could imply the iscsi service is started due to how it
# lazy starts. We need to touch the lock file so it is shutdown later
touch $iscsi_lockfile
}
use_discoveryd() {
grep -qrs "discovery.sendtargets.use_discoveryd = Yes" /var/lib/iscsi/send_targets
if [ $? -eq 0 ] ; then
return 0
fi
grep -qrs "discovery.isns.use_discoveryd = Yes" /var/lib/iscsi/isns
if [ $? -eq 0 ] ; then
return 0
fi
return 1
}
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
start_iscsid
return $?
}
stop() {
if use_discoveryd ; then
iscsiadm -k 0 2>/dev/null
fi
declare -a iparams=( $(iscsiadm -m session 2>/dev/null | egrep "tcp|iser|bnx2i|cxgb3i|cxgb4i|be2iscsi") )
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: "
iscsiadm -k 0 2>/dev/null
echo
killproc iscsiuio
rm -f /var/run/iscsiuio.pid
# only remove the iscsi drivers when offload is used
rmmod bnx2i 2>/dev/null
rmmod cnic 2>/dev/null
rmmod cxgb3i 2>/dev/null
rmmod cxgb4i 2>/dev/null
# a bug in kobject netlink code will cause this to oops
# modprobe -r be2iscsi 2>/dev/null
modprobe -r ib_iser 2>/dev/null
modprobe -r iscsi_tcp 2>/dev/null
rm -f $lockfile
return 0
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
restart() {
rh_status_q
use_force_start=$?
stop
# if iscsid was running then make sure it starts up
if [ "$use_force_start" -eq 0 ] ; then
start_iscsid
else
start
fi
}
reload() {
return 3
}
force_reload() {
restart
}
rh_status() {
status $prog
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
force-start)
force_start
;;
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 $?