Skip to content

Commit

Permalink
[teamd] retry creating team_port after interface info changed (sonic-…
Browse files Browse the repository at this point in the history
…net#2699)

Race condition has been noticed after warm reboot: sometimes when
port_changed notification was received, the link message didn't
have the device name. Without device name, creating team port
would fail.

Registering to the interface information change notification, so
later when device name becomes available, retry creating team port.

Signed-off-by: Ying Xie <[email protected]>
  • Loading branch information
yxieca authored and tiantianlv committed Apr 10, 2019
1 parent 9596683 commit 32ad731
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
From 7dff9798c2c92eb75b0120737efb81febcdb80c1 Mon Sep 17 00:00:00 2001
From: Ying Xie <[email protected]>
Date: Sun, 24 Mar 2019 21:49:59 +0000
Subject: [PATCH] [teamd] register change handler for TEAM_IFINFO_CHANGE as
well

There has been a race condition in the libnal/teamd interation, causing
TEAM_PORT_CHANGE to report a port with empty device name. Which then
causes the teamd unable to add the lag members into the lag.

Registering to the TEAM_IFINFO_CHANGE would give teamd another chance to
add member again.

Signed-off-by: Ying Xie <[email protected]>
---
teamd/teamd_per_port.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c
index 09d1dc7..137da57 100644
--- a/teamd/teamd_per_port.c
+++ b/teamd/teamd_per_port.c
@@ -274,7 +274,7 @@ static int port_priv_change_handler_func(struct team_handle *th, void *priv,

static const struct team_change_handler port_priv_change_handler = {
.func = port_priv_change_handler_func,
- .type_mask = TEAM_PORT_CHANGE,
+ .type_mask = TEAM_PORT_CHANGE | TEAM_IFINFO_CHANGE,
};

int teamd_per_port_init(struct teamd_context *ctx)
--
2.7.4

1 change: 1 addition & 0 deletions src/libteam/series
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@
0005-libteam-Add-warm_reboot-mode.patch
0006-Fix-ifinfo_link_with_port-race-condition-with-newlink.patch
0007-Skip-setting-the-same-hwaddr-to-lag-port-to-avoid-di.patch
0008-teamd-register-change-handler-for-TEAM_IFINFO_CHANGE.patch

0 comments on commit 32ad731

Please sign in to comment.