diff --git a/SOURCES/sos-bz1857697-gluster-state_files_deletion.patch b/SOURCES/sos-bz1857697-gluster-state_files_deletion.patch
new file mode 100644
index 0000000..be6ffc3
--- /dev/null
+++ b/SOURCES/sos-bz1857697-gluster-state_files_deletion.patch
@@ -0,0 +1,36 @@
+From 30211bc276fc33e8d3f137c0860be54bbb537064 Mon Sep 17 00:00:00 2001
+From: Jan Jansky <jjansky@redhat.com>
+Date: Fri, 17 Jul 2020 09:51:58 +0200
+Subject: [PATCH] [gluster] remove generated state files
+
+Remove also generated state files in
+/run/gluster.
+
+Related: #2154
+Resolves: #2155
+
+Signed-off-by: Jan Jansky <jjansky@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/gluster.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/gluster.py b/sos/plugins/gluster.py
+index 777f941..4a9ebe3 100644
+--- a/sos/plugins/gluster.py
++++ b/sos/plugins/gluster.py
+@@ -44,7 +44,10 @@ class Gluster(Plugin, RedHatPlugin):
+             if not os.path.exists(self.statedump_dir):
+                 return
+             try:
+-                for name in glob.glob(self.statedump_dir + '/*.dump.[0-9]*'):
++                remove_files = glob.glob(self.statedump_dir + '/*.dump.[0-9]*')
++                remove_files.extend(glob.glob(self.statedump_dir +
++                                    '/glusterd_state_[0-9]*_[0-9]*'))
++                for name in remove_files:
+                     os.remove(name)
+             except OSError:
+                 pass
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-bz1859885-kubernetes_ignore_empty_lines.patch b/SOURCES/sos-bz1859885-kubernetes_ignore_empty_lines.patch
new file mode 100644
index 0000000..9c15aeb
--- /dev/null
+++ b/SOURCES/sos-bz1859885-kubernetes_ignore_empty_lines.patch
@@ -0,0 +1,38 @@
+From 5c6793e0e9e41ed754020bb7a589587ba647ccb6 Mon Sep 17 00:00:00 2001
+From: Jan Jansky <jjansky@redhat.com>
+Date: Fri, 24 Jul 2020 09:21:11 +0200
+Subject: [PATCH] [kubernetes] ignore blank+empty lines in "kubectl get nodes"
+ output
+
+In a theoretical case when the command output contains empty or blank
+line, we must skip them before finding the first word there.
+
+Related: #2162
+Resolves: #2164
+
+Signed-off-by: Jan Jansky <jjansky@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/kubernetes.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/kubernetes.py b/sos/plugins/kubernetes.py
+index 8fc0eba..b7baae2 100644
+--- a/sos/plugins/kubernetes.py
++++ b/sos/plugins/kubernetes.py
+@@ -100,7 +100,11 @@ class Kubernetes(Plugin):
+         nodes = self.collect_cmd_output("%s get nodes" % self.kube_cmd)
+         if nodes['status'] == 0:
+             for line in nodes['output'].splitlines()[1:]:
+-                node = line.split()[0]
++                # find first word in the line and ignore empty+blank lines
++                words = line.split()
++                if not words:
++                    continue
++                node = words[0]
+                 self.add_cmd_output(
+                     "%s describe node %s" % (self.kube_cmd, node),
+                     subdir='nodes'
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-bz1870379-networking_skip_eeprom_colection_for_bnx2x.patch b/SOURCES/sos-bz1870379-networking_skip_eeprom_colection_for_bnx2x.patch
new file mode 100644
index 0000000..b6fd4fa
--- /dev/null
+++ b/SOURCES/sos-bz1870379-networking_skip_eeprom_colection_for_bnx2x.patch
@@ -0,0 +1,50 @@
+From e489e4c361ca1153970d1f37db90081ad991f69b Mon Sep 17 00:00:00 2001
+From: Jan Jansky <jjansky@redhat.com>
+Date: Thu, 20 Aug 2020 09:43:08 +0200
+Subject: [PATCH] [networking] remove 'ethtool -e' option for bnx2x NICs
+
+Running EEPROM dump (ethtool -e) can result in bnx2x driver NICs to
+pause for few seconds and is not recommended in production environment.
+
+Related: #2200
+Resolves: #2208
+
+Signed-off-by: Jan Jansky <jjansky@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/networking.py | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
+index 56d5b44..b04bb98 100644
+--- a/sos/plugins/networking.py
++++ b/sos/plugins/networking.py
+@@ -179,7 +179,6 @@ class Networking(Plugin):
+                 "ethtool -a " + eth,
+                 "ethtool -c " + eth,
+                 "ethtool -g " + eth,
+-                "ethtool -e " + eth,
+                 "ethtool -P " + eth,
+                 "ethtool -l " + eth,
+                 "ethtool --phy-statistics " + eth,
+@@ -187,6 +186,17 @@ class Networking(Plugin):
+                 "ethtool --show-eee " + 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)
++
+         # Collect information about bridges (some data already collected via
+         # "ip .." commands)
+         self.add_cmd_output([
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-bz1871207-audit_collect_etc_audisp.patch b/SOURCES/sos-bz1871207-audit_collect_etc_audisp.patch
new file mode 100644
index 0000000..6608184
--- /dev/null
+++ b/SOURCES/sos-bz1871207-audit_collect_etc_audisp.patch
@@ -0,0 +1,34 @@
+From d5ea9277698836ae34547cb995a0683a1f9f505e Mon Sep 17 00:00:00 2001
+From: Jan Jansky <jjansky@redhat.com>
+Date: Mon, 7 Sep 2020 09:21:55 +0200
+Subject: [PATCH] [audit] collect /etc/audisp
+
+Collect audit event multiplexor config dir.
+
+Related: #2187
+Resolves: #2227
+
+Signed-off-by: Jan Jansky <jjansky@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/auditd.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/sos/plugins/auditd.py b/sos/plugins/auditd.py
+index 8380a6d..bbcd28c 100644
+--- a/sos/plugins/auditd.py
++++ b/sos/plugins/auditd.py
+@@ -21,7 +21,9 @@ class Auditd(Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin):
+     def setup(self):
+         self.add_copy_spec([
+             "/etc/audit/auditd.conf",
+-            "/etc/audit/audit.rules"
++            "/etc/audit/audit.rules",
++            "/etc/audit/plugins.d/",
++            "/etc/audisp/",
+         ])
+         self.add_cmd_output([
+             "ausearch --input-logs -m avc,user_avc -ts today",
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-bz1886432-policy_fix_failure_conditions_with_upload.patch b/SOURCES/sos-bz1886432-policy_fix_failure_conditions_with_upload.patch
new file mode 100644
index 0000000..3555246
--- /dev/null
+++ b/SOURCES/sos-bz1886432-policy_fix_failure_conditions_with_upload.patch
@@ -0,0 +1,129 @@
+From 8288b5bb76d01c7fb88c51672bfb5d33e077d2d8 Mon Sep 17 00:00:00 2001
+From: Jan Jansky <jjansky@redhat.com>
+Date: Thu, 8 Oct 2020 14:26:03 +0200
+Subject: [PATCH] [policy] Fix failure conditions with upload
+
+The logic for determining if an archive should be uploaded to the
+Customer Portal was too strict, ease it to now properly only block on a
+missing case number since username and passwords may now be provided via
+env vars.
+
+Fixes an issue whereby we ignore a user-provided FTP directory.
+
+Adds a timeout and a timeout handler for FTP connections, rather than
+letting the connection attempt continue indefinitely.
+
+Second, adds exception handling for an edge case where the connection to
+the FTP server fails, but does not generate an exception from the ftplib
+module.
+
+Additionally, correct the type-ing of the error numbers being checked so
+that we actually match them.
+
+Caling "sos report --upload --case-id=123 --batch" should fallback
+to uploading to FTP server as the upload user is unknown and can't
+be prompted in batch mode.
+
+Related: #2276
+Related: #2245
+Resolves: #2265
+
+Signed-off-by: Jan Jansky <jjansky@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/policies/__init__.py | 19 +++++++++++++------
+ sos/policies/redhat.py   | 21 +++++++++++++++++----
+ 2 files changed, 30 insertions(+), 10 deletions(-)
+
+diff --git a/sos/policies/__init__.py b/sos/policies/__init__.py
+index ed3f0cc..a22c277 100644
+--- a/sos/policies/__init__.py
++++ b/sos/policies/__init__.py
+@@ -972,7 +972,8 @@ class LinuxPolicy(Policy):
+         """Should be overridden by policies to determine if a user needs to
+         be provided or not
+         """
+-        if not self.upload_user and not self._upload_user:
++        if not self.get_upload_password() and (self.get_upload_user() !=
++                                               self._upload_user):
+             msg = "Please provide upload user for %s: " % self.get_upload_url()
+             self.upload_user = input(_(msg))
+ 
+@@ -1029,7 +1030,8 @@ class LinuxPolicy(Policy):
+ 
+         """
+         self.upload_archive = archive
+-        self.upload_url = self.get_upload_url()
++        if not self.upload_url:
++            self.upload_url = self.get_upload_url()
+         if not self.upload_url:
+             raise Exception("No upload destination provided by policy or by "
+                             "--upload-url")
+@@ -1187,18 +1189,23 @@ class LinuxPolicy(Policy):
+             password = self.get_upload_password()
+ 
+         if not directory:
+-            directory = self._upload_directory
++            directory = self.upload_directory or self._upload_directory
+ 
+         try:
+-            session = ftplib.FTP(url, user, password)
++            session = ftplib.FTP(url, user, password, timeout=15)
++            if not session:
++                raise Exception("connection failed, did you set a user and "
++                                "password?")
+             session.cwd(directory)
++        except socket.timeout:
++            raise Exception("timeout hit while connecting to %s" % url)
+         except socket.gaierror:
+             raise Exception("unable to connect to %s" % url)
+         except ftplib.error_perm as err:
+             errno = str(err).split()[0]
+-            if errno == 503:
++            if errno == '503':
+                 raise Exception("could not login as '%s'" % user)
+-            if errno == 550:
++            if errno == '550':
+                 raise Exception("could not set upload directory to %s"
+                                 % directory)
+ 
+diff --git a/sos/policies/redhat.py b/sos/policies/redhat.py
+index 9fbe743..3412f44 100644
+--- a/sos/policies/redhat.py
++++ b/sos/policies/redhat.py
+@@ -312,15 +312,28 @@ support representative.
+                 "Enter your Red Hat Customer Portal username (empty to use "
+                 "public dropbox): ")
+             )
++            if not self.upload_user:
++                self.upload_url = RH_FTP_HOST
++                self.upload_user = self._upload_user
++
++    def _upload_user_set(self):
++        user = self.get_upload_user()
++        return user and (user != 'anonymous')
+ 
+     def get_upload_url(self):
++        if self.upload_url:
++            return self.upload_url
+         if self.commons['cmdlineopts'].upload_url:
+             return self.commons['cmdlineopts'].upload_url
+-        if (not self.case_id or not self.upload_user or not
+-                self.upload_password):
+-            # Cannot use the RHCP. Use anonymous dropbox
++        # anonymous FTP server should be used as fallback when either:
++        # - case id is not set, or
++        # - upload user isn't set AND batch mode prevents to prompt for it
++        if (not self.case_id) or \
++           ((not self._upload_user_set()) and
++               self.commons['cmdlineopts'].batch):
+             self.upload_user = self._upload_user
+-            self.upload_directory = self._upload_directory
++            if self.upload_directory is None:
++                self.upload_directory = self._upload_directory
+             self.upload_password = None
+             return RH_FTP_HOST
+         else:
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-bz1897903-postgresql_collect_rh-postgresql12.patch b/SOURCES/sos-bz1897903-postgresql_collect_rh-postgresql12.patch
new file mode 100644
index 0000000..70c5e1f
--- /dev/null
+++ b/SOURCES/sos-bz1897903-postgresql_collect_rh-postgresql12.patch
@@ -0,0 +1,97 @@
+From 612ccc67233f14447f0a20a19916780f3def673f Mon Sep 17 00:00:00 2001
+From: Pavel Moravec <pmoravec@redhat.com>
+Date: Wed, 18 Nov 2020 10:21:17 +0100
+Subject: [PATCH] [postgresql] reorganize postgres from SCL
+
+Backport of #2309 to legacy-3.9:
+- enable RedHatPostgreSQL also by rh-postgresql12 SCL
+- collect configs and logs regardless of running service
+- collect "du -sh" for SCL directories as well
+
+Resolves: #2312
+
+Signed-off-by: Pavel Moravec <pmoravec@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/postgresql.py | 54 +++++++++++++++++++++--------------------------
+ 1 file changed, 24 insertions(+), 30 deletions(-)
+
+diff --git a/sos/plugins/postgresql.py b/sos/plugins/postgresql.py
+index 2657992..ed36b3e 100644
+--- a/sos/plugins/postgresql.py
++++ b/sos/plugins/postgresql.py
+@@ -82,47 +82,41 @@ class RedHatPostgreSQL(PostgreSQL, SCLPlugin):
+     packages = (
+         'postgresql',
+         'rh-postgresql95-postgresql-server',
+-        'rh-postgresql10-postgresql-server'
++        'rh-postgresql10-postgresql-server',
++        'rh-postgresql12-postgresql-server',
+     )
+ 
+     def setup(self):
+         super(RedHatPostgreSQL, self).setup()
+ 
+         pghome = self.get_option("pghome")
++        dirs = [pghome]
+ 
+-        scl = None
+         for pkg in self.packages[1:]:
+             # The scl name, package name, and service name all differ slightly
+             # but is at least consistent in doing so across versions, so we
+             # need to do some mangling here
+-            if self.is_service_running(pkg.replace('-server', '')):
+-                scl = pkg.split('-postgresql-')[0]
+-
+-        # Copy PostgreSQL log files.
+-        for filename in find("*.log", pghome):
+-            self.add_copy_spec(filename)
+-        for filename in find("*.log", self.convert_copyspec_scl(scl, pghome)):
+-            self.add_copy_spec(filename)
+-
+-        # Copy PostgreSQL config files.
+-        for filename in find("*.conf", pghome):
+-            self.add_copy_spec(filename)
+-        for filename in find("*.conf", self.convert_copyspec_scl(scl, pghome)):
+-            self.add_copy_spec(filename)
+-
+-        self.add_copy_spec(os.path.join(pghome, "data", "PG_VERSION"))
+-        self.add_copy_spec(os.path.join(pghome, "data", "postmaster.opts"))
+-
+-        self.add_copy_spec_scl(scl, os.path.join(pghome, "data", "PG_VERSION"))
+-        self.add_copy_spec_scl(scl, os.path.join(
+-                pghome,
+-                "data",
+-                "postmaster.opts"
+-            )
+-        )
+-
+-        if scl and scl in self.scls_matched:
+-            self.do_pg_dump(scl=scl, filename="pgdump-scl-%s.tar" % scl)
++            scl = pkg.split('-postgresql-')[0]
++            _dir = self.convert_copyspec_scl(scl, pghome)
++            dirs.append(_dir)
++            if os.path.isdir(_dir):
++                self.add_cmd_output("du -sh %s" % _dir)
++            if (self.is_service_running(pkg.replace('-server', '')) and
++                    scl in self.scls_matched):
++                self.do_pg_dump(scl=scl, filename="pgdump-scl-%s.tar" % scl)
++
++        for _dir in dirs:
++            # Copy PostgreSQL log files.
++            for filename in find("*.log", _dir):
++                self.add_copy_spec(filename)
++
++            # Copy PostgreSQL config files.
++            for filename in find("*.conf", _dir):
++                self.add_copy_spec(filename)
++
++            # copy PG_VERSION and postmaster.opts
++            for f in ["PG_VERSION", "postmaster.opts"]:
++                self.add_copy_spec(os.path.join(_dir, "data", f))
+ 
+ 
+ class DebianPostgreSQL(PostgreSQL, DebianPlugin, UbuntuPlugin):
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-bz1917074-networking_ethtool-e_conditionally_only.patch b/SOURCES/sos-bz1917074-networking_ethtool-e_conditionally_only.patch
new file mode 100644
index 0000000..32abf94
--- /dev/null
+++ b/SOURCES/sos-bz1917074-networking_ethtool-e_conditionally_only.patch
@@ -0,0 +1,61 @@
+From 00a25deaba41cd34a2143b5324d22a7c35098c1c Mon Sep 17 00:00:00 2001
+From: Jan Jansky <jjansky@redhat.com>
+Date: Thu, 21 Jan 2021 09:48:29 +0100
+Subject: [PATCH] [networking] Collect 'ethtool -e <device>' 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.
+
+Related: #2376
+Resolved: #2380
+
+Signed-off-by: Jan Jansky <jjansky@redhat.com>
+Signed-off-by: Jake Hunsaker <jhunsake@redhat.com>
+---
+ sos/plugins/networking.py | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/sos/plugins/networking.py b/sos/plugins/networking.py
+index b04bb98..40f8b2f 100644
+--- a/sos/plugins/networking.py
++++ b/sos/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
+@@ -186,16 +187,15 @@ class Networking(Plugin):
+                 "ethtool --show-eee " + 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)
+-- 
+1.8.3.1
+
diff --git a/SOURCES/sos-centos-branding.patch b/SOURCES/sos-centos-branding.patch
deleted file mode 100644
index 3cf63a6..0000000
--- a/SOURCES/sos-centos-branding.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-diff -uNrp sos-3.9.orig/sos/policies/redhat.py sos-3.9/sos/policies/redhat.py
---- sos-3.9.orig/sos/policies/redhat.py	2020-03-24 15:33:13.000000000 +0000
-+++ sos-3.9/sos/policies/redhat.py	2020-10-03 12:48:32.088747085 +0000
-@@ -31,9 +31,9 @@ except NameError:
- 
- 
- class RedHatPolicy(LinuxPolicy):
--    distro = "Red Hat"
--    vendor = "Red Hat"
--    vendor_url = "https://www.redhat.com/"
-+    distro = "CentOS"
-+    vendor = "CentOS"
-+    vendor_url = "https://www.centos.org/"
-     _redhat_release = '/etc/redhat-release'
-     _tmp_dir = "/var/tmp"
-     _rpmq_cmd = 'rpm -qa --queryformat "%{NAME}|%{VERSION}|%{RELEASE}\\n"'
-@@ -89,7 +89,7 @@ class RedHatPolicy(LinuxPolicy):
-     def check(cls):
-         """This method checks to see if we are running on Red Hat. It must be
-         overriden by concrete subclasses to return True when running on a
--        Fedora, RHEL or other Red Hat distribution or False otherwise."""
-+        Fedora, CentOS, RHEL or other Red Hat distribution or False otherwise."""
-         return False
- 
-     def check_usrmove(self, pkgs):
-@@ -187,29 +187,29 @@ _opts_all_logs_verify = SoSOptions(all_l
- _cb_profiles = ['boot', 'storage', 'system']
- _cb_plugopts = ['boot.all-images=on', 'rpm.rpmva=on', 'rpm.rpmdb=on']
- 
--RHEL_RELEASE_STR = "Red Hat Enterprise Linux"
-+RHEL_RELEASE_STR = "CentOS Linux"
- 
- RHV = "rhv"
--RHV_DESC = "Red Hat Virtualization"
-+RHV_DESC = "Virtualization"
- 
- RHEL = "rhel"
- RHEL_DESC = RHEL_RELEASE_STR
- 
- RHOSP = "rhosp"
--RHOSP_DESC = "Red Hat OpenStack Platform"
-+RHOSP_DESC = "OpenStack Platform"
- 
- RHOCP = "ocp"
--RHOCP_DESC = "OpenShift Container Platform by Red Hat"
-+RHOCP_DESC = "OpenShift Container Platform"
- RHOSP_OPTS = SoSOptions(plugopts=[
-                              'process.lsof=off',
-                              'networking.ethtool_namespaces=False',
-                              'networking.namespaces=200'])
- 
- RH_CFME = "cfme"
--RH_CFME_DESC = "Red Hat CloudForms"
-+RH_CFME_DESC = "CloudForms"
- 
- RH_SATELLITE = "satellite"
--RH_SATELLITE_DESC = "Red Hat Satellite"
-+RH_SATELLITE_DESC = "Satellite"
- SAT_OPTS = SoSOptions(verify=True, plugopts=['apache.log=on'])
- 
- CB = "cantboot"
-@@ -257,8 +257,8 @@ RH_FTP_HOST = "ftp://dropbox.redhat.com"
- 
- class RHELPolicy(RedHatPolicy):
-     distro = RHEL_RELEASE_STR
--    vendor = "Red Hat"
--    vendor_url = "https://access.redhat.com/support/"
-+    vendor = "CentOS"
-+    vendor_url = "https://wiki.centos.org/support"
-     msg = _("""\
- This command will collect diagnostic and configuration \
- information from this %(distro)s system and installed \
-@@ -280,7 +280,7 @@ support representative.
-     def check(cls):
-         """Test to see if the running host is a RHEL installation.
- 
--            Checks for the presence of the "Red Hat Enterprise Linux"
-+            Checks for the presence of the "CentOS Linux"
-             release string at the beginning of the NAME field in the
-             `/etc/os-release` file and returns ``True`` if it is
-             found, and ``False`` otherwise.
-@@ -309,7 +309,7 @@ support representative.
-             return
-         if self.case_id:
-             self.upload_user = input(_(
--                "Enter your Red Hat Customer Portal username (empty to use "
-+                "Enter your Customer Portal username (empty to use "
-                 "public dropbox): ")
-             )
- 
-@@ -334,7 +334,7 @@ support representative.
- 
-     def get_upload_url_string(self):
-         if self.get_upload_url().startswith(RH_API_HOST):
--            return "Red Hat Customer Portal"
-+            return "Customer Portal"
-         return self.upload_url or RH_FTP_HOST
- 
-     def get_upload_user(self):
-@@ -389,7 +389,7 @@ class CentOsPolicy(RHELPolicy):
- 
- ATOMIC = "atomic"
- ATOMIC_RELEASE_STR = "Atomic"
--ATOMIC_DESC = "Red Hat Enterprise Linux Atomic Host"
-+ATOMIC_DESC = "Atomic Host"
- 
- atomic_presets = {
-     ATOMIC: PresetDefaults(name=ATOMIC, desc=ATOMIC_DESC, note=NOTE_TIME,
-@@ -398,7 +398,7 @@ atomic_presets = {
- 
- 
- class RedHatAtomicPolicy(RHELPolicy):
--    distro = "Red Hat Atomic Host"
-+    distro = "Atomic Host"
-     msg = _("""\
- This command will collect diagnostic and configuration \
- information from this %(distro)s system.
-@@ -435,7 +435,7 @@ support representative.
- 
- 
- class RedHatCoreOSPolicy(RHELPolicy):
--    distro = "Red Hat CoreOS"
-+    distro = "CoreOS"
-     msg = _("""\
- This command will collect diagnostic and configuration \
- information from this %(distro)s system.
-@@ -456,7 +456,7 @@ support representative.
-         host_release = os.environ[ENV_HOST_SYSROOT] + cls._redhat_release
-         try:
-             for line in open(host_release, 'r').read().splitlines():
--                coreos |= 'Red Hat CoreOS' in line
-+                coreos |= 'CoreOS' in line
-         except IOError:
-             pass
-         return coreos
diff --git a/SPECS/sos.spec b/SPECS/sos.spec
index ffa2e08..7017c04 100644
--- a/SPECS/sos.spec
+++ b/SPECS/sos.spec
@@ -2,7 +2,7 @@
 Summary: A set of tools to gather troubleshooting information from a system
 Name: sos
 Version: 3.9
-Release: 4%{?dist}
+Release: 5%{?dist}.2
 Group: Applications/System
 Source0: https://github.com/sosreport/sos/archive/%{version}.tar.gz
 License: GPLv2+
@@ -31,7 +31,13 @@ Patch8: sos-bz1853701-pci_gating_for_lspci.patch
 Patch9: sos-bz1853235-foreman_collect_stats_of_some_tables.patch
 Patch10: sos-bz1850925-logs_collect_also_not_persistent_logs.patch
 Patch11: sos-bz1856417-gluster-remove_only_dump_files.patch
-Patch12: sos-centos-branding.patch
+Patch12: sos-bz1857697-gluster-state_files_deletion.patch 
+Patch13: sos-bz1859885-kubernetes_ignore_empty_lines.patch
+Patch14: sos-bz1870379-networking_skip_eeprom_colection_for_bnx2x.patch
+Patch15: sos-bz1871207-audit_collect_etc_audisp.patch
+Patch16: sos-bz1886432-policy_fix_failure_conditions_with_upload.patch
+Patch17: sos-bz1897903-postgresql_collect_rh-postgresql12.patch
+Patch18: sos-bz1917074-networking_ethtool-e_conditionally_only.patch
 
 %description
 Sos is a set of tools that gathers information about system
@@ -54,6 +60,12 @@ support technicians and developers.
 %patch10 -p1
 %patch11 -p1
 %patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
 
 %build
 make
@@ -77,8 +89,26 @@ rm -rf ${RPM_BUILD_ROOT}
 %config(noreplace) %{_sysconfdir}/sos.conf
 
 %changelog
-* Tue Sep 29 2020 CentOS Sources <bugs@centos.org> - 3.9-4.el7.centos
-- Roll in CentOS Branding
+* Thu Jan 21 2021 Jan Jansky <jjansky@redhat.com> = 3.9-5.2
+- [networking] 'ethtool -e <device>' conditionally only
+  Resolves: bz1917074
+
+* Mon Nov 23 2020 Jan Jansky <jjansky@redhat.com> = 3.9-5.1
+- Adjusting .1 zstream version
+
+* Fri Nov 20 2020 Jan Jansky <jjansky@redhat.com> = 3.9-5
+- [gluster] remove generated state files
+  Resolves: bz1857697
+- [kubernetes] ignore blank+empty lines
+  Resolves: bz1859885
+- [networking] remove 'ethtool -e' option for bnx2x NICs
+  Resolves: bz1870379
+- [auditd] collect /etc/audisp
+  Resolves: bz1871207
+- [policy] Fix several failure conditions with upload
+  Resolves: bz1886432
+- [postgresql] reorganize postgres from SCL
+  Resolves: bz1897903
 
 * Thu Jul 16 2020 Jan Jansky <jjansky@redhat.com> = 3.9-4
 - [gluster] remove only dump files