diff options
| author | Mike Christie <mchristi@redhat.com> | 2016-06-05 15:32:18 -0400 |
|---|---|---|
| committer | Jens Axboe <axboe@fb.com> | 2016-06-07 15:41:38 -0400 |
| commit | 1b9a9ab78b0ab79dc1f0ddd5fbed7833ec7de3a4 (patch) | |
| tree | ada8868edd0e9c1761507b38db94b0b7cb0347fe | |
| parent | c2df40dfb8c015211ec55f4b1dd0587f875c7b34 (diff) | |
blktrace: use op accessors
Have blktrace use the req/bio op accessor to get the REQ_OP.
Signed-off-by: Mike Christie <mchristi@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
| -rw-r--r-- | include/linux/blktrace_api.h | 2 | ||||
| -rw-r--r-- | include/trace/events/bcache.h | 12 | ||||
| -rw-r--r-- | include/trace/events/block.h | 31 | ||||
| -rw-r--r-- | kernel/trace/blktrace.c | 62 |
4 files changed, 65 insertions, 42 deletions
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index 0f3172b8b225..cceb72f9e29f 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
| @@ -118,7 +118,7 @@ static inline int blk_cmd_buf_len(struct request *rq) | |||
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | extern void blk_dump_cmd(char *buf, struct request *rq); | 120 | extern void blk_dump_cmd(char *buf, struct request *rq); |
| 121 | extern void blk_fill_rwbs(char *rwbs, u32 rw, int bytes); | 121 | extern void blk_fill_rwbs(char *rwbs, int op, u32 rw, int bytes); |
| 122 | 122 | ||
| 123 | #endif /* CONFIG_EVENT_TRACING && CONFIG_BLOCK */ | 123 | #endif /* CONFIG_EVENT_TRACING && CONFIG_BLOCK */ |
| 124 | 124 | ||
diff --git a/include/trace/events/bcache.h b/include/trace/events/bcache.h index 981acf74b14f..65673d8b81ac 100644 --- a/include/trace/events/bcache.h +++ b/include/trace/events/bcache.h | |||
| @@ -27,7 +27,8 @@ DECLARE_EVENT_CLASS(bcache_request, | |||
| 27 | __entry->sector = bio->bi_iter.bi_sector; | 27 | __entry->sector = bio->bi_iter.bi_sector; |
| 28 | __entry->orig_sector = bio->bi_iter.bi_sector - 16; | 28 | __entry->orig_sector = bio->bi_iter.bi_sector - 16; |
| 29 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; | 29 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; |
| 30 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 30 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 31 | bio->bi_iter.bi_size); | ||
| 31 | ), | 32 | ), |
| 32 | 33 | ||
| 33 | TP_printk("%d,%d %s %llu + %u (from %d,%d @ %llu)", | 34 | TP_printk("%d,%d %s %llu + %u (from %d,%d @ %llu)", |
| @@ -101,7 +102,8 @@ DECLARE_EVENT_CLASS(bcache_bio, | |||
| 101 | __entry->dev = bio->bi_bdev->bd_dev; | 102 | __entry->dev = bio->bi_bdev->bd_dev; |
| 102 | __entry->sector = bio->bi_iter.bi_sector; | 103 | __entry->sector = bio->bi_iter.bi_sector; |
| 103 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; | 104 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; |
| 104 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 105 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 106 | bio->bi_iter.bi_size); | ||
| 105 | ), | 107 | ), |
| 106 | 108 | ||
| 107 | TP_printk("%d,%d %s %llu + %u", | 109 | TP_printk("%d,%d %s %llu + %u", |
| @@ -136,7 +138,8 @@ TRACE_EVENT(bcache_read, | |||
| 136 | __entry->dev = bio->bi_bdev->bd_dev; | 138 | __entry->dev = bio->bi_bdev->bd_dev; |
| 137 | __entry->sector = bio->bi_iter.bi_sector; | 139 | __entry->sector = bio->bi_iter.bi_sector; |
| 138 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; | 140 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; |
| 139 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 141 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 142 | bio->bi_iter.bi_size); | ||
| 140 | __entry->cache_hit = hit; | 143 | __entry->cache_hit = hit; |
| 141 | __entry->bypass = bypass; | 144 | __entry->bypass = bypass; |
| 142 | ), | 145 | ), |
| @@ -167,7 +170,8 @@ TRACE_EVENT(bcache_write, | |||
| 167 | __entry->inode = inode; | 170 | __entry->inode = inode; |
| 168 | __entry->sector = bio->bi_iter.bi_sector; | 171 | __entry->sector = bio->bi_iter.bi_sector; |
| 169 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; | 172 | __entry->nr_sector = bio->bi_iter.bi_size >> 9; |
| 170 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 173 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 174 | bio->bi_iter.bi_size); | ||
| 171 | __entry->writeback = writeback; | 175 | __entry->writeback = writeback; |
| 172 | __entry->bypass = bypass; | 176 | __entry->bypass = bypass; |
| 173 | ), | 177 | ), |
diff --git a/include/trace/events/block.h b/include/trace/events/block.h index e8a5eca1dbe5..5a2a7592068f 100644 --- a/include/trace/events/block.h +++ b/include/trace/events/block.h | |||
| @@ -84,7 +84,8 @@ DECLARE_EVENT_CLASS(block_rq_with_error, | |||
| 84 | 0 : blk_rq_sectors(rq); | 84 | 0 : blk_rq_sectors(rq); |
| 85 | __entry->errors = rq->errors; | 85 | __entry->errors = rq->errors; |
| 86 | 86 | ||
| 87 | blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq)); | 87 | blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, |
| 88 | blk_rq_bytes(rq)); | ||
| 88 | blk_dump_cmd(__get_str(cmd), rq); | 89 | blk_dump_cmd(__get_str(cmd), rq); |
| 89 | ), | 90 | ), |
| 90 | 91 | ||
| @@ -162,7 +163,7 @@ TRACE_EVENT(block_rq_complete, | |||
| 162 | __entry->nr_sector = nr_bytes >> 9; | 163 | __entry->nr_sector = nr_bytes >> 9; |
| 163 | __entry->errors = rq->errors; | 164 | __entry->errors = rq->errors; |
| 164 | 165 | ||
| 165 | blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, nr_bytes); | 166 | blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, nr_bytes); |
| 166 | blk_dump_cmd(__get_str(cmd), rq); | 167 | blk_dump_cmd(__get_str(cmd), rq); |
| 167 | ), | 168 | ), |
| 168 | 169 | ||
| @@ -198,7 +199,8 @@ DECLARE_EVENT_CLASS(block_rq, | |||
| 198 | __entry->bytes = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? | 199 | __entry->bytes = (rq->cmd_type == REQ_TYPE_BLOCK_PC) ? |
| 199 | blk_rq_bytes(rq) : 0; | 200 | blk_rq_bytes(rq) : 0; |
| 200 | 201 | ||
| 201 | blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq)); | 202 | blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, |
| 203 | blk_rq_bytes(rq)); | ||
| 202 | blk_dump_cmd(__get_str(cmd), rq); | 204 | blk_dump_cmd(__get_str(cmd), rq); |
| 203 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 205 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 204 | ), | 206 | ), |
| @@ -272,7 +274,8 @@ TRACE_EVENT(block_bio_bounce, | |||
| 272 | bio->bi_bdev->bd_dev : 0; | 274 | bio->bi_bdev->bd_dev : 0; |
| 273 | __entry->sector = bio->bi_iter.bi_sector; | 275 | __entry->sector = bio->bi_iter.bi_sector; |
| 274 | __entry->nr_sector = bio_sectors(bio); | 276 | __entry->nr_sector = bio_sectors(bio); |
| 275 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 277 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 278 | bio->bi_iter.bi_size); | ||
| 276 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 279 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 277 | ), | 280 | ), |
| 278 | 281 | ||
| @@ -310,7 +313,8 @@ TRACE_EVENT(block_bio_complete, | |||
| 310 | __entry->sector = bio->bi_iter.bi_sector; | 313 | __entry->sector = bio->bi_iter.bi_sector; |
| 311 | __entry->nr_sector = bio_sectors(bio); | 314 | __entry->nr_sector = bio_sectors(bio); |
| 312 | __entry->error = error; | 315 | __entry->error = error; |
| 313 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 316 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 317 | bio->bi_iter.bi_size); | ||
| 314 | ), | 318 | ), |
| 315 | 319 | ||
| 316 | TP_printk("%d,%d %s %llu + %u [%d]", | 320 | TP_printk("%d,%d %s %llu + %u [%d]", |
| @@ -337,7 +341,8 @@ DECLARE_EVENT_CLASS(block_bio_merge, | |||
| 337 | __entry->dev = bio->bi_bdev->bd_dev; | 341 | __entry->dev = bio->bi_bdev->bd_dev; |
| 338 | __entry->sector = bio->bi_iter.bi_sector; | 342 | __entry->sector = bio->bi_iter.bi_sector; |
| 339 | __entry->nr_sector = bio_sectors(bio); | 343 | __entry->nr_sector = bio_sectors(bio); |
| 340 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 344 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 345 | bio->bi_iter.bi_size); | ||
| 341 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 346 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 342 | ), | 347 | ), |
| 343 | 348 | ||
| @@ -404,7 +409,8 @@ TRACE_EVENT(block_bio_queue, | |||
| 404 | __entry->dev = bio->bi_bdev->bd_dev; | 409 | __entry->dev = bio->bi_bdev->bd_dev; |
| 405 | __entry->sector = bio->bi_iter.bi_sector; | 410 | __entry->sector = bio->bi_iter.bi_sector; |
| 406 | __entry->nr_sector = bio_sectors(bio); | 411 | __entry->nr_sector = bio_sectors(bio); |
| 407 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 412 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 413 | bio->bi_iter.bi_size); | ||
| 408 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 414 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 409 | ), | 415 | ), |
| 410 | 416 | ||
| @@ -432,7 +438,7 @@ DECLARE_EVENT_CLASS(block_get_rq, | |||
| 432 | __entry->dev = bio ? bio->bi_bdev->bd_dev : 0; | 438 | __entry->dev = bio ? bio->bi_bdev->bd_dev : 0; |
| 433 | __entry->sector = bio ? bio->bi_iter.bi_sector : 0; | 439 | __entry->sector = bio ? bio->bi_iter.bi_sector : 0; |
| 434 | __entry->nr_sector = bio ? bio_sectors(bio) : 0; | 440 | __entry->nr_sector = bio ? bio_sectors(bio) : 0; |
| 435 | blk_fill_rwbs(__entry->rwbs, | 441 | blk_fill_rwbs(__entry->rwbs, bio ? bio_op(bio) : 0, |
| 436 | bio ? bio->bi_rw : 0, __entry->nr_sector); | 442 | bio ? bio->bi_rw : 0, __entry->nr_sector); |
| 437 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 443 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 438 | ), | 444 | ), |
| @@ -567,7 +573,8 @@ TRACE_EVENT(block_split, | |||
| 567 | __entry->dev = bio->bi_bdev->bd_dev; | 573 | __entry->dev = bio->bi_bdev->bd_dev; |
| 568 | __entry->sector = bio->bi_iter.bi_sector; | 574 | __entry->sector = bio->bi_iter.bi_sector; |
| 569 | __entry->new_sector = new_sector; | 575 | __entry->new_sector = new_sector; |
| 570 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 576 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 577 | bio->bi_iter.bi_size); | ||
| 571 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | 578 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); |
| 572 | ), | 579 | ), |
| 573 | 580 | ||
| @@ -610,7 +617,8 @@ TRACE_EVENT(block_bio_remap, | |||
| 610 | __entry->nr_sector = bio_sectors(bio); | 617 | __entry->nr_sector = bio_sectors(bio); |
| 611 | __entry->old_dev = dev; | 618 | __entry->old_dev = dev; |
| 612 | __entry->old_sector = from; | 619 | __entry->old_sector = from; |
| 613 | blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_iter.bi_size); | 620 | blk_fill_rwbs(__entry->rwbs, bio_op(bio), bio->bi_rw, |
| 621 | bio->bi_iter.bi_size); | ||
| 614 | ), | 622 | ), |
| 615 | 623 | ||
| 616 | TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", | 624 | TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", |
| @@ -656,7 +664,8 @@ TRACE_EVENT(block_rq_remap, | |||
| 656 | __entry->old_dev = dev; | 664 | __entry->old_dev = dev; |
| 657 | __entry->old_sector = from; | 665 | __entry->old_sector = from; |
| 658 | __entry->nr_bios = blk_rq_count_bios(rq); | 666 | __entry->nr_bios = blk_rq_count_bios(rq); |
| 659 | blk_fill_rwbs(__entry->rwbs, rq->cmd_flags, blk_rq_bytes(rq)); | 667 | blk_fill_rwbs(__entry->rwbs, req_op(rq), rq->cmd_flags, |
| 668 | blk_rq_bytes(rq)); | ||
| 660 | ), | 669 | ), |
| 661 | 670 | ||
| 662 | TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu %u", | 671 | TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu %u", |
diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 9aef8654e90d..2d16fad519b2 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c | |||
| @@ -199,7 +199,8 @@ static const u32 ddir_act[2] = { BLK_TC_ACT(BLK_TC_READ), | |||
| 199 | * blk_io_trace structure and places it in a per-cpu subbuffer. | 199 | * blk_io_trace structure and places it in a per-cpu subbuffer. |
| 200 | */ | 200 | */ |
| 201 | static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, | 201 | static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, |
| 202 | int rw, u32 what, int error, int pdu_len, void *pdu_data) | 202 | int op, int op_flags, u32 what, int error, int pdu_len, |
| 203 | void *pdu_data) | ||
| 203 | { | 204 | { |
| 204 | struct task_struct *tsk = current; | 205 | struct task_struct *tsk = current; |
| 205 | struct ring_buffer_event *event = NULL; | 206 | struct ring_buffer_event *event = NULL; |
| @@ -214,13 +215,14 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes, | |||
| 214 | if (unlikely(bt->trace_state != Blktrace_running && !blk_tracer)) | 215 | if (unlikely(bt->trace_state != Blktrace_running && !blk_tracer)) |
| 215 | return; | 216 | return; |
| 216 | 217 | ||
| 217 | what |= ddir_act[rw & WRITE]; | 218 | what |= ddir_act[op_is_write(op) ? WRITE : READ]; |
| 218 | what |= MASK_TC_BIT(rw, SYNC); | 219 | what |= MASK_TC_BIT(op_flags, SYNC); |
| 219 | what |= MASK_TC_BIT(rw, RAHEAD); | 220 | what |= MASK_TC_BIT(op_flags, RAHEAD); |
| 220 | what |= MASK_TC_BIT(rw, META); | 221 | what |= MASK_TC_BIT(op_flags, META); |
| 221 | what |= MASK_TC_BIT(rw, DISCARD); | 222 | what |= MASK_TC_BIT(op_flags, FLUSH); |
| 222 | what |= MASK_TC_BIT(rw, FLUSH); | 223 | what |= MASK_TC_BIT(op_flags, FUA); |
| 223 | what |= MASK_TC_BIT(rw, FUA); | 224 | if (op == REQ_OP_DISCARD) |
| 225 | what |= BLK_TC_ACT(BLK_TC_DISCARD); | ||
| 224 | 226 | ||
| 225 | pid = tsk->pid; | 227 | pid = tsk->pid; |
| 226 | if (act_log_check(bt, what, sector, pid)) | 228 | if (act_log_check(bt, what, sector, pid)) |
| @@ -708,11 +710,11 @@ static void blk_add_trace_rq(struct request_queue *q, struct request *rq, | |||
| 708 | 710 | ||
| 709 | if (rq->cmd_type == REQ_TYPE_BLOCK_PC) { | 711 | if (rq->cmd_type == REQ_TYPE_BLOCK_PC) { |
| 710 | what |= BLK_TC_ACT(BLK_TC_PC); | 712 | what |= BLK_TC_ACT(BLK_TC_PC); |
| 711 | __blk_add_trace(bt, 0, nr_bytes, rq->cmd_flags, | 713 | __blk_add_trace(bt, 0, nr_bytes, req_op(rq), rq->cmd_flags, |
| 712 | what, rq->errors, rq->cmd_len, rq->cmd); | 714 | what, rq->errors, rq->cmd_len, rq->cmd); |
| 713 | } else { | 715 | } else { |
| 714 | what |= BLK_TC_ACT(BLK_TC_FS); | 716 | what |= BLK_TC_ACT(BLK_TC_FS); |
| 715 | __blk_add_trace(bt, blk_rq_pos(rq), nr_bytes, | 717 | __blk_add_trace(bt, blk_rq_pos(rq), nr_bytes, req_op(rq), |
| 716 | rq->cmd_flags, what, rq->errors, 0, NULL); | 718 | rq->cmd_flags, what, rq->errors, 0, NULL); |
| 717 | } | 719 | } |
| 718 | } | 720 | } |
| @@ -770,7 +772,7 @@ static void blk_add_trace_bio(struct request_queue *q, struct bio *bio, | |||
| 770 | return; | 772 | return; |
| 771 | 773 | ||
| 772 | __blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, | 774 | __blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, |
| 773 | bio->bi_rw, what, error, 0, NULL); | 775 | bio_op(bio), bio->bi_rw, what, error, 0, NULL); |
| 774 | } | 776 | } |
| 775 | 777 | ||
| 776 | static void blk_add_trace_bio_bounce(void *ignore, | 778 | static void blk_add_trace_bio_bounce(void *ignore, |
| @@ -818,7 +820,8 @@ static void blk_add_trace_getrq(void *ignore, | |||
| 818 | struct blk_trace *bt = q->blk_trace; | 820 | struct blk_trace *bt = q->blk_trace; |
| 819 | 821 | ||
| 820 | if (bt) | 822 | if (bt) |
| 821 | __blk_add_trace(bt, 0, 0, rw, BLK_TA_GETRQ, 0, 0, NULL); | 823 | __blk_add_trace(bt, 0, 0, rw, 0, BLK_TA_GETRQ, 0, 0, |
| 824 | NULL); | ||
| 822 | } | 825 | } |
| 823 | } | 826 | } |
| 824 | 827 | ||
| @@ -833,7 +836,7 @@ static void blk_add_trace_sleeprq(void *ignore, | |||
| 833 | struct blk_trace *bt = q->blk_trace; | 836 | struct blk_trace *bt = q->blk_trace; |
| 834 | 837 | ||
| 835 | if (bt) | 838 | if (bt) |
| 836 | __blk_add_trace(bt, 0, 0, rw, BLK_TA_SLEEPRQ, | 839 | __blk_add_trace(bt, 0, 0, rw, 0, BLK_TA_SLEEPRQ, |
| 837 | 0, 0, NULL); | 840 | 0, 0, NULL); |
| 838 | } | 841 | } |
| 839 | } | 842 | } |
| @@ -843,7 +846,7 @@ static void blk_add_trace_plug(void *ignore, struct request_queue *q) | |||
| 843 | struct blk_trace *bt = q->blk_trace; | 846 | struct blk_trace *bt = q->blk_trace; |
| 844 | 847 | ||
| 845 | if (bt) | 848 | if (bt) |
| 846 | __blk_add_trace(bt, 0, 0, 0, BLK_TA_PLUG, 0, 0, NULL); | 849 | __blk_add_trace(bt, 0, 0, 0, 0, BLK_TA_PLUG, 0, 0, NULL); |
| 847 | } | 850 | } |
| 848 | 851 | ||
| 849 | static void blk_add_trace_unplug(void *ignore, struct request_queue *q, | 852 | static void blk_add_trace_unplug(void *ignore, struct request_queue *q, |
| @@ -860,7 +863,7 @@ static void blk_add_trace_unplug(void *ignore, struct request_queue *q, | |||
| 860 | else | 863 | else |
| 861 | what = BLK_TA_UNPLUG_TIMER; | 864 | what = BLK_TA_UNPLUG_TIMER; |
| 862 | 865 | ||
| 863 | __blk_add_trace(bt, 0, 0, 0, what, 0, sizeof(rpdu), &rpdu); | 866 | __blk_add_trace(bt, 0, 0, 0, 0, what, 0, sizeof(rpdu), &rpdu); |
| 864 | } | 867 | } |
| 865 | } | 868 | } |
| 866 | 869 | ||
| @@ -874,8 +877,9 @@ static void blk_add_trace_split(void *ignore, | |||
| 874 | __be64 rpdu = cpu_to_be64(pdu); | 877 | __be64 rpdu = cpu_to_be64(pdu); |
| 875 | 878 | ||
| 876 | __blk_add_trace(bt, bio->bi_iter.bi_sector, | 879 | __blk_add_trace(bt, bio->bi_iter.bi_sector, |
| 877 | bio->bi_iter.bi_size, bio->bi_rw, BLK_TA_SPLIT, | 880 | bio->bi_iter.bi_size, bio_op(bio), bio->bi_rw, |
| 878 | bio->bi_error, sizeof(rpdu), &rpdu); | 881 | BLK_TA_SPLIT, bio->bi_error, sizeof(rpdu), |
| 882 | &rpdu); | ||
| 879 | } | 883 | } |
| 880 | } | 884 | } |
| 881 | 885 | ||
| @@ -907,7 +911,7 @@ static void blk_add_trace_bio_remap(void *ignore, | |||
| 907 | r.sector_from = cpu_to_be64(from); | 911 | r.sector_from = cpu_to_be64(from); |
| 908 | 912 | ||
| 909 | __blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, | 913 | __blk_add_trace(bt, bio->bi_iter.bi_sector, bio->bi_iter.bi_size, |
| 910 | bio->bi_rw, BLK_TA_REMAP, bio->bi_error, | 914 | bio_op(bio), bio->bi_rw, BLK_TA_REMAP, bio->bi_error, |
| 911 | sizeof(r), &r); | 915 | sizeof(r), &r); |
| 912 | } | 916 | } |
| 913 | 917 | ||
| @@ -940,7 +944,7 @@ static void blk_add_trace_rq_remap(void *ignore, | |||
| 940 | r.sector_from = cpu_to_be64(from); | 944 | r.sector_from = cpu_to_be64(from); |
| 941 | 945 | ||
| 942 | __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), | 946 | __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), |
| 943 | rq_data_dir(rq), BLK_TA_REMAP, !!rq->errors, | 947 | rq_data_dir(rq), 0, BLK_TA_REMAP, !!rq->errors, |
| 944 | sizeof(r), &r); | 948 | sizeof(r), &r); |
| 945 | } | 949 | } |
| 946 | 950 | ||
| @@ -965,10 +969,10 @@ void blk_add_driver_data(struct request_queue *q, | |||
| 965 | return; | 969 | return; |
| 966 | 970 | ||
| 967 | if (rq->cmd_type == REQ_TYPE_BLOCK_PC) | 971 | if (rq->cmd_type == REQ_TYPE_BLOCK_PC) |
| 968 | __blk_add_trace(bt, 0, blk_rq_bytes(rq), 0, | 972 | __blk_add_trace(bt, 0, blk_rq_bytes(rq), 0, 0, |
| 969 | BLK_TA_DRV_DATA, rq->errors, len, data); | 973 | BLK_TA_DRV_DATA, rq->errors, len, data); |
| 970 | else | 974 | else |
| 971 | __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), 0, | 975 | __blk_add_trace(bt, blk_rq_pos(rq), blk_rq_bytes(rq), 0, 0, |
| 972 | BLK_TA_DRV_DATA, rq->errors, len, data); | 976 | BLK_TA_DRV_DATA, rq->errors, len, data); |
| 973 | } | 977 | } |
| 974 | EXPORT_SYMBOL_GPL(blk_add_driver_data); | 978 | EXPORT_SYMBOL_GPL(blk_add_driver_data); |
| @@ -1769,21 +1773,27 @@ void blk_dump_cmd(char *buf, struct request *rq) | |||
| 1769 | } | 1773 | } |
| 1770 | } | 1774 | } |
| 1771 | 1775 | ||
| 1772 | void blk_fill_rwbs(char *rwbs, u32 rw, int bytes) | 1776 | void blk_fill_rwbs(char *rwbs, int op, u32 rw, int bytes) |
| 1773 | { | 1777 | { |
| 1774 | int i = 0; | 1778 | int i = 0; |
| 1775 | 1779 | ||
| 1776 | if (rw & REQ_FLUSH) | 1780 | if (rw & REQ_FLUSH) |
| 1777 | rwbs[i++] = 'F'; | 1781 | rwbs[i++] = 'F'; |
| 1778 | 1782 | ||
| 1779 | if (rw & WRITE) | 1783 | switch (op) { |
| 1784 | case REQ_OP_WRITE: | ||
| 1785 | case REQ_OP_WRITE_SAME: | ||
| 1780 | rwbs[i++] = 'W'; | 1786 | rwbs[i++] = 'W'; |
| 1781 | else if (rw & REQ_DISCARD) | 1787 | break; |
| 1788 | case REQ_OP_DISCARD: | ||
| 1782 | rwbs[i++] = 'D'; | 1789 | rwbs[i++] = 'D'; |
| 1783 | else if (bytes) | 1790 | break; |
| 1791 | case REQ_OP_READ: | ||
| 1784 | rwbs[i++] = 'R'; | 1792 | rwbs[i++] = 'R'; |
| 1785 | else | 1793 | break; |
| 1794 | default: | ||
| 1786 | rwbs[i++] = 'N'; | 1795 | rwbs[i++] = 'N'; |
| 1796 | } | ||
| 1787 | 1797 | ||
| 1788 | if (rw & REQ_FUA) | 1798 | if (rw & REQ_FUA) |
| 1789 | rwbs[i++] = 'F'; | 1799 | rwbs[i++] = 'F'; |
