[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