#!/bin/sh /etc/rc.common START=50 STOP=50 #USE_PROCD=1 DAEMON=/sbin/iscsid ADM=/sbin/iscsiadm PIDFILE=/var/run/iscsid.pid log() { logger -t iscsid -s -p daemon.info "$@" } #start_service() { # procd_open_instance # procd_set_param command $DAEMON -f -d 8 -p $PIDFILE # procd_set_param respawn # procd_close_instance #} prepare() { [ ! -f /etc/iscsi/initiatorname.iscsi ] && logger "Generate initator name ..." \ && /usr/sbin/iscsi-gen-initiatorname mkdir -p /var/run/lock/iscsi } unmount() { TARGETS="$(iscsiadm -m session -P 3 | grep disk | awk '{print $4}')" for VAL in $TARGETS; do MOUNTED="$(mount | grep $VAL | awk '{print $1}')" for PART in $MOUNTED; do log "Umount $PART" $(umount $PART) done done RETVAL=$? } start() { pgrep -o iscsid && return 1 prepare $DAEMON -p $PIDFILE starttargets } starttargets() { log "Setting up iSCSI targets" $ADM -m node -l } stoptargets() { unmount if [ $RETVAL -ne 0 ]; then log "Could not umount all partitions, verify file lock!" return $RETVAL fi log "Disconnecting iSCSI targets" sync $ADM -m node -u } stop() { pgrep -o iscsid || return 1 stoptargets #needs more checks if [ $RETVAL -ne 0 ]; then log "Could not stop all targets, try again later" return $RETVAL fi log "Stopping iSCSI initiator service" $ADM -k 0 2 rm -f $PIDFILE } restart() { stop if [ $RETVAL -ne 0 ]; then log "Stopping iSCSI initiator service failed, not starting" return $RETVAL fi start } restarttargets() { stoptargets if [ $RETVAL -ne 0 ]; then log "Could not stop all targets, try again later" return $RETVAL fi starttargets }