# bridge to /etc/ethers.
TARGET_BRIDGE="br0"
DAEMON_PID_FILE="/var/run/dnsmasq.pid"
+
+# In order to handle concurrent execution of this lock, we use the $LOCKFILE.
+# LOCKFILE_CREATE and LOCKFILE_REMOVE are the path names for the lockfile-progs
+# programs which we use as helpers.
LOCKFILE="/var/lock/ganeti_ethers.lock"
-LOCKTIMEOUT=10
-LOCKSLEEP=2
+LOCKFILE_CREATE="/usr/bin/lockfile-create"
+LOCKFILE_REMOVE="/usr/bin/lockfile-remove"
hooks_path=$GANETI_HOOKS_PATH
[ -n "$hooks_path" ] || exit 1
nic_count=$GANETI_INSTANCE_NIC_COUNT
acquire_lockfile() {
- NOW=$(date +%s)
- TIMEOUT=$(($NOW + $LOCKTIMEOUT))
- while ! ( set -o noclobber; echo "$$" > $LOCKFILE) 2> /dev/null ; do
- NOW=$(date +%s)
- if [ $NOW -ge $TIMEOUT ]; then
- logger -s "Cannot acquire lockfile for ethers update, giving up"
- exit 1
- fi
- logger -s "Cannot acquire lockfile for ethers update, waiting"
- sleep $LOCKSLEEP
- done
- trap "rm -f $LOCKFILE" EXIT
+ $LOCKFILE_CREATE -l $LOCKFILE || exit 1
+ trap "$LOCKFILE_REMOVE -l $LOCKFILE" EXIT
}
update_ethers_from_new() {