On Nov 13, 2014, at 5:11 PM, Ben Pfaff <b...@nicira.com> wrote: > On Thu, Nov 13, 2014 at 11:56:14AM -0800, Jarno Rajahalme wrote: >> Previously, accurate iteration required writers to be excluded during >> iteration. This patch adds an rculist to struct cls_subtable, and a >> corresponding list node to struct cls_rule, which makes iteration more >> straightforward, and allows the iterators to remain ignorant of the >> internals of the cls_match. This new list allows 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. More specifically, an concurrent iterator: >> >> - May or may not see a rule that is being inserted or removed. >> - Will see either the new or the old version of a rule that is replaced. >> - Will see all the other rules (that are not being modified). >> >> Finally, The subtable's rculist also allows to make >> classifier_rule_overlaps() lockless, which this patch also does. >> >> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> > > Thanks, this is nice! > >> /* A set of rules that all have the same fields wildcarded. */ >> struct cls_subtable { >> - /* The fields are only used by writers and iterators. */ >> - struct cmap_node cmap_node; /* Within struct classifier >> 'subtables_map'. */ >> - >> - /* The fields are only used by writers. */ >> + /* These fields are only used by writers. */ >> + struct cmap_node cmap_node OVS_GUARDED; /* Within struct classifier's >> + * 'subtables_map'. */ > > If cmap_node is only used by writers (which have to have mutual > exclusion), then it's questionable whether a cmap is the right data > structure, since the main advantage of a cmap is to allow search and > iterate to operate concurrently with modification. But it looks like > classifier_find_rule_exactly(), which is not a write operation, also > uses the cmap_node. >
I resolved this by moving the comment to the line after the ‘cmap_node’ member. > Otherwise: > Acked-by: Ben Pfaff <b...@nicira.com> Thanks! Pushing in a moment, Jarno _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev