diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-03-15 13:16:35 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-03-15 13:16:35 +0000 |
commit | f1ad4b4ad79e5c3db55fc12826ab19983b03b2e7 (patch) | |
tree | 1b9fb4b14f7e6164d629d0cfb7492efb517c3e42 | |
parent | e03337ee2469d695322bc1b77f5af751c13a0486 (diff) | |
download | xen-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-bridge | 10 |
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 |