On Mon, Nov 03, 2014 at 11:39:04AM -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 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_rule_overlaps() > lockless. > > Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> > --- > v2: Using a separate list element for iteration, split out changes to > individual patches to make review easier.
The patch description seems straightforward: basically, we add a new rculist to allow for robust, lockless iteration. The actual patch is really big and complicated, though. Why? _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev