diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/blkdev.h | 9 | ||||
| -rw-r--r-- | include/trace/events/block.h | 25 |
2 files changed, 12 insertions, 22 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 32176cc8e715..1c76506fcf11 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -196,6 +196,7 @@ typedef void (request_fn_proc) (struct request_queue *q); | |||
| 196 | typedef int (make_request_fn) (struct request_queue *q, struct bio *bio); | 196 | typedef int (make_request_fn) (struct request_queue *q, struct bio *bio); |
| 197 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); | 197 | typedef int (prep_rq_fn) (struct request_queue *, struct request *); |
| 198 | typedef void (unprep_rq_fn) (struct request_queue *, struct request *); | 198 | typedef void (unprep_rq_fn) (struct request_queue *, struct request *); |
| 199 | typedef void (unplugged_fn) (struct request_queue *); | ||
| 199 | 200 | ||
| 200 | struct bio_vec; | 201 | struct bio_vec; |
| 201 | struct bvec_merge_data { | 202 | struct bvec_merge_data { |
| @@ -283,6 +284,7 @@ struct request_queue | |||
| 283 | rq_timed_out_fn *rq_timed_out_fn; | 284 | rq_timed_out_fn *rq_timed_out_fn; |
| 284 | dma_drain_needed_fn *dma_drain_needed; | 285 | dma_drain_needed_fn *dma_drain_needed; |
| 285 | lld_busy_fn *lld_busy_fn; | 286 | lld_busy_fn *lld_busy_fn; |
| 287 | unplugged_fn *unplugged_fn; | ||
| 286 | 288 | ||
| 287 | /* | 289 | /* |
| 288 | * Dispatch queue sorting | 290 | * Dispatch queue sorting |
| @@ -841,6 +843,7 @@ extern void blk_queue_dma_alignment(struct request_queue *, int); | |||
| 841 | extern void blk_queue_update_dma_alignment(struct request_queue *, int); | 843 | extern void blk_queue_update_dma_alignment(struct request_queue *, int); |
| 842 | extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); | 844 | extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *); |
| 843 | extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); | 845 | extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); |
| 846 | extern void blk_queue_unplugged(struct request_queue *, unplugged_fn *); | ||
| 844 | extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); | 847 | extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); |
| 845 | extern void blk_queue_flush(struct request_queue *q, unsigned int flush); | 848 | extern void blk_queue_flush(struct request_queue *q, unsigned int flush); |
| 846 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); | 849 | extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); |
| @@ -862,14 +865,14 @@ struct blk_plug { | |||
| 862 | 865 | ||
| 863 | extern void blk_start_plug(struct blk_plug *); | 866 | extern void blk_start_plug(struct blk_plug *); |
| 864 | extern void blk_finish_plug(struct blk_plug *); | 867 | extern void blk_finish_plug(struct blk_plug *); |
| 865 | extern void __blk_flush_plug(struct task_struct *, struct blk_plug *); | 868 | extern void blk_flush_plug_list(struct blk_plug *, bool); |
| 866 | 869 | ||
| 867 | static inline void blk_flush_plug(struct task_struct *tsk) | 870 | static inline void blk_flush_plug(struct task_struct *tsk) |
| 868 | { | 871 | { |
| 869 | struct blk_plug *plug = tsk->plug; | 872 | struct blk_plug *plug = tsk->plug; |
| 870 | 873 | ||
| 871 | if (unlikely(plug)) | 874 | if (plug) |
| 872 | __blk_flush_plug(tsk, plug); | 875 | blk_flush_plug_list(plug, true); |
| 873 | } | 876 | } |
| 874 | 877 | ||
| 875 | static inline bool blk_needs_flush_plug(struct task_struct *tsk) | 878 | static inline bool blk_needs_flush_plug(struct task_struct *tsk) |
diff --git a/include/trace/events/block.h b/include/trace/events/block.h index 78f18adb49c8..006e60b58306 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), | 404 | TP_PROTO(struct request_queue *q, unsigned int depth), |
| 405 | 405 | ||
| 406 | TP_ARGS(q), | 406 | TP_ARGS(q, depth), |
| 407 | 407 | ||
| 408 | TP_STRUCT__entry( | 408 | TP_STRUCT__entry( |
| 409 | __field( int, nr_rq ) | 409 | __field( int, nr_rq ) |
| @@ -411,7 +411,7 @@ DECLARE_EVENT_CLASS(block_unplug, | |||
| 411 | ), | 411 | ), |
| 412 | 412 | ||
| 413 | TP_fast_assign( | 413 | TP_fast_assign( |
| 414 | __entry->nr_rq = q->rq.count[READ] + q->rq.count[WRITE]; | 414 | __entry->nr_rq = depth; |
| 415 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 415 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 416 | ), | 416 | ), |
| 417 | 417 | ||
| @@ -419,31 +419,18 @@ DECLARE_EVENT_CLASS(block_unplug, | |||
| 419 | ); | 419 | ); |
| 420 | 420 | ||
| 421 | /** | 421 | /** |
| 422 | * block_unplug_timer - timed release of operations requests in queue to device driver | ||
| 423 | * @q: request queue to unplug | ||
| 424 | * | ||
| 425 | * Unplug the request queue @q because a timer expired and allow block | ||
| 426 | * operation requests to be sent to the device driver. | ||
| 427 | */ | ||
| 428 | DEFINE_EVENT(block_unplug, block_unplug_timer, | ||
| 429 | |||
| 430 | TP_PROTO(struct request_queue *q), | ||
| 431 | |||
| 432 | TP_ARGS(q) | ||
| 433 | ); | ||
| 434 | |||
| 435 | /** | ||
| 436 | * block_unplug_io - release of operations requests in request queue | 422 | * block_unplug_io - release of operations requests in request queue |
| 437 | * @q: request queue to unplug | 423 | * @q: request queue to unplug |
| 424 | * @depth: number of requests just added to the queue | ||
| 438 | * | 425 | * |
| 439 | * Unplug request queue @q because device driver is scheduled to work | 426 | * Unplug request queue @q because device driver is scheduled to work |
| 440 | * on elements in the request queue. | 427 | * on elements in the request queue. |
| 441 | */ | 428 | */ |
| 442 | DEFINE_EVENT(block_unplug, block_unplug_io, | 429 | DEFINE_EVENT(block_unplug, block_unplug_io, |
| 443 | 430 | ||
| 444 | TP_PROTO(struct request_queue *q), | 431 | TP_PROTO(struct request_queue *q, unsigned int depth), |
| 445 | 432 | ||
| 446 | TP_ARGS(q) | 433 | TP_ARGS(q, depth) |
| 447 | ); | 434 | ); |
| 448 | 435 | ||
| 449 | /** | 436 | /** |
