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 [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
