Thanks, I applied these.
On Fri, Apr 25, 2014 at 11:50:43AM -0700, Andy Zhou wrote: > Looks great. Thanks! > > On Fri, Apr 25, 2014 at 9:56 AM, Ben Pfaff <b...@nicira.com> wrote: > > If 'lacp' is NULL, then lacp_create() might not have been called to > > indirectly initialize the mutex via lacp_init(), so call lacp_init() > > from lacp_status(). > > > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > Acked-by: Andy Zhou <az...@nicira.com> > > --- > > lib/lacp.c | 18 +++++++++++------- > > 1 file changed, 11 insertions(+), 7 deletions(-) > > > > diff --git a/lib/lacp.c b/lib/lacp.c > > index 4aee64f..dfb7159 100644 > > --- a/lib/lacp.c > > +++ b/lib/lacp.c > > @@ -199,21 +199,23 @@ parse_lacp_packet(const struct ofpbuf *b) > > void > > lacp_init(void) > > { > > - unixctl_command_register("lacp/show", "[port]", 0, 1, > > - lacp_unixctl_show, NULL); > > + static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; > > + > > + if (ovsthread_once_start(&once)) { > > + ovs_mutex_init_recursive(&mutex); > > + unixctl_command_register("lacp/show", "[port]", 0, 1, > > + lacp_unixctl_show, NULL); > > + ovsthread_once_done(&once); > > + } > > } > > > > /* Creates a LACP object. */ > > struct lacp * > > lacp_create(void) OVS_EXCLUDED(mutex) > > { > > - static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; > > struct lacp *lacp; > > > > - if (ovsthread_once_start(&once)) { > > - ovs_mutex_init_recursive(&mutex); > > - ovsthread_once_done(&once); > > - } > > + lacp_init(); > > > > lacp = xzalloc(sizeof *lacp); > > hmap_init(&lacp->slaves); > > @@ -347,6 +349,8 @@ lacp_status(const struct lacp *lacp) OVS_EXCLUDED(mutex) > > { > > enum lacp_status ret; > > > > + lacp_init(); > > + > > ovs_mutex_lock(&mutex); > > if (!lacp) { > > ret = LACP_DISABLED; > > -- > > 1.7.10.4 > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev