#! /bin/sh
### BEGIN INIT INFO
# Provides:          iscsi
# Required-Start:    $network
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts and stops the iSCSI initiator services and logins to default targets
# X-Start-Before:    
# X-Stop-After:      
# X-Timesys-Start-Number:  21
# X-Timesys-Stop-Number:  79
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/iscsid
ADM=/sbin/iscsiadm
PIDFILE=/var/run/iscsid.pid

[ -x "$DAEMON" ] || exit 0

if [ ! -d /sys/class/ ]; then
  echo  "iSCSI requires a mounted sysfs, not started."
  exit 1
fi

start() {
	echo "Starting iSCSI initiator service" "iscsid"
	modprobe -q iscsi_tcp 2>/dev/null || :
	modprobe -q ib_iser 2>/dev/null || :
	$DAEMON &
	starttargets
}

starttargets() {
	echo "Setting up iSCSI targets"
	$ADM -m node --loginall=automatic
}

stoptargets() {
	echo "Disconnecting iSCSI targets"
	$ADM -m node --logoutall=all
}

stop() {
	stoptargets
	echo "Stopping iSCSI initiator service"
  PID=$(pidof $DAEMON)
	if [ -n "$PID" ]; then
		for pid in $PID;do kill $pid >/dev/null 2>&1;done
  fi

	modprobe -r ib_iser 2>/dev/null
	modprobe -r iscsi_tcp 2>/dev/null
}

restart() {
	stop
	start
}

restarttargets() {
	stoptargets
	starttargets
}

status() {
	#XXX FIXME: what to do here?
	#status iscsid
	# list active sessions
	echo Current active iSCSI sessions:
	$ADM -m session
}

case "$1" in
	start|starttargets|stop|stoptargets|restart|restarttargets|status)
		$1
		;;
	*)
		echo "Usage: $0 {start|stop|restart|status}"
		exit 1
		;;
esac

