summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/linux/blkdev.h13
-rw-r--r--kernel/sched.c2
2 files changed, 14 insertions, 1 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 1c76506fcf11..ec0357d8c4a5 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -872,6 +872,14 @@ static inline void blk_flush_plug(struct task_struct *tsk)
struct blk_plug *plug = tsk->plug;
if (plug)
+ blk_flush_plug_list(plug, false);
+}
+
+static inline void blk_schedule_flush_plug(struct task_struct *tsk)
+{
+ struct blk_plug *plug = tsk->plug;
+
+ if (plug)
blk_flush_plug_list(plug, true);
}
@@ -1317,6 +1325,11 @@ static inline void blk_flush_plug(struct task_struct *task)
{
}
+static inline void blk_schedule_flush_plug(struct task_struct *task)
+{
+}
+
+
static inline bool blk_needs_flush_plug(struct task_struct *tsk)
{
return false;
diff --git a/kernel/sched.c b/kernel/sched.c
index a187c3fe027b..312f8b95c2d4 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4118,7 +4118,7 @@ need_resched:
*/
if (blk_needs_flush_plug(prev)) {
raw_spin_unlock(&rq->lock);
- blk_flush_plug(prev);
+ blk_schedule_flush_plug(prev);
raw_spin_lock(&rq->lock);
}
}