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:
parent
862e9781d4
commit
940e58bf3f
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user