On Oct 30, 2014, at 3:38 PM, Ben Pfaff <b...@nicira.com> wrote:

> On Tue, Oct 28, 2014 at 07:05:01PM -0700, Jarno Rajahalme wrote:
>> 
>>> On Oct 28, 2014, at 4:36 PM, Ben Pfaff <b...@nicira.com> wrote:
>>> 
>>>> 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?
>> 
>> Yes :-)
> 
> The conjunctive match series uses the list of lower-priority rules in
> lookup.  I think that this patch, as-is, would make that a lot more
> expensive, because it's no longer cheap to tell whether the next rule
> in the list has the same match.  I guess one could still mark
> boundaries somehow; do you have an idea?

Will have to think about this. However, I totally missed this in my review of 
the conjunctive match; as the lower-priority rules list is not yet RCU, it 
cannot be safely used on lookups. It should be sufficient to convert from 
struct list in struct cls_match to struct rculist, tough.

  Jarno


_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to