xref: /OK3568_Linux_fs/yocto/meta-openembedded/meta-networking/recipes-extended/tgt/files/tgtd.init (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/sh
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun### BEGIN INIT INFO
4*4882a593Smuzhiyun# Provides: tgtd
5*4882a593Smuzhiyun# Required-Start: $remote_fs $network $syslog
6*4882a593Smuzhiyun# Required-Stop: $remote_fs $syslog
7*4882a593Smuzhiyun# Default-Start:     3 5
8*4882a593Smuzhiyun# Default-Stop:      0 1 2 6
9*4882a593Smuzhiyun# Short-Description: SCSI target daemon
10*4882a593Smuzhiyun# Description: Linux SCSI target framework (tgt)
11*4882a593Smuzhiyun### END INIT INFO
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunDESC="tgtd"
14*4882a593SmuzhiyunDAEMON="/usr/sbin/tgtd"
15*4882a593SmuzhiyunTGTD_CONFIG=/etc/tgt/targets.conf
16*4882a593Smuzhiyun
17*4882a593Smuzhiyunstart ()
18*4882a593Smuzhiyun{
19*4882a593Smuzhiyun    echo -n "Starting $DESC..."
20*4882a593Smuzhiyun
21*4882a593Smuzhiyun    # Ensure service isn't running
22*4882a593Smuzhiyun    tgt-admin -s >/dev/null 2>&1
23*4882a593Smuzhiyun    RETVAL=$?
24*4882a593Smuzhiyun    if [ "$RETVAL" -ne 107 ] ; then
25*4882a593Smuzhiyun        echo "$DESC is already running."
26*4882a593Smuzhiyun        exit 1
27*4882a593Smuzhiyun    fi
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun    # Start tgtd first
30*4882a593Smuzhiyun    $DAEMON &>/dev/null
31*4882a593Smuzhiyun    RETVAL=$?
32*4882a593Smuzhiyun    if [ "$RETVAL" -ne 0 ]; then
33*4882a593Smuzhiyun        echo "failed."
34*4882a593Smuzhiyun        exit 1
35*4882a593Smuzhiyun    fi
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun    # Put tgtd into "offline" state until all the targets are configured.
38*4882a593Smuzhiyun    # We don't want initiators to (re)connect and fail the connection
39*4882a593Smuzhiyun    # if it's not ready.
40*4882a593Smuzhiyun    tgtadm --op update --mode sys --name State -v offline
41*4882a593Smuzhiyun    # Configure the targets.
42*4882a593Smuzhiyun    tgt-admin -f -e -c $TGTD_CONFIG
43*4882a593Smuzhiyun    # Put tgtd into "ready" state.
44*4882a593Smuzhiyun    tgtadm --op update --mode sys --name State -v ready
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun    echo "done."
47*4882a593Smuzhiyun}
48*4882a593Smuzhiyun
49*4882a593Smuzhiyunstop ()
50*4882a593Smuzhiyun{
51*4882a593Smuzhiyun    echo -n "Stopping $DESC..."
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun    # Remove all targets. It only removes targets which are not in use.
54*4882a593Smuzhiyun    tgt-admin --update ALL -c /dev/null &>/dev/null
55*4882a593Smuzhiyun    # tgtd will exit if all targets were removed
56*4882a593Smuzhiyun    tgtadm --op delete --mode system &>/dev/null
57*4882a593Smuzhiyun    RETVAL=$?
58*4882a593Smuzhiyun    if [ "$RETVAL" -eq 107 ] ; then
59*4882a593Smuzhiyun        if [ "$TASK" != "restart" ] ; then
60*4882a593Smuzhiyun            return 1
61*4882a593Smuzhiyun        fi
62*4882a593Smuzhiyun    elif [ "$RETVAL" -ne 0 ] ; then
63*4882a593Smuzhiyun        echo "Some initiators are still connected - could not stop tgtd"
64*4882a593Smuzhiyun        return 2
65*4882a593Smuzhiyun    fi
66*4882a593Smuzhiyun    echo -n
67*4882a593Smuzhiyun}
68*4882a593Smuzhiyun
69*4882a593Smuzhiyunreload()
70*4882a593Smuzhiyun{
71*4882a593Smuzhiyun        echo "Reloading configuration of $DESC" "$NAME"
72*4882a593Smuzhiyun        # Update configuration for targets. Only targets which
73*4882a593Smuzhiyun        # are not in use will be updated.
74*4882a593Smuzhiyun        tgt-admin --update ALL -c $TGTD_CONFIG &>/dev/null
75*4882a593Smuzhiyun        RETVAL=$?
76*4882a593Smuzhiyun        if [ "$RETVAL" -eq 107 ] ; then
77*4882a593Smuzhiyun                echo "tgtd is not running"
78*4882a593Smuzhiyun                exit 1
79*4882a593Smuzhiyun        fi
80*4882a593Smuzhiyun}
81*4882a593Smuzhiyun
82*4882a593Smuzhiyunstatus()
83*4882a593Smuzhiyun{
84*4882a593Smuzhiyun        tgt-admin -s >/dev/null 2>&1
85*4882a593Smuzhiyun	RETVAL=$?
86*4882a593Smuzhiyun        if [ "$RETVAL" -eq 107 ] ; then
87*4882a593Smuzhiyun                echo "tgtd is not running"
88*4882a593Smuzhiyun        else
89*4882a593Smuzhiyun                echo "tgtd is running"
90*4882a593Smuzhiyun        fi
91*4882a593Smuzhiyun}
92*4882a593Smuzhiyun
93*4882a593Smuzhiyuncase "$1" in
94*4882a593Smuzhiyun    start)
95*4882a593Smuzhiyun        start
96*4882a593Smuzhiyun        ;;
97*4882a593Smuzhiyun    stop)
98*4882a593Smuzhiyun        stop
99*4882a593Smuzhiyun        ;;
100*4882a593Smuzhiyun    restart|force-reload)
101*4882a593Smuzhiyun        stop
102*4882a593Smuzhiyun        start
103*4882a593Smuzhiyun        ;;
104*4882a593Smuzhiyun    reload)
105*4882a593Smuzhiyun        reload
106*4882a593Smuzhiyun        ;;
107*4882a593Smuzhiyun    status)
108*4882a593Smuzhiyun        status
109*4882a593Smuzhiyun        ;;
110*4882a593Smuzhiyun    *)
111*4882a593Smuzhiyun        echo "Usage: $0 {start|stop|force-reload|restart|status|reload}"
112*4882a593Smuzhiyun        exit 1
113*4882a593Smuzhiyun        ;;
114*4882a593Smuzhiyunesac
115*4882a593Smuzhiyun
116*4882a593Smuzhiyunexit 0
117