diff options
-rw-r--r-- | include/linux/blkdev.h | 13 | ||||
-rw-r--r-- | kernel/sched.c | 2 |
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) | |||
872 | struct blk_plug *plug = tsk->plug; | 872 | struct blk_plug *plug = tsk->plug; |
873 | 873 | ||
874 | if (plug) | 874 | if (plug) |
875 | blk_flush_plug_list(plug, false); | ||
876 | } | ||
877 | |||
878 | static inline void blk_schedule_flush_plug(struct task_struct *tsk) | ||
879 | { | ||
880 | struct blk_plug *plug = tsk->plug; | ||
881 | |||
882 | if (plug) | ||
875 | blk_flush_plug_list(plug, true); | 883 | blk_flush_plug_list(plug, true); |
876 | } | 884 | } |
877 | 885 | ||
@@ -1317,6 +1325,11 @@ static inline void blk_flush_plug(struct task_struct *task) | |||
1317 | { | 1325 | { |
1318 | } | 1326 | } |
1319 | 1327 | ||
1328 | static inline void blk_schedule_flush_plug(struct task_struct *task) | ||
1329 | { | ||
1330 | } | ||
1331 | |||
1332 | |||
1320 | static inline bool blk_needs_flush_plug(struct task_struct *tsk) | 1333 | static inline bool blk_needs_flush_plug(struct task_struct *tsk) |
1321 | { | 1334 | { |
1322 | return false; | 1335 | 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: | |||
4118 | */ | 4118 | */ |
4119 | if (blk_needs_flush_plug(prev)) { | 4119 | if (blk_needs_flush_plug(prev)) { |
4120 | raw_spin_unlock(&rq->lock); | 4120 | raw_spin_unlock(&rq->lock); |
4121 | blk_flush_plug(prev); | 4121 | blk_schedule_flush_plug(prev); |
4122 | raw_spin_lock(&rq->lock); | 4122 | raw_spin_lock(&rq->lock); |
4123 | } | 4123 | } |
4124 | } | 4124 | } |