On Wed, Sep 04, 2013 at 03:47:26PM -0700, Ethan Jackson wrote:
> > I wonder whether it makes sense to speak of 'cr' as being "guarded" by
> > anything.  Most of the data that its users really look at, notably
> > 'priority' and 'match', is immutable.  It is inserted into a
> > classifier at construction time, and removed at destruction time, and
> > other changes to the classifier can change 'hmap_node' and 'list', but
> > few of the users really care:
> 
> Good point I changed it.
> 
> > Marking 'flow_cookie' as OVS_GUARDED, as I imagine it should be, makes
> > tons of new Clang warnings pop up:
> 
> As discussed off-list, you're right that ideally it should be, but
> it's going to be a bit of a pain to get the thread safety to play
> nicely with us here.  In my judgement it was cleaner just to skip it.
> Since it's pretty much impossible for a thread to get access to a rule
> without taking it's rdlock, I think we're good.
> 
> I fixed up that comment so it reads as below:
> 
>     /* The rwlock is used to protect those elements in struct rule which are
>      * accessed by multiple threads.  While maintaining a pointer to struct
>      * rule, threads are required to hold a readlock.  The main ofproto code 
> is
>      * guaranteed not to evict the rule, or change any of the elements 
> "Guarded
>      * by rwlock" without holding the writelock.
>      *
>      * A rule will not be evicted unless both its own and its classifier's
>      * write locks are held.  Therefore, while holding a classifier readlock,
>      * one can be assured that write locked rules are safe to reference. */
> 
> I can resend the patch if you'd like.

No need, I wanted to make sure that you had considered these issues
but you reassured me.

Acked-by: Ben Pfaff <b...@nicira.com>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to