From d1d392f4947b8ba343ad59a87da712f004710f2f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Sat, 5 Sep 2020 18:32:47 +0000 Subject: [PATCH] import libteam-1.31-2.el8 --- ...regard-current-state-when-considerin.patch | 55 +++++++++++++++++++ SPECS/libteam.spec | 5 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch diff --git a/SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch b/SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch new file mode 100644 index 0000000..29c74c8 --- /dev/null +++ b/SOURCES/libteam-Revert-teamd-Disregard-current-state-when-considerin.patch @@ -0,0 +1,55 @@ +From 61efd6de2fbb8ee077863ee5a355ac3dfd9365b9 Mon Sep 17 00:00:00 2001 +Message-Id: <61efd6de2fbb8ee077863ee5a355ac3dfd9365b9.1599144624.git.lucien.xin@gmail.com> +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.18.1 + diff --git a/SPECS/libteam.spec b/SPECS/libteam.spec index 6e1310a..ccbd5bb 100644 --- a/SPECS/libteam.spec +++ b/SPECS/libteam.spec @@ -1,11 +1,12 @@ Name: libteam Version: 1.31 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Library for controlling team network device Group: System Environment/Libraries License: LGPLv2+ URL: http://www.libteam.org Source: http://www.libteam.org/files/libteam-%{version}.tar.gz +Patch1: libteam-Revert-teamd-Disregard-current-state-when-considerin.patch BuildRequires: jansson-devel BuildRequires: libdaemon-devel BuildRequires: libnl3-devel @@ -164,6 +165,8 @@ cd binding/python %{_sysconfdir}/sysconfig/network-scripts/ifdown-TeamPort %changelog +* Tue Sep 01 2020 Xin Long - 1.31-2 +- Revert "teamd: Disregard current state when considering port enablement" [1874001] * Thu Jul 30 2020 Xin Long - 1.31-1 - 1.31 release - utils/bond2team: remove TYPE in ifcfg file [1858518]