aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-core.c
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2008-10-30 03:34:33 -0400
committerIngo Molnar <mingo@elte.hu>2008-11-26 06:13:34 -0500
commit5f3ea37c7716db4e894a480e0c18b24399595b6b (patch)
treedb6784635d024894f641b340dcd7c5060c446077 /block/blk-core.c
parent509dceef6470442d8c7b8a43ec34125205840b3c (diff)
blktrace: port to tracepoints
This was a forward port of work done by Mathieu Desnoyers, I changed it to encode the 'what' parameter on the tracepoint name, so that one can register interest in specific events and not on classes of events to then check the 'what' parameter. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'block/blk-core.c')
-rw-r--r--block/blk-core.c33
1 files changed, 14 insertions, 19 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 10e8a64a5a5b..04267d66a2b9 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -28,6 +28,7 @@
28#include <linux/task_io_accounting_ops.h> 28#include <linux/task_io_accounting_ops.h>
29#include <linux/blktrace_api.h> 29#include <linux/blktrace_api.h>
30#include <linux/fault-inject.h> 30#include <linux/fault-inject.h>
31#include <trace/block.h>
31 32
32#include "blk.h" 33#include "blk.h"
33 34
@@ -205,7 +206,7 @@ void blk_plug_device(struct request_queue *q)
205 206
206 if (!queue_flag_test_and_set(QUEUE_FLAG_PLUGGED, q)) { 207 if (!queue_flag_test_and_set(QUEUE_FLAG_PLUGGED, q)) {
207 mod_timer(&q->unplug_timer, jiffies + q->unplug_delay); 208 mod_timer(&q->unplug_timer, jiffies + q->unplug_delay);
208 blk_add_trace_generic(q, NULL, 0, BLK_TA_PLUG); 209 trace_block_plug(q);
209 } 210 }
210} 211}
211EXPORT_SYMBOL(blk_plug_device); 212EXPORT_SYMBOL(blk_plug_device);
@@ -292,9 +293,7 @@ void blk_unplug_work(struct work_struct *work)
292 struct request_queue *q = 293 struct request_queue *q =
293 container_of(work, struct request_queue, unplug_work); 294 container_of(work, struct request_queue, unplug_work);
294 295
295 blk_add_trace_pdu_int(q, BLK_TA_UNPLUG_IO, NULL, 296 trace_block_unplug_io(q);
296 q->rq.count[READ] + q->rq.count[WRITE]);
297
298 q->unplug_fn(q); 297 q->unplug_fn(q);
299} 298}
300 299
@@ -302,9 +301,7 @@ void blk_unplug_timeout(unsigned long data)
302{ 301{
303 struct request_queue *q = (struct request_queue *)data; 302 struct request_queue *q = (struct request_queue *)data;
304 303
305 blk_add_trace_pdu_int(q, BLK_TA_UNPLUG_TIMER, NULL, 304 trace_block_unplug_timer(q);
306 q->rq.count[READ] + q->rq.count[WRITE]);
307
308 kblockd_schedule_work(q, &q->unplug_work); 305 kblockd_schedule_work(q, &q->unplug_work);
309} 306}
310 307
@@ -314,9 +311,7 @@ void blk_unplug(struct request_queue *q)
314 * devices don't necessarily have an ->unplug_fn defined 311 * devices don't necessarily have an ->unplug_fn defined
315 */ 312 */
316 if (q->unplug_fn) { 313 if (q->unplug_fn) {
317 blk_add_trace_pdu_int(q, BLK_TA_UNPLUG_IO, NULL, 314 trace_block_unplug_io(q);
318 q->rq.count[READ] + q->rq.count[WRITE]);
319
320 q->unplug_fn(q); 315 q->unplug_fn(q);
321 } 316 }
322} 317}
@@ -822,7 +817,7 @@ rq_starved:
822 if (ioc_batching(q, ioc)) 817 if (ioc_batching(q, ioc))
823 ioc->nr_batch_requests--; 818 ioc->nr_batch_requests--;
824 819
825 blk_add_trace_generic(q, bio, rw, BLK_TA_GETRQ); 820 trace_block_getrq(q, bio, rw);
826out: 821out:
827 return rq; 822 return rq;
828} 823}
@@ -848,7 +843,7 @@ static struct request *get_request_wait(struct request_queue *q, int rw_flags,
848 prepare_to_wait_exclusive(&rl->wait[rw], &wait, 843 prepare_to_wait_exclusive(&rl->wait[rw], &wait,
849 TASK_UNINTERRUPTIBLE); 844 TASK_UNINTERRUPTIBLE);
850 845
851 blk_add_trace_generic(q, bio, rw, BLK_TA_SLEEPRQ); 846 trace_block_sleeprq(q, bio, rw);
852 847
853 __generic_unplug_device(q); 848 __generic_unplug_device(q);
854 spin_unlock_irq(q->queue_lock); 849 spin_unlock_irq(q->queue_lock);
@@ -928,7 +923,7 @@ void blk_requeue_request(struct request_queue *q, struct request *rq)
928{ 923{
929 blk_delete_timer(rq); 924 blk_delete_timer(rq);
930 blk_clear_rq_complete(rq); 925 blk_clear_rq_complete(rq);
931 blk_add_trace_rq(q, rq, BLK_TA_REQUEUE); 926 trace_block_rq_requeue(q, rq);
932 927
933 if (blk_rq_tagged(rq)) 928 if (blk_rq_tagged(rq))
934 blk_queue_end_tag(q, rq); 929 blk_queue_end_tag(q, rq);
@@ -1167,7 +1162,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
1167 if (!ll_back_merge_fn(q, req, bio)) 1162 if (!ll_back_merge_fn(q, req, bio))
1168 break; 1163 break;
1169 1164
1170 blk_add_trace_bio(q, bio, BLK_TA_BACKMERGE); 1165 trace_block_bio_backmerge(q, bio);
1171 1166
1172 req->biotail->bi_next = bio; 1167 req->biotail->bi_next = bio;
1173 req->biotail = bio; 1168 req->biotail = bio;
@@ -1186,7 +1181,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
1186 if (!ll_front_merge_fn(q, req, bio)) 1181 if (!ll_front_merge_fn(q, req, bio))
1187 break; 1182 break;
1188 1183
1189 blk_add_trace_bio(q, bio, BLK_TA_FRONTMERGE); 1184 trace_block_bio_frontmerge(q, bio);
1190 1185
1191 bio->bi_next = req->bio; 1186 bio->bi_next = req->bio;
1192 req->bio = bio; 1187 req->bio = bio;
@@ -1269,7 +1264,7 @@ static inline void blk_partition_remap(struct bio *bio)
1269 bio->bi_sector += p->start_sect; 1264 bio->bi_sector += p->start_sect;
1270 bio->bi_bdev = bdev->bd_contains; 1265 bio->bi_bdev = bdev->bd_contains;
1271 1266
1272 blk_add_trace_remap(bdev_get_queue(bio->bi_bdev), bio, 1267 trace_block_remap(bdev_get_queue(bio->bi_bdev), bio,
1273 bdev->bd_dev, bio->bi_sector, 1268 bdev->bd_dev, bio->bi_sector,
1274 bio->bi_sector - p->start_sect); 1269 bio->bi_sector - p->start_sect);
1275 } 1270 }
@@ -1441,10 +1436,10 @@ end_io:
1441 goto end_io; 1436 goto end_io;
1442 1437
1443 if (old_sector != -1) 1438 if (old_sector != -1)
1444 blk_add_trace_remap(q, bio, old_dev, bio->bi_sector, 1439 trace_block_remap(q, bio, old_dev, bio->bi_sector,
1445 old_sector); 1440 old_sector);
1446 1441
1447 blk_add_trace_bio(q, bio, BLK_TA_QUEUE); 1442 trace_block_bio_queue(q, bio);
1448 1443
1449 old_sector = bio->bi_sector; 1444 old_sector = bio->bi_sector;
1450 old_dev = bio->bi_bdev->bd_dev; 1445 old_dev = bio->bi_bdev->bd_dev;
@@ -1656,7 +1651,7 @@ static int __end_that_request_first(struct request *req, int error,
1656 int total_bytes, bio_nbytes, next_idx = 0; 1651 int total_bytes, bio_nbytes, next_idx = 0;
1657 struct bio *bio; 1652 struct bio *bio;
1658 1653
1659 blk_add_trace_rq(req->q, req, BLK_TA_COMPLETE); 1654 trace_block_rq_complete(req->q, req);
1660 1655
1661 /* 1656 /*
1662 * for a REQ_TYPE_BLOCK_PC request, we want to carry any eventual 1657 * for a REQ_TYPE_BLOCK_PC request, we want to carry any eventual