> This annotation would have caught the bug fixed by commit 491a67a0005347130 > (ofproto-dpif-xlate: Avoid recursive acquisition of xlate_rwlock.).
looks good to me. unless there's a more generic way to detect recursive read-lock. (i don't know) YAMAMOTO Takashi > > Signed-off-by: Ben Pfaff <b...@nicira.com> > CC: YAMAMOTO Takashi <yamam...@valinux.co.jp> > --- > ofproto/ofproto-dpif-xlate.c | 1 + > ofproto/ofproto-dpif.h | 8 ++++++-- > 2 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c > index 4747ea7..b5b6171 100644 > --- a/ofproto/ofproto-dpif-xlate.c > +++ b/ofproto/ofproto-dpif-xlate.c > @@ -2999,6 +2999,7 @@ actions_output_to_local_port(const struct xlate_ctx > *ctx) > /* Thread safe call to xlate_actions__(). */ > void > xlate_actions(struct xlate_in *xin, struct xlate_out *xout) > + OVS_EXCLUDED(xlate_rwlock) > { > ovs_rwlock_rdlock(&xlate_rwlock); > xlate_actions__(xin, xout); > diff --git a/ofproto/ofproto-dpif.h b/ofproto/ofproto-dpif.h > index 51cb38f..5da0b5d 100644 > --- a/ofproto/ofproto-dpif.h > +++ b/ofproto/ofproto-dpif.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc. > +/* Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -34,6 +34,9 @@ struct dpif_backer; > struct OVS_LOCKABLE rule_dpif; > struct OVS_LOCKABLE group_dpif; > > +/* For lock annotation below only. */ > +extern struct ovs_rwlock xlate_rwlock; > + > /* Ofproto-dpif -- DPIF based ofproto implementation. > * > * Ofproto-dpif provides an ofproto implementation for those platforms which > @@ -107,7 +110,8 @@ bool vsp_adjust_flow(const struct ofproto_dpif *, struct > flow *); > > int ofproto_dpif_execute_actions(struct ofproto_dpif *, const struct flow *, > struct rule_dpif *, const struct ofpact *, > - size_t ofpacts_len, struct ofpbuf *); > + size_t ofpacts_len, struct ofpbuf *) > + OVS_EXCLUDED(xlate_rwlock); > void ofproto_dpif_send_packet_in(struct ofproto_dpif *, > struct ofproto_packet_in *); > int ofproto_dpif_send_packet(const struct ofport_dpif *, struct ofpbuf *); > -- > 1.7.10.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev