These would have found the problem fixed in commit
c7be3f559349 (connmgr:
Fix attempt to take mutex recursively when exiting fail-open.).
Signed-off-by: Ben Pfaff <blp@nicira.com>
OVS_REQUIRES(ofproto_mutex);
static struct ofconn *find_controller_by_target(struct connmgr *,
const char *target);
OVS_REQUIRES(ofproto_mutex);
static struct ofconn *find_controller_by_target(struct connmgr *,
const char *target);
-static void update_fail_open(struct connmgr *);
+static void update_fail_open(struct connmgr *) OVS_EXCLUDED(ofproto_mutex);
static int set_pvconns(struct pvconn ***pvconnsp, size_t *n_pvconnsp,
const struct sset *);
static int set_pvconns(struct pvconn ***pvconnsp, size_t *n_pvconnsp,
const struct sset *);
static void
update_fail_open(struct connmgr *mgr)
static void
update_fail_open(struct connmgr *mgr)
+ OVS_EXCLUDED(ofproto_mutex)
{
if (connmgr_has_controllers(mgr)
&& mgr->fail_mode == OFPROTO_FAIL_STANDALONE) {
{
if (connmgr_has_controllers(mgr)
&& mgr->fail_mode == OFPROTO_FAIL_STANDALONE) {
* controller, exits fail open mode. */
void
fail_open_maybe_recover(struct fail_open *fo)
* controller, exits fail open mode. */
void
fail_open_maybe_recover(struct fail_open *fo)
+ OVS_EXCLUDED(ofproto_mutex)
{
if (fail_open_is_active(fo)
&& connmgr_is_any_controller_admitted(fo->connmgr)) {
{
if (fail_open_is_active(fo)
&& connmgr_is_any_controller_admitted(fo->connmgr)) {
static void
fail_open_recover(struct fail_open *fo)
static void
fail_open_recover(struct fail_open *fo)
+ OVS_EXCLUDED(ofproto_mutex)
/* Destroys 'fo'. */
void
fail_open_destroy(struct fail_open *fo)
/* Destroys 'fo'. */
void
fail_open_destroy(struct fail_open *fo)
+ OVS_EXCLUDED(ofproto_mutex)
{
if (fo) {
if (fail_open_is_active(fo)) {
{
if (fo) {
if (fail_open_is_active(fo)) {
}
struct fail_open *fail_open_create(struct ofproto *, struct connmgr *);
}
struct fail_open *fail_open_create(struct ofproto *, struct connmgr *);
-void fail_open_destroy(struct fail_open *);
+void fail_open_destroy(struct fail_open *) OVS_EXCLUDED(ofproto_mutex);
void fail_open_wait(struct fail_open *);
bool fail_open_is_active(const struct fail_open *);
void fail_open_run(struct fail_open *);
void fail_open_wait(struct fail_open *);
bool fail_open_is_active(const struct fail_open *);
void fail_open_run(struct fail_open *);
-void fail_open_maybe_recover(struct fail_open *);
-void fail_open_flushed(struct fail_open *);
+void fail_open_maybe_recover(struct fail_open *) OVS_EXCLUDED(ofproto_mutex);
+void fail_open_flushed(struct fail_open *) OVS_EXCLUDED(ofproto_mutex);