The optimization introduced a regression in OSP environments using
internal ports in other netns. Their networking configuration is lost
when the service is restarted because the ports are recreated now.

Before the patch it checked using netlink if the port with a specific
"name" was already there. The check is a lookup in all ports attached
to the DP regardless of the port's netns.

After the patch it relies on the kernel to identify that situation.
Unfortunately the only protection there is register_netdevice() which
fails only if the port with that name exists in the current netns.

If the port is in another netns, it will get a new dp_port and because
of that userspace will delete the old port. At this point the original
port is gone from the other netns and there a fresh port in the current
netns.

This patchset reverts the original commit and the two other follow ups.

Flavio Leitner (3):
  Revert "dpif-netlink: Don't destroy and recreate port if it exists"
  Revert "ofproto-dpif: Check for EBUSY as well"
  Revert "ofproto-dpif: Let the dpif report when a port is a duplicate."

 lib/dpif-netlink.c     | 4 ++--
 lib/dpif.c             | 9 ++-------
 ofproto/ofproto-dpif.c | 7 ++++---
 3 files changed, 8 insertions(+), 12 deletions(-)

-- 
2.17.2

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to