blob: 59bf59b8f49528e3ce59e48dc5362a249bd60bd0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#! /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
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/sbin/iscsid
ADM=/sbin/iscsiadm
PIDFILE=/var/run/iscsid.pid
[ -x "$DAEMON" ] || exit 0
. /lib/lsb/init-functions
if [ ! -d /sys/class/ ]; then
log_failure_msg "iSCSI requires a mounted sysfs, not started."
exit 1
fi
nodestartup_re='s/^node\.conn\[0]\.startup[ ]*=[ ]*//p'
RETVAL=0
start() {
log_daemon_msg "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=$?
log_end_msg $RETVAL
starttargets
}
starttargets() {
log_daemon_msg "Setting up iSCSI targets"
$ADM -m node --loginall=automatic
log_end_msg 0
}
stoptargets() {
log_daemon_msg "Disconnecting iSCSI targets"
sync
$ADM -m node --logoutall=all
RETVAL=$?
log_end_msg $RETVAL
}
stop() {
stoptargets
if [ $RETVAL -ne 0 ]; then
log_failure_msg "Could not stop all targets, try again later"
return $RETVAL
fi
log_daemon_msg "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
log_end_msg $status
}
restart() {
stop
if [ $RETVAL -ne 0 ]; then
log_failure_msg "Stopping iSCSI initiator service failed, not starting"
return $RETVAL
fi
start
}
restarttargets() {
stoptargets
if [ $RETVAL -ne 0 ]; then
log_failure_msg "Could not stop all targets, try again later"
return $RETVAL
fi
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
|