1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-26 18:50:30 +03:00

config: let 13.per_ip_routing use a flock for generate_auto_link_local()

metze

(This used to be ctdb commit dc2d0d0e559308ad2676f9ad973746c147d65eb9)
This commit is contained in:
Stefan Metzmacher 2010-02-26 12:41:21 +01:00
parent 862e9781d4
commit 940e58bf3f

View File

@ -185,19 +185,51 @@ generate_auto_link_local()
local _line="$_ip $_netip/$_maskbits"
local _config=`cat $CTDB_PER_IP_ROUTING_CONF 2>/dev/null`
local _lockfile="$CTDB_PER_IP_ROUTING_CONF.lock"
local _script="$CTDB_PER_IP_ROUTING_CONF.$$.sh"
local _exact=`echo -n "$_config" | grep "^$line$" | wc -l | xargs`
echo "#!/bin/sh" > $_script
echo "#" >> $_script
echo "" >> $_script
echo "_config=\`cat $CTDB_PER_IP_ROUTING_CONF 2>/dev/null\`" >> $_script
echo "_exact=\`echo -n \"\$_config\" | grep \"^$_line\$\" | wc -l | xargs\`" >> $_script
echo "" >> $_script
test x"$_exact" = x"1" && {
return 0;
echo "test x\"\$_exact\" = x\"1\" && {" >> $_script
echo " exit 0;" >> $_script
echo "}" >> $_script
echo "" >> $_script
echo "_tmp=\"$CTDB_PER_IP_ROUTING_CONF.$$.tmp\"" >> $_script
echo "echo -n \"\$_config\" | grep -v \"^$_ip \" | cat > \$_tmp || {" >> $_script
echo " echo \"echo -n \\\"\$_config\\\" | grep -v \\\"^$_ip \\\" > \$_tmp - failed\"" >> $_script
echo " exit 1;" >> $_script
echo "}" >> $_script
echo "echo \"$_line\" >> \$_tmp || {" >> $_script
echo " echo \"echo \\\"$_line\\\" >> \$_tmp - failed\"" >> $_script
echo " exit 1;" >> $_script
echo "}" >> $_script
echo "" >> $_script
echo "mv \$_tmp $CTDB_PER_IP_ROUTING_CONF || {" >> $_script
echo " echo \"mv \$_tmp $CTDB_PER_IP_ROUTING_CONF - failed\"" >> $_script
echo " exit 1;" >> $_script
echo "}" >> $_script
echo "" >> $_script
echo "echo \"Added '$_line' to $CTDB_PER_IP_ROUTING_CONF\"">> $_script
echo "exit 0" >> $_script
chmod +x $_script
test -f $_lockfile || {
touch $_lockfile
}
local _tmp="$CTDB_PER_IP_ROUTING_CONF.$$.tmp"
echo -n "$_config" | grep -v "^$_ip " > $_tmp
echo "$_line" >> $_tmp
mv $_tmp $CTDB_PER_IP_ROUTING_CONF
flock --timeout 30 $_lockfile $_script
ret=$?
rm $_script
return $ret
}
generate_per_ip_routing()