You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

93 lines
1.7 KiB

#!/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
}