From f1ad4b4ad79e5c3db55fc12826ab19983b03b2e7 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 15 Mar 2010 13:16:35 +0000 Subject: 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 --- tools/hotplug/Linux/network-bridge | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tools/hotplug') 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 -- cgit v1.2.3