summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-04-16 19:33:41 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2011-04-16 19:33:41 +0200
commitd733ed6c34be3aef0517a04e4103eed6b369ec50 (patch)
treeb49723304c48c2f877b9cb284a4b39361934c670 /include
parentMerge branch 'usb-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gre... (diff)
parentblock: make unplug timer trace event correspond to the schedule() unplug (diff)
downloadlinux-d733ed6c34be3aef0517a04e4103eed6b369ec50.tar.xz
linux-d733ed6c34be3aef0517a04e4103eed6b369ec50.zip
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block: block: make unplug timer trace event correspond to the schedule() unplug block: let io_schedule() flush the plug inline
Diffstat (limited to 'include')
-rw-r--r--include/linux/blkdev.h13
-rw-r--r--include/trace/events/block.h13
2 files changed, 20 insertions, 6 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/include/trace/events/block.h b/include/trace/events/block.h
index 006e60b58306..bf366547da25 100644
--- a/include/trace/events/block.h
+++ b/include/trace/events/block.h
@@ -401,9 +401,9 @@ TRACE_EVENT(block_plug,
DECLARE_EVENT_CLASS(block_unplug,
- TP_PROTO(struct request_queue *q, unsigned int depth),
+ TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit),
- TP_ARGS(q, depth),
+ TP_ARGS(q, depth, explicit),
TP_STRUCT__entry(
__field( int, nr_rq )
@@ -419,18 +419,19 @@ DECLARE_EVENT_CLASS(block_unplug,
);
/**
- * block_unplug_io - release of operations requests in request queue
+ * block_unplug - release of operations requests in request queue
* @q: request queue to unplug
* @depth: number of requests just added to the queue
+ * @explicit: whether this was an explicit unplug, or one from schedule()
*
* Unplug request queue @q because device driver is scheduled to work
* on elements in the request queue.
*/
-DEFINE_EVENT(block_unplug, block_unplug_io,
+DEFINE_EVENT(block_unplug, block_unplug,
- TP_PROTO(struct request_queue *q, unsigned int depth),
+ TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit),
- TP_ARGS(q, depth)
+ TP_ARGS(q, depth, explicit)
);
/**