On Mon, Sep 23, 2013 at 08:09:24PM -0700, Ben Pfaff wrote:
> On Tue, Sep 24, 2013 at 11:41:23AM +0900, YAMAMOTO Takashi wrote:
> > > @@ -1788,26 +1815,21 @@ ofproto_delete_flow(struct ofproto *ofproto,
> > >      struct classifier *cls = &ofproto->tables[0].cls;
> > >      struct rule *rule;
> > >  
> > > +    /* First do a cheap check whether the rule we're looking for has 
> > > already
> > > +     * been deleted.  If so, then we're done. */
> > >      ovs_rwlock_rdlock(&cls->rwlock);
> > >      rule = rule_from_cls_rule(classifier_find_match_exactly(cls, target,
> > >                                                              priority));
> > >      ovs_rwlock_unlock(&cls->rwlock);
> > >      if (!rule) {
> > > -        /* No such rule -> success. */
> > > -        return true;
> > > -    } else if (rule->pending) {
> > > -        /* An operation on the rule is already pending -> failure.
> > > -         * Caller must retry later if it's important. */
> > > -        return false;
> > > -    } else {
> > > -        /* Initiate deletion -> success. */
> > > -        ovs_rwlock_wrlock(&cls->rwlock);
> > > -        ofproto_rule_delete(ofproto, cls, rule);
> > > -        ovs_rwlock_unlock(&cls->rwlock);
> > > -
> > >          return true;
> > >      }
> > >  
> > > +    /* Fall back to a executing a full flow mod.  We can't optimize this 
> > > at all
> > > +     * because we didn't take enough locks above to ensure that the flow 
> > > table
> > > +     * didn't already change beneath us.  */
> > > +    return simple_flow_mod(ofproto, target, priority, NULL, 0,
> > > +                           OFPFC_DELETE_STRICT) != OFPROTO_POSTPONE;
> > >  }
> > 
> > this seems wrong to me.  ofproto_delete_flow is used to remove hidden rules.
> > the new code ends up to use collect_rules_strict which skips hidden rules.
> 
> Good point, thank you.

I sent out a fix:
        http://openvswitch.org/pipermail/dev/2013-September/032100.html
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to