Shivaprasad Bhat earlier sent patches to fix this problem which added
a call to virNetDevExists() in the conf directory:
https://www.redhat.com/archives/libvir-list/2015-March/msg00397.html (V1)
https://www.redhat.com/archives/libvir-list/2015-March/msg00569.html (V2)
https://www.redhat.com/archives/libvir-list/2015-March/msg01174.html (V3)
https://www.redhat.com/archives/libvir-list/2015-March/msg01297.html (V4)
After discussing it with him a few times (both email and irc), I
decided that the only way to really understand the problems he
described (related to locking) with my counterproposal (do the
checking in the bridge driver itself), was to try fixing it myself. I
do now understand the problems he encountered with locking, but also
found that the instance of the call to the "Find a bridge name and set
it" function that caused the problem was unnecessary (see the commit
message of patch 1).
The first patch here essentially reimplements current functionality
but moving the majority of the code from conf/network_conf.c to
network/bridge_driver.c. The 2nd patch adds the all-important
virNetDevExists() call to the function that is looking for an unused
bridge name.
Laine Stump (2):
network: move auto-assign of bridge name from XML parser to net driver
network: check for bridge name conflict with existing devices
src/conf/network_conf.c | 60 ---------------------------
src/conf/network_conf.h | 9 +----
src/libvirt_private.syms | 2 +-
src/network/bridge_driver.c | 98 ++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 99 insertions(+), 70 deletions(-)
--
2.1.0