155782138SLi Zefan #if !defined(_TRACE_BLOCK_H) || defined(TRACE_HEADER_MULTI_READ) 255782138SLi Zefan #define _TRACE_BLOCK_H 355782138SLi Zefan 455782138SLi Zefan #include <linux/blktrace_api.h> 555782138SLi Zefan #include <linux/blkdev.h> 655782138SLi Zefan #include <linux/tracepoint.h> 755782138SLi Zefan 855782138SLi Zefan #undef TRACE_SYSTEM 955782138SLi Zefan #define TRACE_SYSTEM block 1055782138SLi Zefan 1155782138SLi Zefan TRACE_EVENT(block_rq_abort, 1255782138SLi Zefan 1355782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 1455782138SLi Zefan 1555782138SLi Zefan TP_ARGS(q, rq), 1655782138SLi Zefan 1755782138SLi Zefan TP_STRUCT__entry( 1855782138SLi Zefan __field( dev_t, dev ) 1955782138SLi Zefan __field( sector_t, sector ) 2055782138SLi Zefan __field( unsigned int, nr_sector ) 2155782138SLi Zefan __field( int, errors ) 2255782138SLi Zefan __array( char, rwbs, 6 ) 2355782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 2455782138SLi Zefan ), 2555782138SLi Zefan 2655782138SLi Zefan TP_fast_assign( 2755782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 2855782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 2955782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 3055782138SLi Zefan 0 : rq->hard_nr_sectors; 3155782138SLi Zefan __entry->errors = rq->errors; 3255782138SLi Zefan 3355782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 3455782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 3555782138SLi Zefan ), 3655782138SLi Zefan 3755782138SLi Zefan TP_printk("%d,%d %s (%s) %llu + %u [%d]", 3855782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 3955782138SLi Zefan __entry->rwbs, __get_str(cmd), 40*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 41*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->errors) 4255782138SLi Zefan ); 4355782138SLi Zefan 4455782138SLi Zefan TRACE_EVENT(block_rq_insert, 4555782138SLi Zefan 4655782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 4755782138SLi Zefan 4855782138SLi Zefan TP_ARGS(q, rq), 4955782138SLi Zefan 5055782138SLi Zefan TP_STRUCT__entry( 5155782138SLi Zefan __field( dev_t, dev ) 5255782138SLi Zefan __field( sector_t, sector ) 5355782138SLi Zefan __field( unsigned int, nr_sector ) 5455782138SLi Zefan __field( unsigned int, bytes ) 5555782138SLi Zefan __array( char, rwbs, 6 ) 5655782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 5755782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 5855782138SLi Zefan ), 5955782138SLi Zefan 6055782138SLi Zefan TP_fast_assign( 6155782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 6255782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 6355782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 6455782138SLi Zefan 0 : rq->hard_nr_sectors; 6555782138SLi Zefan __entry->bytes = blk_pc_request(rq) ? rq->data_len : 0; 6655782138SLi Zefan 6755782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 6855782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 6955782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 7055782138SLi Zefan ), 7155782138SLi Zefan 7255782138SLi Zefan TP_printk("%d,%d %s %u (%s) %llu + %u [%s]", 7355782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 7455782138SLi Zefan __entry->rwbs, __entry->bytes, __get_str(cmd), 75*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 76*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 7755782138SLi Zefan ); 7855782138SLi Zefan 7955782138SLi Zefan TRACE_EVENT(block_rq_issue, 8055782138SLi Zefan 8155782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 8255782138SLi Zefan 8355782138SLi Zefan TP_ARGS(q, rq), 8455782138SLi Zefan 8555782138SLi Zefan TP_STRUCT__entry( 8655782138SLi Zefan __field( dev_t, dev ) 8755782138SLi Zefan __field( sector_t, sector ) 8855782138SLi Zefan __field( unsigned int, nr_sector ) 8955782138SLi Zefan __field( unsigned int, bytes ) 9055782138SLi Zefan __array( char, rwbs, 6 ) 9155782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 9255782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 9355782138SLi Zefan ), 9455782138SLi Zefan 9555782138SLi Zefan TP_fast_assign( 9655782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 9755782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 9855782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 9955782138SLi Zefan 0 : rq->hard_nr_sectors; 10055782138SLi Zefan __entry->bytes = blk_pc_request(rq) ? rq->data_len : 0; 10155782138SLi Zefan 10255782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 10355782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 10455782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 10555782138SLi Zefan ), 10655782138SLi Zefan 10755782138SLi Zefan TP_printk("%d,%d %s %u (%s) %llu + %u [%s]", 10855782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 10955782138SLi Zefan __entry->rwbs, __entry->bytes, __get_str(cmd), 110*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 111*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 11255782138SLi Zefan ); 11355782138SLi Zefan 11455782138SLi Zefan TRACE_EVENT(block_rq_requeue, 11555782138SLi Zefan 11655782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 11755782138SLi Zefan 11855782138SLi Zefan TP_ARGS(q, rq), 11955782138SLi Zefan 12055782138SLi Zefan TP_STRUCT__entry( 12155782138SLi Zefan __field( dev_t, dev ) 12255782138SLi Zefan __field( sector_t, sector ) 12355782138SLi Zefan __field( unsigned int, nr_sector ) 12455782138SLi Zefan __field( int, errors ) 12555782138SLi Zefan __array( char, rwbs, 6 ) 12655782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 12755782138SLi Zefan ), 12855782138SLi Zefan 12955782138SLi Zefan TP_fast_assign( 13055782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 13155782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 13255782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 13355782138SLi Zefan 0 : rq->hard_nr_sectors; 13455782138SLi Zefan __entry->errors = rq->errors; 13555782138SLi Zefan 13655782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 13755782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 13855782138SLi Zefan ), 13955782138SLi Zefan 14055782138SLi Zefan TP_printk("%d,%d %s (%s) %llu + %u [%d]", 14155782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 14255782138SLi Zefan __entry->rwbs, __get_str(cmd), 143*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 144*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->errors) 14555782138SLi Zefan ); 14655782138SLi Zefan 14755782138SLi Zefan TRACE_EVENT(block_rq_complete, 14855782138SLi Zefan 14955782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 15055782138SLi Zefan 15155782138SLi Zefan TP_ARGS(q, rq), 15255782138SLi Zefan 15355782138SLi Zefan TP_STRUCT__entry( 15455782138SLi Zefan __field( dev_t, dev ) 15555782138SLi Zefan __field( sector_t, sector ) 15655782138SLi Zefan __field( unsigned int, nr_sector ) 15755782138SLi Zefan __field( int, errors ) 15855782138SLi Zefan __array( char, rwbs, 6 ) 15955782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 16055782138SLi Zefan ), 16155782138SLi Zefan 16255782138SLi Zefan TP_fast_assign( 16355782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 16455782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 16555782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 16655782138SLi Zefan 0 : rq->hard_nr_sectors; 16755782138SLi Zefan __entry->errors = rq->errors; 16855782138SLi Zefan 16955782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 17055782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 17155782138SLi Zefan ), 17255782138SLi Zefan 17355782138SLi Zefan TP_printk("%d,%d %s (%s) %llu + %u [%d]", 17455782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 17555782138SLi Zefan __entry->rwbs, __get_str(cmd), 176*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 177*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->errors) 17855782138SLi Zefan ); 17955782138SLi Zefan TRACE_EVENT(block_bio_bounce, 18055782138SLi Zefan 18155782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 18255782138SLi Zefan 18355782138SLi Zefan TP_ARGS(q, bio), 18455782138SLi Zefan 18555782138SLi Zefan TP_STRUCT__entry( 18655782138SLi Zefan __field( dev_t, dev ) 18755782138SLi Zefan __field( sector_t, sector ) 18855782138SLi Zefan __field( unsigned int, nr_sector ) 18955782138SLi Zefan __array( char, rwbs, 6 ) 19055782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 19155782138SLi Zefan ), 19255782138SLi Zefan 19355782138SLi Zefan TP_fast_assign( 19455782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 19555782138SLi Zefan __entry->sector = bio->bi_sector; 19655782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 19755782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 19855782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 19955782138SLi Zefan ), 20055782138SLi Zefan 20155782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 20255782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 203*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 204*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 20555782138SLi Zefan ); 20655782138SLi Zefan 20755782138SLi Zefan TRACE_EVENT(block_bio_complete, 20855782138SLi Zefan 20955782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 21055782138SLi Zefan 21155782138SLi Zefan TP_ARGS(q, bio), 21255782138SLi Zefan 21355782138SLi Zefan TP_STRUCT__entry( 21455782138SLi Zefan __field( dev_t, dev ) 21555782138SLi Zefan __field( sector_t, sector ) 21655782138SLi Zefan __field( unsigned, nr_sector ) 21755782138SLi Zefan __field( int, error ) 21855782138SLi Zefan __array( char, rwbs, 6 ) 21955782138SLi Zefan ), 22055782138SLi Zefan 22155782138SLi Zefan TP_fast_assign( 22255782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 22355782138SLi Zefan __entry->sector = bio->bi_sector; 22455782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 22555782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 22655782138SLi Zefan ), 22755782138SLi Zefan 22855782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%d]", 22955782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 230*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 231*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->error) 23255782138SLi Zefan ); 23355782138SLi Zefan 23455782138SLi Zefan TRACE_EVENT(block_bio_backmerge, 23555782138SLi Zefan 23655782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 23755782138SLi Zefan 23855782138SLi Zefan TP_ARGS(q, bio), 23955782138SLi Zefan 24055782138SLi Zefan TP_STRUCT__entry( 24155782138SLi Zefan __field( dev_t, dev ) 24255782138SLi Zefan __field( sector_t, sector ) 24355782138SLi Zefan __field( unsigned int, nr_sector ) 24455782138SLi Zefan __array( char, rwbs, 6 ) 24555782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 24655782138SLi Zefan ), 24755782138SLi Zefan 24855782138SLi Zefan TP_fast_assign( 24955782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 25055782138SLi Zefan __entry->sector = bio->bi_sector; 25155782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 25255782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 25355782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 25455782138SLi Zefan ), 25555782138SLi Zefan 25655782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 25755782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 258*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 259*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 26055782138SLi Zefan ); 26155782138SLi Zefan 26255782138SLi Zefan TRACE_EVENT(block_bio_frontmerge, 26355782138SLi Zefan 26455782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 26555782138SLi Zefan 26655782138SLi Zefan TP_ARGS(q, bio), 26755782138SLi Zefan 26855782138SLi Zefan TP_STRUCT__entry( 26955782138SLi Zefan __field( dev_t, dev ) 27055782138SLi Zefan __field( sector_t, sector ) 27155782138SLi Zefan __field( unsigned, nr_sector ) 27255782138SLi Zefan __array( char, rwbs, 6 ) 27355782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 27455782138SLi Zefan ), 27555782138SLi Zefan 27655782138SLi Zefan TP_fast_assign( 27755782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 27855782138SLi Zefan __entry->sector = bio->bi_sector; 27955782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 28055782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 28155782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 28255782138SLi Zefan ), 28355782138SLi Zefan 28455782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 28555782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 286*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 287*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 28855782138SLi Zefan ); 28955782138SLi Zefan 29055782138SLi Zefan TRACE_EVENT(block_bio_queue, 29155782138SLi Zefan 29255782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 29355782138SLi Zefan 29455782138SLi Zefan TP_ARGS(q, bio), 29555782138SLi Zefan 29655782138SLi Zefan TP_STRUCT__entry( 29755782138SLi Zefan __field( dev_t, dev ) 29855782138SLi Zefan __field( sector_t, sector ) 29955782138SLi Zefan __field( unsigned int, nr_sector ) 30055782138SLi Zefan __array( char, rwbs, 6 ) 30155782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 30255782138SLi Zefan ), 30355782138SLi Zefan 30455782138SLi Zefan TP_fast_assign( 30555782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 30655782138SLi Zefan __entry->sector = bio->bi_sector; 30755782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 30855782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 30955782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 31055782138SLi Zefan ), 31155782138SLi Zefan 31255782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 31355782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 314*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 315*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 31655782138SLi Zefan ); 31755782138SLi Zefan 31855782138SLi Zefan TRACE_EVENT(block_getrq, 31955782138SLi Zefan 32055782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, int rw), 32155782138SLi Zefan 32255782138SLi Zefan TP_ARGS(q, bio, rw), 32355782138SLi Zefan 32455782138SLi Zefan TP_STRUCT__entry( 32555782138SLi Zefan __field( dev_t, dev ) 32655782138SLi Zefan __field( sector_t, sector ) 32755782138SLi Zefan __field( unsigned int, nr_sector ) 32855782138SLi Zefan __array( char, rwbs, 6 ) 32955782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 33055782138SLi Zefan ), 33155782138SLi Zefan 33255782138SLi Zefan TP_fast_assign( 33355782138SLi Zefan __entry->dev = bio ? bio->bi_bdev->bd_dev : 0; 33455782138SLi Zefan __entry->sector = bio ? bio->bi_sector : 0; 33555782138SLi Zefan __entry->nr_sector = bio ? bio->bi_size >> 9 : 0; 33655782138SLi Zefan blk_fill_rwbs(__entry->rwbs, 33755782138SLi Zefan bio ? bio->bi_rw : 0, __entry->nr_sector); 33855782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 33955782138SLi Zefan ), 34055782138SLi Zefan 34155782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 34255782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 343*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 344*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 34555782138SLi Zefan ); 34655782138SLi Zefan 34755782138SLi Zefan TRACE_EVENT(block_sleeprq, 34855782138SLi Zefan 34955782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, int rw), 35055782138SLi Zefan 35155782138SLi Zefan TP_ARGS(q, bio, rw), 35255782138SLi Zefan 35355782138SLi Zefan TP_STRUCT__entry( 35455782138SLi Zefan __field( dev_t, dev ) 35555782138SLi Zefan __field( sector_t, sector ) 35655782138SLi Zefan __field( unsigned int, nr_sector ) 35755782138SLi Zefan __array( char, rwbs, 6 ) 35855782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 35955782138SLi Zefan ), 36055782138SLi Zefan 36155782138SLi Zefan TP_fast_assign( 36255782138SLi Zefan __entry->dev = bio ? bio->bi_bdev->bd_dev : 0; 36355782138SLi Zefan __entry->sector = bio ? bio->bi_sector : 0; 36455782138SLi Zefan __entry->nr_sector = bio ? bio->bi_size >> 9 : 0; 36555782138SLi Zefan blk_fill_rwbs(__entry->rwbs, 36655782138SLi Zefan bio ? bio->bi_rw : 0, __entry->nr_sector); 36755782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 36855782138SLi Zefan ), 36955782138SLi Zefan 37055782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 37155782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 372*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 373*6556d1dfSSteven Rostedt __entry->nr_sector, __entry->comm) 37455782138SLi Zefan ); 37555782138SLi Zefan 37655782138SLi Zefan TRACE_EVENT(block_plug, 37755782138SLi Zefan 37855782138SLi Zefan TP_PROTO(struct request_queue *q), 37955782138SLi Zefan 38055782138SLi Zefan TP_ARGS(q), 38155782138SLi Zefan 38255782138SLi Zefan TP_STRUCT__entry( 38355782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 38455782138SLi Zefan ), 38555782138SLi Zefan 38655782138SLi Zefan TP_fast_assign( 38755782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 38855782138SLi Zefan ), 38955782138SLi Zefan 39055782138SLi Zefan TP_printk("[%s]", __entry->comm) 39155782138SLi Zefan ); 39255782138SLi Zefan 39355782138SLi Zefan TRACE_EVENT(block_unplug_timer, 39455782138SLi Zefan 39555782138SLi Zefan TP_PROTO(struct request_queue *q), 39655782138SLi Zefan 39755782138SLi Zefan TP_ARGS(q), 39855782138SLi Zefan 39955782138SLi Zefan TP_STRUCT__entry( 40055782138SLi Zefan __field( int, nr_rq ) 40155782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 40255782138SLi Zefan ), 40355782138SLi Zefan 40455782138SLi Zefan TP_fast_assign( 40555782138SLi Zefan __entry->nr_rq = q->rq.count[READ] + q->rq.count[WRITE]; 40655782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 40755782138SLi Zefan ), 40855782138SLi Zefan 40955782138SLi Zefan TP_printk("[%s] %d", __entry->comm, __entry->nr_rq) 41055782138SLi Zefan ); 41155782138SLi Zefan 41255782138SLi Zefan TRACE_EVENT(block_unplug_io, 41355782138SLi Zefan 41455782138SLi Zefan TP_PROTO(struct request_queue *q), 41555782138SLi Zefan 41655782138SLi Zefan TP_ARGS(q), 41755782138SLi Zefan 41855782138SLi Zefan TP_STRUCT__entry( 41955782138SLi Zefan __field( int, nr_rq ) 42055782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 42155782138SLi Zefan ), 42255782138SLi Zefan 42355782138SLi Zefan TP_fast_assign( 42455782138SLi Zefan __entry->nr_rq = q->rq.count[READ] + q->rq.count[WRITE]; 42555782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 42655782138SLi Zefan ), 42755782138SLi Zefan 42855782138SLi Zefan TP_printk("[%s] %d", __entry->comm, __entry->nr_rq) 42955782138SLi Zefan ); 43055782138SLi Zefan 43155782138SLi Zefan TRACE_EVENT(block_split, 43255782138SLi Zefan 43355782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, 43455782138SLi Zefan unsigned int new_sector), 43555782138SLi Zefan 43655782138SLi Zefan TP_ARGS(q, bio, new_sector), 43755782138SLi Zefan 43855782138SLi Zefan TP_STRUCT__entry( 43955782138SLi Zefan __field( dev_t, dev ) 44055782138SLi Zefan __field( sector_t, sector ) 44155782138SLi Zefan __field( sector_t, new_sector ) 44255782138SLi Zefan __array( char, rwbs, 6 ) 44355782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 44455782138SLi Zefan ), 44555782138SLi Zefan 44655782138SLi Zefan TP_fast_assign( 44755782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 44855782138SLi Zefan __entry->sector = bio->bi_sector; 44955782138SLi Zefan __entry->new_sector = new_sector; 45055782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 45155782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 45255782138SLi Zefan ), 45355782138SLi Zefan 45455782138SLi Zefan TP_printk("%d,%d %s %llu / %llu [%s]", 45555782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 456*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 457*6556d1dfSSteven Rostedt (unsigned long long)__entry->new_sector, 458*6556d1dfSSteven Rostedt __entry->comm) 45955782138SLi Zefan ); 46055782138SLi Zefan 46155782138SLi Zefan TRACE_EVENT(block_remap, 46255782138SLi Zefan 46355782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, dev_t dev, 46455782138SLi Zefan sector_t from), 46555782138SLi Zefan 46655782138SLi Zefan TP_ARGS(q, bio, dev, from), 46755782138SLi Zefan 46855782138SLi Zefan TP_STRUCT__entry( 46955782138SLi Zefan __field( dev_t, dev ) 47055782138SLi Zefan __field( sector_t, sector ) 47155782138SLi Zefan __field( unsigned int, nr_sector ) 47255782138SLi Zefan __field( dev_t, old_dev ) 47355782138SLi Zefan __field( sector_t, old_sector ) 47455782138SLi Zefan __array( char, rwbs, 6 ) 47555782138SLi Zefan ), 47655782138SLi Zefan 47755782138SLi Zefan TP_fast_assign( 47855782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 47955782138SLi Zefan __entry->sector = bio->bi_sector; 48055782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 48155782138SLi Zefan __entry->old_dev = dev; 48255782138SLi Zefan __entry->old_sector = from; 48355782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 48455782138SLi Zefan ), 48555782138SLi Zefan 48655782138SLi Zefan TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", 48755782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 488*6556d1dfSSteven Rostedt (unsigned long long)__entry->sector, 489*6556d1dfSSteven Rostedt __entry->nr_sector, 49055782138SLi Zefan MAJOR(__entry->old_dev), MINOR(__entry->old_dev), 491*6556d1dfSSteven Rostedt (unsigned long long)__entry->old_sector) 49255782138SLi Zefan ); 49355782138SLi Zefan 49455782138SLi Zefan #endif /* _TRACE_BLOCK_H */ 49555782138SLi Zefan 49655782138SLi Zefan /* This part must be outside protection */ 49755782138SLi Zefan #include <trace/define_trace.h> 49855782138SLi Zefan 499