> Now that all the relevant classifier structures use RCU and internal > mutual exclusion for modifications, we can remove the fat-rwlock and > thus make the classifier lookups lockless. > > As the readers are operating concurrently with the writers, a > concurrent reader may or may not see a new rule being added by a > writer, depending on how the concurrent events overlap with each > other. Overall, this is no different from the former locked behavior, > but there the visibility of the new rule only depended on the timing > of the locking functions. > > A new rule is first added to the segment indices, so the readers may > find the rule in the indices before the rule is visible in the > subtables 'rules' map. This may result in us losing the opportunity > to quit lookups earlier, resulting in sub-optimal wildcarding. This > will be fixed by forthcoming revalidation always scheduled after flow > table changes. > > Similar behavior may happen due to us removing the overlapping rule > (if any) from the indices only after the corresponding new rule has > been added. > > The subtable's max priority is updated only after a rule is inserted > to the maps, so the concurrent readers may not see the rule, as the > updated priority ordered subtable list will only be visible after the > subtable's max priority is updated. > > Similarly, the classifier's partitions are updated by the caller after > the rule is inserted to the maps, so the readers may keep skipping the > subtable until they see the updated partitions. > > Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>
comments in ofproto-provider.h need an update. otherwise, looks good to me. how about unifying classifier and cls_classifier? Acked-by: YAMAMOTO Takashi <yamam...@valinux.co.jp> _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev