From 4751d6e9352bbd9e71bd14ad84aea21d800fda1e Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Thu, 19 Mar 2015 09:11:13 -0400 Subject: [PATCH] Add patch to fix high cpu usage on direct_read kernfs files (rhbz 1202362) --- kernel.spec | 9 +++++ ...-poll-correctly-on-direct_read-files.patch | 38 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 kernfs-handle-poll-correctly-on-direct_read-files.patch 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 +- Add patch to fix high cpu usage on direct_read kernfs files (rhbz 1202362) + * Wed Mar 18 2015 Jarod Wilson - 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 +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 +Reported-by: Torsten Kaiser +Fixes: 750f199ee8b578062341e6ddfe36c59ac8ff2dcb +Signed-off-by: NeilBrown +--- + 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 +