Mailing List Archive

[xen-unstable] hotplug: Avoid race condition when creating or destroying network bridges
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1268658995 0
# Node ID 9300248eaad2f82f997c06ae7305b50c85298751
# Parent 4152a3ce90a76c96b6c7540271595793ba510df2
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>
---
tools/hotplug/Linux/network-bridge | 10 ++++++++++
1 files changed, 10 insertions(+)

diff -r 4152a3ce90a7 -r 9300248eaad2 tools/hotplug/Linux/network-bridge
--- a/tools/hotplug/Linux/network-bridge Thu Mar 11 17:40:35 2010 +0000
+++ b/tools/hotplug/Linux/network-bridge Mon Mar 15 13:16:35 2010 +0000
@@ -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

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog