Great, thanks.

On Mon, Jul 07, 2014 at 02:16:29PM -0700, Jarno Rajahalme wrote:
> This small change made the last patch of the original series not
> apply any more, I?ll send a rebased v3 series out in a moment to
> keep things simple. No other changes, so if reviews are underway,
> they should apply as-is.
> 
>   Jarno
> 
> On Jul 7, 2014, at 1:40 PM, Jarno Rajahalme <jrajaha...@nicira.com> wrote:
> 
> > Thanks for the reviews, series pushed with suggested changes (upto this 
> > patch),
> > 
> >  Jarno
> > 
> > On Jul 7, 2014, at 9:47 AM, Ben Pfaff <b...@nicira.com> wrote:
> > 
> >> On Fri, Jul 04, 2014 at 07:21:19AM -0700, Jarno Rajahalme wrote:
> >>> This is a prerequisite step in making the classifier lookups lockless.
> >>> If taking a reference fails, we do the lookup again, as a new (lower
> >>> priority) rule may now match instead.
> >>> 
> >>> Also remove unwildcarding dl_type and nw_frag, as these are already
> >>> taken care of by xlate_actions().
> >>> 
> >>> Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com>
> >> 
> >> I'd be inclined to write the retry loop in rule_dpif_lookup_in_table()
> >> as an actual "do-while" loop.
> > 
> > Yeah, definitely cleaner this way, thanks for the hint:
> > 
> > @@ -3383,20 +3383,15 @@ rule_dpif_lookup_in_table(struct ofproto_dpif 
> > *ofproto, uint8_t table_id,
> >         }
> >     }
> > 
> > -retry:
> > -    fat_rwlock_rdlock(&cls->rwlock);
> > -    cls_rule = classifier_lookup(cls, flow, wc);
> > -    fat_rwlock_unlock(&cls->rwlock);
> > -
> > -    rule = rule_dpif_cast(rule_from_cls_rule(cls_rule));
> > -    if (rule && take_ref) {
> > -        if (!rule_dpif_try_ref(rule)) {
> > -            /* The rule was released before we got the ref, so it
> > -             * cannot be in the classifier any more.  Do another
> > -             * lookup to find another rule, if any. */
> > -            goto retry;
> > -        }
> > -    }
> > +    do {
> > +        fat_rwlock_rdlock(&cls->rwlock);
> > +        cls_rule = classifier_lookup(cls, flow, wc);
> > +        fat_rwlock_unlock(&cls->rwlock);
> > +
> > +        rule = rule_dpif_cast(rule_from_cls_rule(cls_rule));
> > +
> > +        /* Try again if the rule was released before we get the reference. 
> > */
> > +    } while (rule && take_ref && !rule_dpif_try_ref(rule));
> > 
> >     return rule;
> > }
> > 
> > 
> >> 
> >> Acked-by: Ben Pfaff <b...@nicira.com>
> > 
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to