mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
154 lines
4.1 KiB
Bash
154 lines
4.1 KiB
Bash
#!/bin/bash
|
|
|
|
. /etc/rc.conf
|
|
. /etc/rc.d/functions
|
|
|
|
# general config
|
|
[ -f /etc/conf.d/open-iscsi ] && . /etc/conf.d/open-iscsi
|
|
|
|
# Set defaults if settings are missing
|
|
[ -z "${ISCSID_ARGS}" ] && ISCSID_ARGS=""
|
|
[ -z "$SEC_BEFORE_MOUNT" ] && SEC_BEFORE_MOUNT=2
|
|
[ -z "$ISCSIADM_EXTRAARGS" ] && ISCSIADM_EXTRAARGS=""
|
|
DAEMON_NAME="open-iscsi"
|
|
ISCSIADM=/sbin/iscsiadm
|
|
PIDFILE=/var/run/iscsid.pid
|
|
|
|
case "$1" in
|
|
start)
|
|
modprobe -q iscsi_tcp &>/dev/null
|
|
modprobe -q ib_iser &>/dev/null
|
|
|
|
stat_busy "Starting Open-iSCSI daemon"
|
|
/sbin/iscsid ${ISCSID_ARGS}
|
|
if [ $? -ne 0 ]; then
|
|
stat_fail
|
|
exit 2
|
|
else
|
|
add_daemon $DAEMON_NAME
|
|
stat_done
|
|
fi
|
|
|
|
if [ -n "$SERVER" ]; then
|
|
stat_busy "Discovering targets"
|
|
$ISCSIADM -m discovery -t sendtargets -p $SERVER $ISCSIADM_EXTRAARGS > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
stat_fail
|
|
exit 3
|
|
else
|
|
stat_done
|
|
fi
|
|
|
|
stat_busy "Login to all portals"
|
|
$ISCSIADM -m node -L all > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
stat_fail
|
|
exit 4
|
|
else
|
|
stat_done
|
|
fi
|
|
|
|
if [[ "$MOUNT" != "" ]]; then
|
|
# wait n seconds to settle
|
|
sleep $SEC_BEFORE_MOUNT
|
|
status "Mounting devices"
|
|
for MTPT in ${MOUNT[@]}; do
|
|
stat_busy "mounting $MTPT"
|
|
mount $MTPT
|
|
sleep 1
|
|
if [ $? -eq 0 ]; then
|
|
stat_done
|
|
else
|
|
stat_fail
|
|
fi
|
|
done
|
|
else
|
|
status "No devices to mount defined"
|
|
fi
|
|
fi
|
|
;;
|
|
stop)
|
|
if [[ "$MOUNT" != "" ]]; then
|
|
status "Unmounting devices"
|
|
# unmounting in reverse order
|
|
LEN=${#MOUNT[@]}
|
|
while [ $LEN -ne 0 ]; do
|
|
let LEN=$LEN-1;
|
|
UMOUNT="$UMOUNT ${MOUNT[$LEN]}";
|
|
done
|
|
for MTPT in $UMOUNT; do
|
|
MOUNTED=$(mount|grep -c `/usr/bin/readlink -mns $MTPT`)
|
|
if [ $MOUNTED -ne 0 ]; then
|
|
stat_busy "unmounting $MTPT"
|
|
umount $MTPT
|
|
sleep 1
|
|
if [ $? -eq 0 ]; then
|
|
stat_done
|
|
else
|
|
stat_fail
|
|
exit 5
|
|
fi
|
|
else
|
|
status "$MTPT not mounted"
|
|
fi
|
|
done
|
|
sleep 2
|
|
else
|
|
status "No devices to unmount defined"
|
|
fi
|
|
|
|
$ISCSIADM -m session $> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
stat_busy "Logout to all portals"
|
|
$ISCSIADM -m node -U all > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
stat_fail
|
|
exit 6
|
|
else
|
|
stat_done
|
|
fi
|
|
fi
|
|
|
|
stat_busy "Stopping Open-iSCSI daemon"
|
|
[ -f $PIDFILE ] && kill -9 `cat $PIDFILE` &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
stat_fail
|
|
else
|
|
rm -f $PIDFILE
|
|
killall iscsid > /dev/null
|
|
rm_daemon $DAEMON_NAME
|
|
stat_done
|
|
fi
|
|
;;
|
|
status)
|
|
status "Open-iSCSI status"
|
|
ck_daemon $DAEMON_NAME
|
|
status "Available portals on node"
|
|
echo
|
|
echo -ne " "
|
|
/sbin/iscsiadm -m node
|
|
echo
|
|
status "Connected portals for this session"
|
|
echo
|
|
echo -ne " "
|
|
/sbin/iscsiadm -m session
|
|
echo
|
|
;;
|
|
statusv)
|
|
status "Open-iSCSI status"
|
|
ck_daemon $DAEMON_NAME
|
|
status "Detailed session info"
|
|
echo
|
|
$ISCSIADM -m session -P 2
|
|
echo
|
|
;;
|
|
restart)
|
|
$0 stop
|
|
sleep 2
|
|
$0 start
|
|
;;
|
|
*)
|
|
echo "usage: $0 {start|stop|status|statusv|restart}"
|
|
;;
|
|
esac
|
|
exit 0
|