Hi, Since: - this bug has been opened for a 3 years - nothing has been done for a month after sending an init script attached to the bug report
I have NMU the package to fix this problem. Note that the NMU has been done in the DELAYED/7 queue, so you have 7 days to do the upload yourself if you do not agree with the changes. I have attached the debdiff of my changes. Last thing: I unfortunately forgot to close this bug in my upload. This will have to be done manually, and I will try to remember to do it in a week of time. Cheers, Thomas
diff -Nru tgt-1.0.17/debian/changelog tgt-1.0.17/debian/changelog --- tgt-1.0.17/debian/changelog 2011-06-21 09:48:54.000000000 +0000 +++ tgt-1.0.17/debian/changelog 2013-05-14 14:35:02.000000000 +0000 @@ -1,3 +1,13 @@ +tgt (1:1.0.17-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Adds an init script: + - Depends: lsb-base + - Adds dh_installinit call in debian/rules + - adds debian/init + + -- Thomas Goirand <z...@debian.org> Thu, 11 Apr 2013 23:25:08 +0800 + tgt (1:1.0.17-1) unstable; urgency=low * New upstream release. diff -Nru tgt-1.0.17/debian/control tgt-1.0.17/debian/control --- tgt-1.0.17/debian/control 2011-06-21 13:55:45.000000000 +0000 +++ tgt-1.0.17/debian/control 2013-05-14 14:34:21.000000000 +0000 @@ -9,7 +9,7 @@ Package: tgt Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, libconfig-general-perl, sg3-utils +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base, libconfig-general-perl, sg3-utils Description: Linux SCSI target user-space tools The Linux target framework (tgt) allows a Linux system to provide SCSI devices (targets) over networked SCSI transports. diff -Nru tgt-1.0.17/debian/init tgt-1.0.17/debian/init --- tgt-1.0.17/debian/init 1970-01-01 00:00:00.000000000 +0000 +++ tgt-1.0.17/debian/init 2013-05-14 14:51:08.000000000 +0000 @@ -0,0 +1,178 @@ +#!/bin/bash +### BEGIN INIT INFO +# Provides: tgtd +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Should-Start: zfs +# Should-Stop: zfs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: iscsi target daemon +# Description: iscsi target daemon +### END INIT INFO + +DESC="target framework daemon" +NAME=tgtd +DAEMON=/usr/sbin/${NAME} + +TGTD_CONFIG=/etc/tgt/targets.conf + +TASK=$1 + +. /lib/lsb/init-functions + +[ -x $DAEMON ] || exit 0 + +start() +{ + log_daemon_msg "Starting $DESC" "$NAME" + # Start tgtd first. + tgtd &>/dev/null + RETVAL=$? + if [ "$RETVAL" -ne 0 ] ; then + log_end_msg 1 + exit 1 + else + log_end_msg 0 + fi + # Put tgtd into "offline" state until all the targets are configured. + # We don't want initiators to (re)connect and fail the connection + # if it's not ready. + tgtadm --op update --mode sys --name State -v offline + # Configure the targets. + tgt-admin -e -c $TGTD_CONFIG + # Put tgtd into "ready" state. + tgtadm --op update --mode sys --name State -v ready +} + +stop() +{ + if [ "$RUNLEVEL" == 0 -o "$RUNLEVEL" == 6 ] ; then + forcedstop + fi + log_daemon_msg "Stopping $DESC" "$NAME" + # Remove all targets. It only removes targets which are not in use. + tgt-admin --update ALL -c /dev/null &>/dev/null + # tgtd will exit if all targets were removed + tgtadm --op delete --mode system &>/dev/null + RETVAL=$? + if [ "$RETVAL" -eq 107 ] ; then + if [ "$TASK" != "restart" ] ; then + log_end_msg 1 + exit 1 + else + log_end_msg 0 + fi + elif [ "$RETVAL" -ne 0 ] ; then + log_end_msg 1 + echo "Some initiators are still connected - could not stop tgtd" + exit 2 + else + log_end_msg 0 + fi + echo -n +} + +forcedstop() +{ + # NOTE: Forced shutdown of the iscsi target may cause data corruption + # for initiators that are connected. + echo "Force-stopping target framework daemon" + # Offline everything first. May be needed if we're rebooting, but + # expect the initiators to reconnect cleanly when we boot again + # (i.e. we don't want them to reconnect to a tgtd which is still + # working, but the target is gone). + tgtadm --op update --mode sys --name State -v offline &>/dev/null + RETVAL=$? + if [ "$RETVAL" -eq 107 ] ; then + echo "tgtd is not running" + [ "$TASK" != "restart" ] && exit 1 + else + tgt-admin --offline ALL + # Remove all targets, even if they are still in use. + tgt-admin --update ALL -c /dev/null -f + # It will shut down tgtd only after all targets were removed. + tgtadm --op delete --mode system + RETVAL=$? + if [ "$RETVAL" -ne 0 ] ; then + echo "Failed to shutdown tgtd" + exit 1 + fi + fi + echo -n +} + +reload() +{ + log_daemon_msg "Reloading configuration of $DESC" "$NAME" + # Update configuration for targets. Only targets which + # are not in use will be updated. + tgt-admin --update ALL -c $TGTD_CONFIG &>/dev/null + RETVAL=$? + if [ "$RETVAL" -eq 107 ] ; then + log_end_msg 1 + echo "tgtd is not running" + exit 1 + fi + log_end_msg 0 +} + +forcedreload() +{ + log_daemon_msg "Forced-reload configuration of $DESC" "$NAME" + # Update configuration for targets, even those in use. + tgt-admin --update ALL -f -c $TGTD_CONFIG &>/dev/null + RETVAL=$? + if [ "$RETVAL" -eq 107 ] ; then + log_end_msg 1 + echo "tgtd is not running" + exit 1 + else + log_end_msg 0 + fi +} + +status() +{ + # Don't name this script "tgtd"... + TGTD_PROC=$(ps -C tgtd | grep -c tgtd) + if [ "$TGTD_PROC" -eq 2 ] ; then + echo "tgtd is running. Run 'tgt-admin -s' to see detailed target info." + else + echo "tgtd is NOT running." + fi +} + +case $1 in + start) + start + ;; + stop) + stop + ;; + forcedstop) + forcedstop + ;; + restart) + TASK=restart + stop && start + ;; + forcedrestart) + TASK=restart + forcedstop && start + ;; + reload) + reload + ;; + force-reload) + forcedreload + ;; + status) + status + ;; + *) + echo "Usage: $0 {start|stop|forcedstop|restart|forcedrestart|reload|force-reload|status}" + exit 2 + ;; +esac + diff -Nru tgt-1.0.17/debian/rules tgt-1.0.17/debian/rules --- tgt-1.0.17/debian/rules 2011-06-21 09:48:54.000000000 +0000 +++ tgt-1.0.17/debian/rules 2013-05-14 14:29:34.000000000 +0000 @@ -42,6 +42,7 @@ dh_testroot dh_installchangelogs dh_installdocs + dh_installinit dh_link dh_strip dh_compress