On Fri, Oct 24, 2014 at 01:36:40PM -0700, Jarno Rajahalme wrote:
> Previously, accurate iteration required writers to be excluded during
> iteration.  This patch changes the structure of the classifier by
> moving the list of rules from struct cls_match to struct cls_subtable.
> The list element is also moved from the struct cls_match to struct
> cls_rule, which makes iteration more straightforward, and allows the
> iterators to remain ignorant of the internals of the cls_match.  These
> changes allow iteration of rules in the classifier by traversing the
> RCU-friendly subtables vector, and the rculist of rules in each
> subtable.  Classifier modifications may be performed concurrently, but
> whether or not the concurrent iterator sees those changes depends on
> the timing of change.  This is similar to having writers excluded by a
> mutex, where visibility of changes depends on the timing of mutex
> acquisition.
> 
> The subtable's rculist also allows to make
> classifier_find_rule_exactly() and classifier_rule_overlaps()
> lockless.
> 
> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>

I *think* I follow what's going on here, but just to be sure, let me
try to explain it.  After this patch, the subtable has a list of every
rule in the subtable, as 'rules_list'.  The rules in the list are in
no particular order, except that rules with identical match criteria
are in subsequent positions.  Is that correct?
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to