forked from sonic-net/sonic-buildimage
-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[teamd] retry creating team_port after interface info changed (sonic-…
…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
1 parent
9596683
commit 32ad731
Showing
2 changed files
with
35 additions
and
0 deletions.
There are no files selected for viewing
34 changes: 34 additions & 0 deletions
34
src/libteam/0008-teamd-register-change-handler-for-TEAM_IFINFO_CHANGE.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters