diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-16 13:33:41 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-04-16 13:33:41 -0400 |
commit | d733ed6c34be3aef0517a04e4103eed6b369ec50 (patch) | |
tree | b49723304c48c2f877b9cb284a4b39361934c670 /include | |
parent | 08150c533c57981054324b9e87dbf686006d890f (diff) | |
parent | 49cac01e1fa74174d72adb0e872504a7fefd7c01 (diff) |
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.h | 13 | ||||
-rw-r--r-- | include/trace/events/block.h | 13 |
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) | |||
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/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, | |||
401 | 401 | ||
402 | DECLARE_EVENT_CLASS(block_unplug, | 402 | DECLARE_EVENT_CLASS(block_unplug, |
403 | 403 | ||
404 | TP_PROTO(struct request_queue *q, unsigned int depth), | 404 | TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit), |
405 | 405 | ||
406 | TP_ARGS(q, depth), | 406 | TP_ARGS(q, depth, explicit), |
407 | 407 | ||
408 | TP_STRUCT__entry( | 408 | TP_STRUCT__entry( |
409 | __field( int, nr_rq ) | 409 | __field( int, nr_rq ) |
@@ -419,18 +419,19 @@ DECLARE_EVENT_CLASS(block_unplug, | |||
419 | ); | 419 | ); |
420 | 420 | ||
421 | /** | 421 | /** |
422 | * block_unplug_io - release of operations requests in request queue | 422 | * block_unplug - release of operations requests in request queue |
423 | * @q: request queue to unplug | 423 | * @q: request queue to unplug |
424 | * @depth: number of requests just added to the queue | 424 | * @depth: number of requests just added to the queue |
425 | * @explicit: whether this was an explicit unplug, or one from schedule() | ||
425 | * | 426 | * |
426 | * Unplug request queue @q because device driver is scheduled to work | 427 | * Unplug request queue @q because device driver is scheduled to work |
427 | * on elements in the request queue. | 428 | * on elements in the request queue. |
428 | */ | 429 | */ |
429 | DEFINE_EVENT(block_unplug, block_unplug_io, | 430 | DEFINE_EVENT(block_unplug, block_unplug, |
430 | 431 | ||
431 | TP_PROTO(struct request_queue *q, unsigned int depth), | 432 | TP_PROTO(struct request_queue *q, unsigned int depth, bool explicit), |
432 | 433 | ||
433 | TP_ARGS(q, depth) | 434 | TP_ARGS(q, depth, explicit) |
434 | ); | 435 | ); |
435 | 436 | ||
436 | /** | 437 | /** |