On Thu, Jun 20, 2013 at 10:07 AM, Jesse Gross <je...@nicira.com> wrote:

> On Wed, Jun 19, 2013 at 11:14 PM, Andy Zhou <az...@nicira.com> wrote:
> > This patch seems to work fine.  Please feel free to push.
>
> Thanks, I applied the combined patch.
>
> Sounds good.

> >  I have two concerns mainly on the style side:
> >
> > 1. In the same file flow.c, we are mixing the _deferred_ functions with
> the
> > style of passing 'deferred' as a parameter in the same file.  The
> > correctness of caller in setting 'deferred' value does not look obviously
> > correct.
>
> I agree that this is not great from a consistency perspective. I
> changed the table destroy function to use the same style but left the
> actions alone since we only have a deferred destroy function. Other
> than conventions though, which part do you think is hard to
> understand?
>
Just how I would guess for some one new to look at this. It is not hard for
me now that I have looked at this so much in the last few days.

>
> > 2. In function ovw_flow_free()
> > ...
> > ovs_sw_flow_mask_del_ref((struct sw_flow_mask __force *)flow->mask,
> >                  deferred);
> > ...
> >
> > The type cast to (flow->mask) does not look good to me. It also defeats
> some
> > useful lockdep checks.
>
> In this case, the semantics are basically that the caller needs to own
> the table, which may occur either by holding OVS lock or through the
> expiration of an RCU grace period. The latter is hard for this
> function to determine, so using the usual ovsl_dereference would
> provoke spurious warnings. We have something similar for actions in
> __flow_free(), which has the same type of issues.
>
Yes, I agree it is technically necessary for the cast, just that we will be
losing the some benefits of lockdep checks.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to