#! /bin/sh ### BEGIN INIT INFO # Provides: # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: # Short-Description: Starts and stops the iSCSI initiator services and logins to default targets ### END INIT INFO set -x PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/iscsid ADM=/usr/sbin/iscsiadm PIDFILE=/var/run/iscsid.pid [ -x "$DAEMON" ] || exit 0 if [ ! -d /sys/class/ ]; then logger -t iscsi-initiator "iSCSI requires a mounted sysfs, not started." exit 1 fi nodestartup_re='s/^node\.conn\[0]\.startup[ ]*=[ ]*//p' RETVAL=0 start() { logger -t iscsi-initiator "Starting iSCSI initiator service" "iscsid" modprobe -q iscsi_tcp 2>/dev/null || : modprobe -q ib_iser 2>/dev/null || : start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON RETVAL=$? logger -t iscsi-initiator "Command returned $RETVAL" starttargets } starttargets() { logger -t iscsi-initiator "Setting up iSCSI targets" $ADM -m node --loginall=automatic logger -t iscsi-initiator OK } stoptargets() { logger -t iscsi-initiator "Disconnecting iSCSI targets" sync $ADM -m node --logoutall=all logger -t iscsi-initiator OK } stop() { stoptargets logger -t iscsi-initiator "Stopping iSCSI initiator service" start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON rm -f $PIDFILE status=0 modprobe -r ib_iser 2>/dev/null if [ "$?" -ne "0" -a "$?" -ne "1" ]; then status=1 fi modprobe -r iscsi_tcp 2>/dev/null if [ "$?" -ne "0" -a "$?" -ne "1" ]; then status=1 fi logger -t iscsi-initiator "Command returned $status" } 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 exit $RETVAL