On Wed, Feb 24, 2016 at 12:40:33PM -0800, William Tu wrote: > These two locks are reported by helgrind which have ordering inconsistency. > "netdev_class_mutex" > "route_table_mutex" > http://openvswitch.org/pipermail/discuss/2016-February/020216.html
Thanks for the report. Somehow I didn't get the original report, although I see it in the archive. Does the following appear to fix the problem? diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c index e398562..b3eef5d 100644 --- a/lib/netdev-vport.c +++ b/lib/netdev-vport.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2011, 2012, 2013, 2014 Nicira, Inc. + * Copyright (c) 2010, 2011, 2012, 2013, 2014, 2016 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -373,7 +373,6 @@ netdev_vport_run(void) { uint64_t seq; - route_table_run(); seq = route_table_get_change_seq(); if (rt_change_seqno != seq) { rt_change_seqno = seq; @@ -386,7 +385,6 @@ netdev_vport_wait(void) { uint64_t seq; - route_table_wait(); seq = route_table_get_change_seq(); if (rt_change_seqno != seq) { poll_immediate_wake(); diff --git a/lib/netdev.c b/lib/netdev.c index 3e50694..710739a 100644 --- a/lib/netdev.c +++ b/lib/netdev.c @@ -45,6 +45,7 @@ #include "openflow/openflow.h" #include "packets.h" #include "poll-loop.h" +#include "route-table.h" #include "seq.h" #include "shash.h" #include "smap.h" @@ -182,6 +183,7 @@ netdev_run(void) struct netdev_registered_class *rc; netdev_initialize(); + route_table_run(); ovs_mutex_lock(&netdev_class_mutex); HMAP_FOR_EACH (rc, hmap_node, &netdev_classes) { if (rc->class->run) { @@ -201,6 +203,7 @@ netdev_wait(void) { struct netdev_registered_class *rc; + route_table_wait(); ovs_mutex_lock(&netdev_class_mutex); HMAP_FOR_EACH (rc, hmap_node, &netdev_classes) { if (rc->class->wait) { _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev