From 17264ee6a66dd60f9af1aa3a737b17f290fc7e19 Mon Sep 17 00:00:00 2001 From: Chet Burgess Date: Tue, 17 Nov 2015 11:55:55 -0800 Subject: [PATCH] ebtables/libvirt workaround Idealy nova is run with libvirt 1.2.11 or later to guarantee that libvirt is calling ebtables with --concurrent. Since we can't always guarantee this we have created this workaround. The workaround is extremely hacky and not recommend but for those who simply have no other way to address this bug the following should be done. * Copy /sbin/ebtables to /sbin/ebtables.real * Copy the ebtables.workaround script to /sbin/ebtables Caution: Future OS level updates and packages way overwrite the above changes. Its recommend users upgrade to libvirt 1.2.11. The work around script was copied from devstack and originally written by sdague. Change-Id: Icdffc59d68b73a6df22ce138558d6e23e1c96336 Closes-Bug: #1501366 --- tools/ebtables.workaround | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 tools/ebtables.workaround diff --git a/tools/ebtables.workaround b/tools/ebtables.workaround new file mode 100644 index 000000000000..4c1d8ed81b08 --- /dev/null +++ b/tools/ebtables.workaround @@ -0,0 +1,35 @@ +#!/bin/bash +# +# Copyright 2015 Hewlett-Packard Development Company, L.P. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# +# This is a terrible, terrible, truly terrible work around for +# environments that have libvirt < 1.2.11. ebtables requires that you +# specifically tell it you would like to not race and get punched in +# the face when 2 run at the same time with a --concurrent flag. +# +# INSTALL instructions +# +# * Copy /sbin/ebtables to /sbin/ebtables.real +# * Copy the ebtables.workaround script to /sbin/ebtables +# +# Note: upgrades to ebtables will overwrite this work around. If you +# are packaging this file consider putting a trigger in place so that +# the workaround is replaced after ebtables upgrade. +# +# Additional Note: this file can be removed from nova once our libvirt +# minimum is >= 1.2.11. + +flock -w 300 /var/lock/ebtables.nova /sbin/ebtables.real $@