diff --git a/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch b/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch
new file mode 100644
index 0000000..37b2dcd
--- /dev/null
+++ b/SOURCES/tuned-2.9.0-scheduler-blacklist-thread-names.patch
@@ -0,0 +1,43 @@
+diff --git a/tuned/plugins/plugin_scheduler.py b/tuned/plugins/plugin_scheduler.py
+index 25c38dd..07fac52 100644
+--- a/tuned/plugins/plugin_scheduler.py
++++ b/tuned/plugins/plugin_scheduler.py
+@@ -379,8 +379,12 @@ class SchedulerPlugin(base.Plugin):
+ 
+ 	def _set_all_obj_affinity(self, objs, affinity, threads = False, intersect = False):
+ 		_affinity = affinity
+-		for obj in objs:
+-			if self._affinity_changeable(obj, process = objs[obj]) != 1:
++		psl = [v for v in objs if re.search(self._ps_whitelist, self._get_stat_comm(v)) is not None]
++		if self._ps_blacklist != "":
++			psl = [v for v in psl if re.search(self._ps_blacklist, self._get_stat_comm(v)) is None]
++		psd = dict([(v.pid, v) for v in psl])
++		for obj in psd:
++			if self._affinity_changeable(obj, process = psd[obj]) != 1:
+ 				continue
+ 			prev_affinity = self._get_affinity2(obj)
+ 			if prev_affinity is None:
+@@ -391,8 +395,8 @@ class SchedulerPlugin(base.Plugin):
+ 				if not self._set_affinity2(obj, _affinity):
+ 					continue
+ 			# process threads
+-			if not threads and objs[obj].has_key("threads"):
+-				self._set_all_obj_affinity(dict(objs[obj]["threads"].items()), affinity, True, intersect)
++			if not threads and "threads" in psd[obj]:
++				self._set_all_obj_affinity(psd[obj]["threads"].values(), affinity, True, intersect)
+ 
+ 	def _get_stat_comm(self, o):
+ 		try:
+@@ -405,11 +409,7 @@ class SchedulerPlugin(base.Plugin):
+ 		affinity_hex = self._cmd.cpulist2hex(_affinity)
+ 		ps = procfs.pidstats()
+ 		ps.reload_threads()
+-		psl = filter(lambda v: re.search(self._ps_whitelist, self._get_stat_comm(v)) is not None, ps.values())
+-		if self._ps_blacklist != "":
+-			psl = filter(lambda v: re.search(self._ps_blacklist, self._get_stat_comm(v)) is None, psl)
+-		psd = dict(map(lambda v: (v.pid, v), psl))
+-		self._set_all_obj_affinity(psd, affinity, False, intersect)
++		self._set_all_obj_affinity(ps.values(), affinity, False, intersect)
+ 
+ 		# process IRQs
+ 		irqs = procfs.interrupts()
diff --git a/SPECS/tuned.spec b/SPECS/tuned.spec
index ff40cc3..6567ec5 100644
--- a/SPECS/tuned.spec
+++ b/SPECS/tuned.spec
@@ -7,7 +7,7 @@
 Summary: A dynamic adaptive system tuning daemon
 Name: tuned
 Version: 2.9.0
-Release: 1%{?prerel1}%{?dist}
+Release: 1%{?prerel1}%{?dist}.1
 License: GPLv2+
 Source: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}.tar.gz#/%{name}-%{version}%{?prerel1}.tar.gz
 URL: http://www.tuned-project.org/
@@ -22,6 +22,7 @@ Requires: virt-what, python-configobj, ethtool, gawk
 Requires: util-linux, python-perf, dbus, polkit, python-linux-procfs
 Requires: python-schedutils
 Patch0: tuned-2.8.0-gtk-3.8.patch
+Patch1: tuned-2.9.0-scheduler-blacklist-thread-names.patch
 
 %description
 The tuned package contains a daemon that tunes system settings dynamically.
@@ -149,6 +150,7 @@ It can be also used to fine tune your system for specific scenarios.
 %prep
 %setup -q -n %{name}-%{version}%{?prerel2}
 %patch0 -p1
+%patch1 -p1
 
 
 %build
@@ -394,6 +396,10 @@ fi
 %{_mandir}/man7/tuned-profiles-compat.7*
 
 %changelog
+* Wed Jul  4 2018 Jaroslav Škarvada <jskarvad@redhat.com> - 2.9.0-1.1
+- plugin_scheduler: whitelist/blacklist processed also for thread names
+  resolves: rhbz#1598031
+
 * Sun Oct 29 2017 Jaroslav Škarvada <jskarvad@redhat.com> - 2.9.0-1
 - new release
   - rebased tuned to latest upstream