The port_destruct() function checks if the port still exists in the datapath to see if additional cleanup is necessary. It used dpif_port_query_by_number(), since the datapath port number is readily available and cheap to use as a lookup handle. Unfortunately, that function logs a warning message if a port with that number doesn't exist (because the datapath did remove it), which is confusing. The dpif_port_query_by_name() function doesn't log such an warning, so use it instead.
Signed-off-by: Justin Pettit <jpet...@nicira.com> --- ofproto/ofproto-dpif.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 098a43e..283917c 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -1538,10 +1538,11 @@ port_destruct(struct ofport *port_) { struct ofport_dpif *port = ofport_dpif_cast(port_); struct ofproto_dpif *ofproto = ofproto_dpif_cast(port->up.ofproto); + const char *devname = netdev_get_name(port->up.netdev); struct dpif_port dpif_port; - if (!dpif_port_query_by_number(ofproto->backer->dpif, - port->odp_port, &dpif_port)) { + if (!dpif_port_query_by_name(ofproto->backer->dpif, devname, + &dpif_port)) { /* The underlying device is still there, so delete it. This * happens when the ofproto is being destroyed, since the caller * assumes that removal of attached ports will happen as part of @@ -1550,7 +1551,7 @@ port_destruct(struct ofport *port_) dpif_port_destroy(&dpif_port); } - sset_find_and_delete(&ofproto->ports, netdev_get_name(port->up.netdev)); + sset_find_and_delete(&ofproto->ports, devname); hmap_remove(&ofproto->backer->odp_to_ofport_map, &port->odp_port_node); ofproto->need_revalidate = REV_RECONFIGURE; bundle_remove(port_); -- 1.7.5.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev