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