diff --git a/SOURCES/sos-bz1917196-networking-ethtool-e-conditionally.patch b/SOURCES/sos-bz1917196-networking-ethtool-e-conditionally.patch new file mode 100644 index 0000000..c64ffa7 --- /dev/null +++ b/SOURCES/sos-bz1917196-networking-ethtool-e-conditionally.patch @@ -0,0 +1,60 @@ +From aca8bd83117e177f2beac6b9434d36d446a7de64 Mon Sep 17 00:00:00 2001 +From: Pavel Moravec +Date: Mon, 18 Jan 2021 22:45:43 +0100 +Subject: [PATCH] [networking] Collect 'ethtool -e ' conditionally only + +EEPROM dump collection might hang on specific types of devices, or +negatively impact the system otherwise. As a safe option, sos report +should collect the command when explicitly asked via a plugopt only. + +Resolves: #2376 + +Signed-off-by: Pavel Moravec +Signed-off-by: Jake Hunsaker +--- + sos/report/plugins/networking.py | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/sos/report/plugins/networking.py b/sos/report/plugins/networking.py +index e4236ed9..5bdb697e 100644 +--- a/sos/report/plugins/networking.py ++++ b/sos/report/plugins/networking.py +@@ -27,7 +27,8 @@ class Networking(Plugin): + ("namespaces", "Number of namespaces to collect, 0 for unlimited. " + + "Incompatible with the namespace_pattern plugin option", "slow", 0), + ("ethtool_namespaces", "Define if ethtool commands should be " + +- "collected for namespaces", "slow", True) ++ "collected for namespaces", "slow", True), ++ ("eepromdump", "collect 'ethtool -e' for all devices", "slow", False) + ] + + # switch to enable netstat "wide" (non-truncated) output mode +@@ -141,16 +142,15 @@ class Networking(Plugin): + "ethtool --show-eee " + eth + ], tags=eth) + +- # skip EEPROM collection for 'bnx2x' NICs as this command +- # can pause the NIC and is not production safe. +- bnx_output = { +- "cmd": "ethtool -i %s" % eth, +- "output": "bnx2x" +- } +- bnx_pred = SoSPredicate(self, +- cmd_outputs=bnx_output, +- required={'cmd_outputs': 'none'}) +- self.add_cmd_output("ethtool -e %s" % eth, pred=bnx_pred) ++ # skip EEPROM collection by default, as it might hang or ++ # negatively impact the system on some device types ++ if self.get_option("eepromdump"): ++ cmd = "ethtool -e %s" % eth ++ self._log_warn("WARNING (about to collect '%s'): collecting " ++ "an eeprom dump is known to cause certain NIC " ++ "drivers (e.g. bnx2x/tg3) to interrupt device " ++ "operation" % cmd) ++ self.add_cmd_output(cmd) + + # Collect information about bridges (some data already collected via + # "ip .." commands) +-- +2.26.2 + diff --git a/SPECS/sos.spec b/SPECS/sos.spec index 2f607db..6e4549e 100644 --- a/SPECS/sos.spec +++ b/SPECS/sos.spec @@ -5,7 +5,7 @@ Summary: A set of tools to gather troubleshooting information from a system Name: sos Version: 4.0 -Release: 5%{?dist} +Release: 6%{?dist} Group: Applications/System Source0: https://github.com/sosreport/sos/archive/%{version}/sos-%{version}.tar.gz Source1: sos-audit-%{auditversion}.tgz @@ -37,6 +37,7 @@ Patch14: sos-bz1906598-collect-broken-symlinks.patch Patch15: sos-bz1912889-plugopts-ignored-in-configfile.patch Patch16: sos-bz1912821-sos-collector-declare-sysroot.patch Patch17: sos-bz1912910-empty-file-stops-collecting.patch +Patch18: sos-bz1917196-networking-ethtool-e-conditionally.patch %description Sos is a set of tools that gathers information about system @@ -64,6 +65,7 @@ support technicians and developers. %patch15 -p1 %patch16 -p1 %patch17 -p1 +%patch18 -p1 %build %py3_build @@ -123,6 +125,10 @@ of the system. Currently storage and filesystem commands are audited. %ghost /etc/audit/rules.d/40-sos-storage.rules %changelog +* Thu Jan 21 2021 Pavel Moravec = 4.0-6 +- [networking] Collect 'ethtool -e ' conditionally only + Resolves: bz1917196 + * Wed Jan 06 2021 Pavel Moravec = 4.0-5 - [component] honour plugopts from config file Resolves: bz1912889