summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-09-15 18:25:47 +0200
committerSteven Rostedt <rostedt@goodmis.org>2016-11-16 14:23:23 -0500
commita7bb15bf0fbbe4c2affdf4915b852d841bf0b4bb (patch)
tree870aa2b0e70d3f53702cd8ee45e77e1fde51cdc1
parent693a2956c4314e9bfa12a38871180add5ce5d8be (diff)
downloadlinux-rt-a7bb15bf0fbbe4c2affdf4915b852d841bf0b4bb.tar.gz
fs/dcache: incremental fixup of the retry routine
It has been pointed out by tglx that on UP the non-RT task could spin its entire time slice because the lock owner is preempted. This won't happen on !RT. So we back to "chill" if we can't cond_resched() did not work. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--fs/dcache.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 408551d483b7..e0a439c13318 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -38,8 +38,6 @@
#include <linux/prefetch.h>
#include <linux/ratelimit.h>
#include <linux/delay.h>
-#include <linux/sched/rt.h>
-#include <linux/sched/deadline.h>
#include "internal.h"
#include "mount.h"
@@ -575,10 +573,11 @@ kill_it:
if (parent == dentry) {
/* the task with the highest priority won't schedule */
r = cond_resched();
- if (!r && (rt_task(current) || dl_task(current)))
+ if (!r)
cpu_chill();
- } else
+ } else {
dentry = parent;
+ }
goto repeat;
}
}