[ovs-dev] [PATCH 2/2] ofproto: Add more thread safety annotations.

Ben Pfaff blp at nicira.com
Fri Jan 10 19:38:06 UTC 2014


Thanks.  I applied this to master.  I improved the commit message to:

    ofproto: Add more thread safety annotations.

    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 at nicira.com>

On Wed, Jan 08, 2014 at 01:13:24PM -0800, Alex Wang wrote:
> Looks good to me,
> 
> 
> On Mon, Nov 25, 2013 at 2:14 PM, Ben Pfaff <blp at nicira.com> wrote:
> 
> > These would have found the problem fixed in the previous patch.
> >
> > Signed-off-by: Ben Pfaff <blp at nicira.com>
> > ---
> >  ofproto/connmgr.c   |    3 ++-
> >  ofproto/fail-open.c |    3 +++
> >  ofproto/fail-open.h |    6 +++---
> >  3 files changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
> > index a062772..cd15e0f 100644
> > --- a/ofproto/connmgr.c
> > +++ b/ofproto/connmgr.c
> > @@ -454,7 +454,7 @@ static void add_controller(struct connmgr *, const
> > char *target, uint8_t dscp,
> >      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 *);
> >
> > @@ -771,6 +771,7 @@ update_in_band_remotes(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) {
> > diff --git a/ofproto/fail-open.c b/ofproto/fail-open.c
> > index bae9dca..9ac80b6 100644
> > --- a/ofproto/fail-open.c
> > +++ b/ofproto/fail-open.c
> > @@ -182,6 +182,7 @@ fail_open_run(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)) {
> > @@ -191,6 +192,7 @@ fail_open_maybe_recover(struct fail_open *fo)
> >
> >  static void
> >  fail_open_recover(struct fail_open *fo)
> > +    OVS_EXCLUDED(ofproto_mutex)
> >  {
> >      struct match match;
> >
> > @@ -250,6 +252,7 @@ fail_open_create(struct ofproto *ofproto, struct
> > connmgr *mgr)
> >  /* Destroys 'fo'. */
> >  void
> >  fail_open_destroy(struct fail_open *fo)
> > +    OVS_EXCLUDED(ofproto_mutex)
> >  {
> >      if (fo) {
> >          if (fail_open_is_active(fo)) {
> > diff --git a/ofproto/fail-open.h b/ofproto/fail-open.h
> > index c8e1f32..725b82d 100644
> > --- a/ofproto/fail-open.h
> > +++ b/ofproto/fail-open.h
> > @@ -40,11 +40,11 @@ is_fail_open_rule(const struct rule *rule)
> >  }
> >
> >  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_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);
> >
> >  #endif /* fail-open.h */
> > --
> > 1.7.10.4
> >
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev
> >



More information about the dev mailing list