aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-03-15 13:16:35 +0000
committerKeir Fraser <keir.fraser@citrix.com>2010-03-15 13:16:35 +0000
commitf1ad4b4ad79e5c3db55fc12826ab19983b03b2e7 (patch)
tree1b9fb4b14f7e6164d629d0cfb7492efb517c3e42
parente03337ee2469d695322bc1b77f5af751c13a0486 (diff)
downloadxen-f1ad4b4ad79e5c3db55fc12826ab19983b03b2e7.tar.gz
xen-f1ad4b4ad79e5c3db55fc12826ab19983b03b2e7.tar.bz2
xen-f1ad4b4ad79e5c3db55fc12826ab19983b03b2e7.zip
hotplug: Avoid race condition when creating or destroying network bridges
I saw the following message when I created or destroyed two bridges by using network-bridge script at same time. Of course names of the bridges are different. But, a temporal name "tmpbridge" is used by the script to create or destroy the bridges. I think that the message was shown by "tmpbridge". SIOCSIFNAME: File exists This patch avoids race condition when creating or destroying the bridges. Signed-off-by: Masaki Kanno <kanno.masaki@jp.fujitsu.com>
-rw-r--r--tools/hotplug/Linux/network-bridge10
1 files changed, 10 insertions, 0 deletions
diff --git a/tools/hotplug/Linux/network-bridge b/tools/hotplug/Linux/network-bridge
index 676b6a62fd..d47c7b2b5c 100644
--- a/tools/hotplug/Linux/network-bridge
+++ b/tools/hotplug/Linux/network-bridge
@@ -50,8 +50,10 @@
dir=$(dirname "$0")
+. "$dir/logging.sh"
. "$dir/xen-script-common.sh"
. "$dir/xen-network-common.sh"
+. "$dir/locking.sh"
findCommand "$@"
evalVariables "$@"
@@ -219,6 +221,8 @@ op_start () {
return
fi
+ claim_lock "network-bridge"
+
create_bridge ${tdev}
preiftransfer ${netdev}
@@ -249,6 +253,8 @@ op_start () {
if [ ${antispoof} = 'yes' ] ; then
antispoofing
fi
+
+ release_lock "network-bridge"
}
op_stop () {
@@ -259,6 +265,8 @@ op_stop () {
return
fi
+ claim_lock "network-bridge"
+
transfer_addrs ${bridge} ${pdev}
if ! ifdown ${bridge}; then
get_ip_info ${bridge}
@@ -274,6 +282,8 @@ op_stop () {
do_ifup ${netdev}
brctl delbr ${tdev}
+
+ release_lock "network-bridge"
}
# adds $dev to $bridge but waits for $dev to be in running state first