diff --git a/SOURCES/0005-Revert-teamd-Disregard-current-state-when-considerin.patch b/SOURCES/0005-Revert-teamd-Disregard-current-state-when-considerin.patch new file mode 100644 index 0000000..ce1d615 --- /dev/null +++ b/SOURCES/0005-Revert-teamd-Disregard-current-state-when-considerin.patch @@ -0,0 +1,54 @@ +From 61efd6de2fbb8ee077863ee5a355ac3dfd9365b9 Mon Sep 17 00:00:00 2001 +From: Xin Long +Date: Tue, 1 Sep 2020 13:59:27 +0800 +Subject: [PATCH] Revert "teamd: Disregard current state when considering port + enablement" + +This reverts commit deadb5b715227429a1879b187f5906b39151eca9. + +As Patrick noticed, with that commit, teamd_port_check_enable() +would set the team port to the new state unconditionally, which +triggers another change message from kernel to userspace, then +teamd_port_check_enable() is called again to set the team port +to the new state. + +This would go around and around to update the team port state, +and even cause teamd to consume 100% cpu. + +As the issue caused by that commit is serious, it has to be +reverted. As for the issued fixed by that commit, I would +propose a new fix later. + +Signed-off-by: Jiri Pirko +--- + teamd/teamd_per_port.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/teamd/teamd_per_port.c b/teamd/teamd_per_port.c +index 166da57..d429753 100644 +--- a/teamd/teamd_per_port.c ++++ b/teamd/teamd_per_port.c +@@ -442,14 +442,18 @@ int teamd_port_check_enable(struct teamd_context *ctx, + bool should_enable, bool should_disable) + { + bool new_enabled_state; ++ bool curr_enabled_state; + int err; + + if (!teamd_port_present(ctx, tdport)) + return 0; ++ err = teamd_port_enabled(ctx, tdport, &curr_enabled_state); ++ if (err) ++ return err; + +- if (should_enable) ++ if (!curr_enabled_state && should_enable) + new_enabled_state = true; +- else if (should_disable) ++ else if (curr_enabled_state && should_disable) + new_enabled_state = false; + else + return 0; +-- +2.27.0 + diff --git a/SPECS/libteam.spec b/SPECS/libteam.spec index e953927..415f32e 100644 --- a/SPECS/libteam.spec +++ b/SPECS/libteam.spec @@ -1,6 +1,6 @@ Name: libteam Version: 1.31 -Release: 10%{?dist} +Release: 11%{?dist} Summary: Library for controlling team network device License: LGPLv2+ URL: http://www.libteam.org @@ -10,6 +10,7 @@ Patch1: 0001-team-add-a-tool-for-team-to-bonding-config-migration.patch Patch2: 0002-team2bond-fix-min_ports-format-and-add-lacp_key.patch Patch3: 0003-utils-team2bond-add-cautions-for-the-script.patch Patch4: 0004-man-add-team2bond-man-doc.patch +Patch5: 0005-Revert-teamd-Disregard-current-state-when-considerin.patch BuildRequires: gcc BuildRequires: jansson-devel @@ -142,6 +143,9 @@ install -p -m 755 utils/team2bond $RPM_BUILD_ROOT%{_bindir}/team2bond %{_sysconfdir}/sysconfig/network-scripts/ifdown-TeamPort %changelog +* Mon Nov 15 2021 Xin Long - 1.31-11 +- Revert "teamd: Disregard current state when considering port enablement" [1894546] + * Mon Aug 16 2021 Hangbin Liu - 1.31-10 - Remove an extra line in spec file