On Thu, Aug 08, 2013 at 03:51:05PM -0700, Ben Pfaff wrote:
> On Thu, Aug 08, 2013 at 12:58:31PM -0700, Ethan Jackson wrote:
> > This patch uses a read-write lock to prevent rules from being evicted
> > while they're used by child threads.
> > 
> > Signed-off-by: Ethan Jackson <et...@nicira.com>
> 
> I don't think anything ever destroys 'evict'.  (But POSIX says that
> only an unlocked rwlock may be destroyed.)
> 
> This line in add_flow() should not compile:
>             ovs_rwlock_wrlock(&evict->evict)
> but we have a buggy macro.  I sent out a fix for the macro:
>         http://openvswitch.org/pipermail/dev/2013-August/030509.html

Previously, the processing of a given packet or flow always saw a
consistent set of flow tables.  That is, the flow tables didn't change
from one lookup (e.g. resubmit) to another.  I am not sure that this
is true any longer.  Is it now possible for a flow_mod to take effect
in the middle of a packet's processing?  At first glance, it seems to
be.

The new failure case in ofproto_delete_flow() looks like a problem for
fail-open, which never retries because previously it could never fail.
Is there a reason we can't block waiting for the write lock here?  The
uses of ofproto_delete_flow() (in-band, fail-open) are not performance
sensitive fast paths.

Ditto for ofproto_flush__().

I think that some of the changes here are because Clang can't annotate
a return value as acquired.  If so, would you mind mentioning that in
the commit message?
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to