[Pkg-voip-commits] [dahdi-tools] 35/285: astribank_hook: startup lock and more

tzafrir at debian.org tzafrir at debian.org
Thu Jul 7 19:18:24 UTC 2016


This is an automated email from the git hooks/post-receive script.

tzafrir pushed a commit to branch master
in repository dahdi-tools.

commit f2152481e9fc0ed328a7e2c57b1e9e4f6d2726e1
Author: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
Date:   Thu Jul 21 13:40:18 2011 +0000

    astribank_hook: startup lock and more
    
    * Silently exit right away if user did not set XPP_HOTPLUG_DAHDI.
    * Only one Astribank should be allowed to run the startup script:
      - Protect that section with a "lock" (symlinking a file).
      - Sadly we can't rely on /run and may have to wait for a r/w file-system.
      - And thus even this waiting needs to be run in the background
        as to not hold udev.
    
    Signed-off-by: Tzafrir Cohen <tzafrir.cohen at xorcom.com>
    
    git-svn-id: http://svn.astersk.org/svn/dahdi/tools/trunk@10068 17933a7a-c749-41c5-a318-cba88f637d49
---
 xpp/astribank_hook | 48 +++++++++++++++++++++++++++++++++++-------------
 1 file changed, 35 insertions(+), 13 deletions(-)

diff --git a/xpp/astribank_hook b/xpp/astribank_hook
index ae38635..074ea31 100755
--- a/xpp/astribank_hook
+++ b/xpp/astribank_hook
@@ -27,6 +27,10 @@ else
 	dahdi_conf="/etc/dahdi"
 fi
 
+if [ "$XPP_HOTPLUG_DAHDI" != yes ]; then
+	exit 0
+fi
+
 export XPPORDER_CONF="$dahdi_conf/xpp_order"
 if [ ! -r "$XPPORDER_CONF" ]; then
 	(
@@ -62,26 +66,24 @@ matched_devices() {
 
 NUM_WANTED=`clean_lines | sed '/^$/d' | wc -l`
 NUM_GOOD=`matched_devices | wc -l`
+LOCK="/var/lock/twinstar_startup"
 
 start_dahdi() {
 	script=/etc/init.d/dahdi
-	if [ "$XPP_HOTPLUG_DAHDI" = yes ]; then
-		echo "Starting $script."
-		"$script" start | logger -i -t "$script"
-		status=$?
-		echo "Status($script): $status"
-	else
-		echo "$0: Skip($script): No XPP_HOTPLUG_DAHDI=yes in /etc/dahdi/init.conf"
-		exit 0
-	fi
+	echo "Starting $script."
+	"$script" start | logger -i -t "$script"
+	status=$?
+	echo "Status($script): $status"
 	if [ -x "$dir/twinstar_hook" ]; then
 		"$dir/twinstar_hook"
 	fi
 	# Finished astribanks
 	echo "Removing semaphore"
 	astribank_is_starting -v -r
+	rm -f "$LOCK"
 }
 
+#echo "$0: $ACTION($XBUS_NAME)" | $LOGGER
 case "$ACTION" in
 add)
 	;;
@@ -90,9 +92,28 @@ remove)
 online)
 	echo "$ACTION($XBUS_NAME): $NUM_GOOD/$NUM_WANTED from $XPPORDER_CONF" | $LOGGER
 	if [ "$NUM_GOOD" -eq "$NUM_WANTED" ]; then
-		echo "START-DAHDI: Total $NUM_GOOD online." | $LOGGER
-		# Fork services
-		start_dahdi < /dev/null 2>&1 | $LOGGER &
+		(
+			# Delay the initialization of the Astribank until the filesystem
+			# is mounted read-write:
+			test_file="/var/lock/astribank_test_file"
+			for i in `seq 1 20`; do
+				if touch $test_file 2> /dev/null; then
+					rm -f $test_file
+					break
+				else
+					echo "$0: [$i] - Failed writing '$test_file'...waiting" | $LOGGER
+					sleep 1;
+				fi
+		        done
+
+			if ln -s "$XBUS_NAME" "$LOCK"; then
+				echo "START-DAHDI: Total $NUM_GOOD online." | $LOGGER
+				# Fork services
+				start_dahdi < /dev/null 2>&1 | $LOGGER
+			else
+				echo "$0: Was started: $(ls -l $LOCK)" | $LOGGER
+			fi
+		) < /dev/null 2>&1 | $LOGGER &
 	fi
 	;;
 offline)
@@ -100,8 +121,9 @@ offline)
 	if [ "$NUM_GOOD" -eq 0 ]; then
 		echo "All Astribanks offline" | $LOGGER
 		if [ -x "$dir/twinstar_hook" ]; then
-			"$dir/twinstar_hook"
+			"$dir/twinstar_hook" || :
 		fi
+		rm -f "$LOCK"
 	fi
 	;;
 *)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/dahdi-tools.git



More information about the Pkg-voip-commits mailing list