summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@fedoraproject.org>2015-03-19 09:11:13 -0400
committerJosh Boyer <jwboyer@fedoraproject.org>2015-03-19 09:11:13 -0400
commit4751d6e9352bbd9e71bd14ad84aea21d800fda1e (patch)
treee94abfb9851f7f9cbcf903a2595dd85ee992694a
parentcde0b0eb7ade2ae3a054d8ec5bf5dea98a4c2ec6 (diff)
downloadkernel-4751d6e9352bbd9e71bd14ad84aea21d800fda1e.tar.gz
kernel-4751d6e9352bbd9e71bd14ad84aea21d800fda1e.tar.xz
kernel-4751d6e9352bbd9e71bd14ad84aea21d800fda1e.zip
Add patch to fix high cpu usage on direct_read kernfs files (rhbz 1202362)
-rw-r--r--kernel.spec9
-rw-r--r--kernfs-handle-poll-correctly-on-direct_read-files.patch38
2 files changed, 47 insertions, 0 deletions
diff --git a/kernel.spec b/kernel.spec
index fe3c3a46a..926a74976 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -647,6 +647,9 @@ Patch26167: IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch
#rhbz 1201532
Patch26168: HID-multitouch-add-support-of-clickpads.patch
+#rhbz 1202362
+Patch26169: kernfs-handle-poll-correctly-on-direct_read-files.patch
+
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
Patch30000: kernel-arm64.patch
@@ -1402,6 +1405,9 @@ ApplyPatch IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch
#rhbz 1201532
ApplyPatch HID-multitouch-add-support-of-clickpads.patch
+#rhbz 1202362
+ApplyPatch kernfs-handle-poll-correctly-on-direct_read-files.patch
+
%if 0%{?aarch64patches}
ApplyPatch kernel-arm64.patch
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
@@ -2259,6 +2265,9 @@ fi
#
#
%changelog
+* Thu Mar 19 2015 Josh Boyer <jwboyer@fedoraproject.org>
+- Add patch to fix high cpu usage on direct_read kernfs files (rhbz 1202362)
+
* Wed Mar 18 2015 Jarod Wilson <jwilson@fedoraproject.org>
- Fix kernel-uname-r Requires/Provides variant mismatches
diff --git a/kernfs-handle-poll-correctly-on-direct_read-files.patch b/kernfs-handle-poll-correctly-on-direct_read-files.patch
new file mode 100644
index 000000000..40c3cc86e
--- /dev/null
+++ b/kernfs-handle-poll-correctly-on-direct_read-files.patch
@@ -0,0 +1,38 @@
+From: NeilBrown <neilb@suse.de>
+Date: Mon, 16 Mar 2015 10:44:52 +1100
+Subject: [PATCH] kernfs: handle poll correctly on 'direct_read' files.
+
+Kernfs supports two styles of read: direct_read and seqfile_read.
+
+The latter supports 'poll' correctly thanks to the update of
+'->event' in kernfs_seq_show.
+The former does not as '->event' is never updated on a read.
+
+So add an appropriate update in kernfs_file_direct_read().
+
+This was noticed because some 'md' sysfs attributes were
+recently changed to use direct reads.
+
+Reported-by: Prakash Punnoor <prakash@punnoor.de>
+Reported-by: Torsten Kaiser <just.for.lkml@googlemail.com>
+Fixes: 750f199ee8b578062341e6ddfe36c59ac8ff2dcb
+Signed-off-by: NeilBrown <neilb@suse.de>
+---
+ fs/kernfs/file.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
+index b684e8a132e6..2bacb9988566 100644
+--- a/fs/kernfs/file.c
++++ b/fs/kernfs/file.c
+@@ -207,6 +207,7 @@ static ssize_t kernfs_file_direct_read(struct kernfs_open_file *of,
+ goto out_free;
+ }
+
++ of->event = atomic_read(&of->kn->attr.open->event);
+ ops = kernfs_ops(of->kn);
+ if (ops->read)
+ len = ops->read(of, buf, len, *ppos);
+--
+2.1.0
+