[dahdi-commits] tzafrir: tools/trunk r10068 - /tools/trunk/xpp/astribank_hook
SVN commits to the DAHDI project
dahdi-commits at lists.digium.com
Thu Jul 21 08:40:21 CDT 2011
Author: tzafrir
Date: Thu Jul 21 08:40:18 2011
New Revision: 10068
URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10068
Log:
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>
Modified:
tools/trunk/xpp/astribank_hook
Modified: tools/trunk/xpp/astribank_hook
URL: http://svnview.digium.com/svn/dahdi/tools/trunk/xpp/astribank_hook?view=diff&rev=10068&r1=10067&r2=10068
==============================================================================
--- tools/trunk/xpp/astribank_hook (original)
+++ tools/trunk/xpp/astribank_hook Thu Jul 21 08:40:18 2011
@@ -25,6 +25,10 @@
dahdi_conf="$liveconf"
else
dahdi_conf="/etc/dahdi"
+fi
+
+if [ "$XPP_HOTPLUG_DAHDI" != yes ]; then
+ exit 0
fi
export XPPORDER_CONF="$dahdi_conf/xpp_order"
@@ -62,26 +66,24 @@
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 @@
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 @@
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
;;
*)
More information about the dahdi-commits
mailing list