1*55782138SLi Zefan #if !defined(_TRACE_BLOCK_H) || defined(TRACE_HEADER_MULTI_READ) 2*55782138SLi Zefan #define _TRACE_BLOCK_H 3*55782138SLi Zefan 4*55782138SLi Zefan #include <linux/blktrace_api.h> 5*55782138SLi Zefan #include <linux/blkdev.h> 6*55782138SLi Zefan #include <linux/tracepoint.h> 7*55782138SLi Zefan 8*55782138SLi Zefan #undef TRACE_SYSTEM 9*55782138SLi Zefan #define TRACE_SYSTEM block 10*55782138SLi Zefan 11*55782138SLi Zefan TRACE_EVENT(block_rq_abort, 12*55782138SLi Zefan 13*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 14*55782138SLi Zefan 15*55782138SLi Zefan TP_ARGS(q, rq), 16*55782138SLi Zefan 17*55782138SLi Zefan TP_STRUCT__entry( 18*55782138SLi Zefan __field( dev_t, dev ) 19*55782138SLi Zefan __field( sector_t, sector ) 20*55782138SLi Zefan __field( unsigned int, nr_sector ) 21*55782138SLi Zefan __field( int, errors ) 22*55782138SLi Zefan __array( char, rwbs, 6 ) 23*55782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 24*55782138SLi Zefan ), 25*55782138SLi Zefan 26*55782138SLi Zefan TP_fast_assign( 27*55782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 28*55782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 29*55782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 30*55782138SLi Zefan 0 : rq->hard_nr_sectors; 31*55782138SLi Zefan __entry->errors = rq->errors; 32*55782138SLi Zefan 33*55782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 34*55782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 35*55782138SLi Zefan ), 36*55782138SLi Zefan 37*55782138SLi Zefan TP_printk("%d,%d %s (%s) %llu + %u [%d]", 38*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 39*55782138SLi Zefan __entry->rwbs, __get_str(cmd), 40*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->errors) 41*55782138SLi Zefan ); 42*55782138SLi Zefan 43*55782138SLi Zefan TRACE_EVENT(block_rq_insert, 44*55782138SLi Zefan 45*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 46*55782138SLi Zefan 47*55782138SLi Zefan TP_ARGS(q, rq), 48*55782138SLi Zefan 49*55782138SLi Zefan TP_STRUCT__entry( 50*55782138SLi Zefan __field( dev_t, dev ) 51*55782138SLi Zefan __field( sector_t, sector ) 52*55782138SLi Zefan __field( unsigned int, nr_sector ) 53*55782138SLi Zefan __field( unsigned int, bytes ) 54*55782138SLi Zefan __array( char, rwbs, 6 ) 55*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 56*55782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 57*55782138SLi Zefan ), 58*55782138SLi Zefan 59*55782138SLi Zefan TP_fast_assign( 60*55782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 61*55782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 62*55782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 63*55782138SLi Zefan 0 : rq->hard_nr_sectors; 64*55782138SLi Zefan __entry->bytes = blk_pc_request(rq) ? rq->data_len : 0; 65*55782138SLi Zefan 66*55782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 67*55782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 68*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 69*55782138SLi Zefan ), 70*55782138SLi Zefan 71*55782138SLi Zefan TP_printk("%d,%d %s %u (%s) %llu + %u [%s]", 72*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 73*55782138SLi Zefan __entry->rwbs, __entry->bytes, __get_str(cmd), 74*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 75*55782138SLi Zefan ); 76*55782138SLi Zefan 77*55782138SLi Zefan TRACE_EVENT(block_rq_issue, 78*55782138SLi Zefan 79*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 80*55782138SLi Zefan 81*55782138SLi Zefan TP_ARGS(q, rq), 82*55782138SLi Zefan 83*55782138SLi Zefan TP_STRUCT__entry( 84*55782138SLi Zefan __field( dev_t, dev ) 85*55782138SLi Zefan __field( sector_t, sector ) 86*55782138SLi Zefan __field( unsigned int, nr_sector ) 87*55782138SLi Zefan __field( unsigned int, bytes ) 88*55782138SLi Zefan __array( char, rwbs, 6 ) 89*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 90*55782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 91*55782138SLi Zefan ), 92*55782138SLi Zefan 93*55782138SLi Zefan TP_fast_assign( 94*55782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 95*55782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 96*55782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 97*55782138SLi Zefan 0 : rq->hard_nr_sectors; 98*55782138SLi Zefan __entry->bytes = blk_pc_request(rq) ? rq->data_len : 0; 99*55782138SLi Zefan 100*55782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 101*55782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 102*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 103*55782138SLi Zefan ), 104*55782138SLi Zefan 105*55782138SLi Zefan TP_printk("%d,%d %s %u (%s) %llu + %u [%s]", 106*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 107*55782138SLi Zefan __entry->rwbs, __entry->bytes, __get_str(cmd), 108*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 109*55782138SLi Zefan ); 110*55782138SLi Zefan 111*55782138SLi Zefan TRACE_EVENT(block_rq_requeue, 112*55782138SLi Zefan 113*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 114*55782138SLi Zefan 115*55782138SLi Zefan TP_ARGS(q, rq), 116*55782138SLi Zefan 117*55782138SLi Zefan TP_STRUCT__entry( 118*55782138SLi Zefan __field( dev_t, dev ) 119*55782138SLi Zefan __field( sector_t, sector ) 120*55782138SLi Zefan __field( unsigned int, nr_sector ) 121*55782138SLi Zefan __field( int, errors ) 122*55782138SLi Zefan __array( char, rwbs, 6 ) 123*55782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 124*55782138SLi Zefan ), 125*55782138SLi Zefan 126*55782138SLi Zefan TP_fast_assign( 127*55782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 128*55782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 129*55782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 130*55782138SLi Zefan 0 : rq->hard_nr_sectors; 131*55782138SLi Zefan __entry->errors = rq->errors; 132*55782138SLi Zefan 133*55782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 134*55782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 135*55782138SLi Zefan ), 136*55782138SLi Zefan 137*55782138SLi Zefan TP_printk("%d,%d %s (%s) %llu + %u [%d]", 138*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 139*55782138SLi Zefan __entry->rwbs, __get_str(cmd), 140*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->errors) 141*55782138SLi Zefan ); 142*55782138SLi Zefan 143*55782138SLi Zefan TRACE_EVENT(block_rq_complete, 144*55782138SLi Zefan 145*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct request *rq), 146*55782138SLi Zefan 147*55782138SLi Zefan TP_ARGS(q, rq), 148*55782138SLi Zefan 149*55782138SLi Zefan TP_STRUCT__entry( 150*55782138SLi Zefan __field( dev_t, dev ) 151*55782138SLi Zefan __field( sector_t, sector ) 152*55782138SLi Zefan __field( unsigned int, nr_sector ) 153*55782138SLi Zefan __field( int, errors ) 154*55782138SLi Zefan __array( char, rwbs, 6 ) 155*55782138SLi Zefan __dynamic_array( char, cmd, blk_cmd_buf_len(rq) ) 156*55782138SLi Zefan ), 157*55782138SLi Zefan 158*55782138SLi Zefan TP_fast_assign( 159*55782138SLi Zefan __entry->dev = rq->rq_disk ? disk_devt(rq->rq_disk) : 0; 160*55782138SLi Zefan __entry->sector = blk_pc_request(rq) ? 0 : rq->hard_sector; 161*55782138SLi Zefan __entry->nr_sector = blk_pc_request(rq) ? 162*55782138SLi Zefan 0 : rq->hard_nr_sectors; 163*55782138SLi Zefan __entry->errors = rq->errors; 164*55782138SLi Zefan 165*55782138SLi Zefan blk_fill_rwbs_rq(__entry->rwbs, rq); 166*55782138SLi Zefan blk_dump_cmd(__get_str(cmd), rq); 167*55782138SLi Zefan ), 168*55782138SLi Zefan 169*55782138SLi Zefan TP_printk("%d,%d %s (%s) %llu + %u [%d]", 170*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), 171*55782138SLi Zefan __entry->rwbs, __get_str(cmd), 172*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->errors) 173*55782138SLi Zefan ); 174*55782138SLi Zefan TRACE_EVENT(block_bio_bounce, 175*55782138SLi Zefan 176*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 177*55782138SLi Zefan 178*55782138SLi Zefan TP_ARGS(q, bio), 179*55782138SLi Zefan 180*55782138SLi Zefan TP_STRUCT__entry( 181*55782138SLi Zefan __field( dev_t, dev ) 182*55782138SLi Zefan __field( sector_t, sector ) 183*55782138SLi Zefan __field( unsigned int, nr_sector ) 184*55782138SLi Zefan __array( char, rwbs, 6 ) 185*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 186*55782138SLi Zefan ), 187*55782138SLi Zefan 188*55782138SLi Zefan TP_fast_assign( 189*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 190*55782138SLi Zefan __entry->sector = bio->bi_sector; 191*55782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 192*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 193*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 194*55782138SLi Zefan ), 195*55782138SLi Zefan 196*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 197*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 198*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 199*55782138SLi Zefan ); 200*55782138SLi Zefan 201*55782138SLi Zefan TRACE_EVENT(block_bio_complete, 202*55782138SLi Zefan 203*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 204*55782138SLi Zefan 205*55782138SLi Zefan TP_ARGS(q, bio), 206*55782138SLi Zefan 207*55782138SLi Zefan TP_STRUCT__entry( 208*55782138SLi Zefan __field( dev_t, dev ) 209*55782138SLi Zefan __field( sector_t, sector ) 210*55782138SLi Zefan __field( unsigned, nr_sector ) 211*55782138SLi Zefan __field( int, error ) 212*55782138SLi Zefan __array( char, rwbs, 6 ) 213*55782138SLi Zefan ), 214*55782138SLi Zefan 215*55782138SLi Zefan TP_fast_assign( 216*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 217*55782138SLi Zefan __entry->sector = bio->bi_sector; 218*55782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 219*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 220*55782138SLi Zefan ), 221*55782138SLi Zefan 222*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%d]", 223*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 224*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->error) 225*55782138SLi Zefan ); 226*55782138SLi Zefan 227*55782138SLi Zefan TRACE_EVENT(block_bio_backmerge, 228*55782138SLi Zefan 229*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 230*55782138SLi Zefan 231*55782138SLi Zefan TP_ARGS(q, bio), 232*55782138SLi Zefan 233*55782138SLi Zefan TP_STRUCT__entry( 234*55782138SLi Zefan __field( dev_t, dev ) 235*55782138SLi Zefan __field( sector_t, sector ) 236*55782138SLi Zefan __field( unsigned int, nr_sector ) 237*55782138SLi Zefan __array( char, rwbs, 6 ) 238*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 239*55782138SLi Zefan ), 240*55782138SLi Zefan 241*55782138SLi Zefan TP_fast_assign( 242*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 243*55782138SLi Zefan __entry->sector = bio->bi_sector; 244*55782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 245*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 246*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 247*55782138SLi Zefan ), 248*55782138SLi Zefan 249*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 250*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 251*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 252*55782138SLi Zefan ); 253*55782138SLi Zefan 254*55782138SLi Zefan TRACE_EVENT(block_bio_frontmerge, 255*55782138SLi Zefan 256*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 257*55782138SLi Zefan 258*55782138SLi Zefan TP_ARGS(q, bio), 259*55782138SLi Zefan 260*55782138SLi Zefan TP_STRUCT__entry( 261*55782138SLi Zefan __field( dev_t, dev ) 262*55782138SLi Zefan __field( sector_t, sector ) 263*55782138SLi Zefan __field( unsigned, nr_sector ) 264*55782138SLi Zefan __array( char, rwbs, 6 ) 265*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 266*55782138SLi Zefan ), 267*55782138SLi Zefan 268*55782138SLi Zefan TP_fast_assign( 269*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 270*55782138SLi Zefan __entry->sector = bio->bi_sector; 271*55782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 272*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 273*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 274*55782138SLi Zefan ), 275*55782138SLi Zefan 276*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 277*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 278*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 279*55782138SLi Zefan ); 280*55782138SLi Zefan 281*55782138SLi Zefan TRACE_EVENT(block_bio_queue, 282*55782138SLi Zefan 283*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio), 284*55782138SLi Zefan 285*55782138SLi Zefan TP_ARGS(q, bio), 286*55782138SLi Zefan 287*55782138SLi Zefan TP_STRUCT__entry( 288*55782138SLi Zefan __field( dev_t, dev ) 289*55782138SLi Zefan __field( sector_t, sector ) 290*55782138SLi Zefan __field( unsigned int, nr_sector ) 291*55782138SLi Zefan __array( char, rwbs, 6 ) 292*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 293*55782138SLi Zefan ), 294*55782138SLi Zefan 295*55782138SLi Zefan TP_fast_assign( 296*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 297*55782138SLi Zefan __entry->sector = bio->bi_sector; 298*55782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 299*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 300*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 301*55782138SLi Zefan ), 302*55782138SLi Zefan 303*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 304*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 305*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 306*55782138SLi Zefan ); 307*55782138SLi Zefan 308*55782138SLi Zefan TRACE_EVENT(block_getrq, 309*55782138SLi Zefan 310*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, int rw), 311*55782138SLi Zefan 312*55782138SLi Zefan TP_ARGS(q, bio, rw), 313*55782138SLi Zefan 314*55782138SLi Zefan TP_STRUCT__entry( 315*55782138SLi Zefan __field( dev_t, dev ) 316*55782138SLi Zefan __field( sector_t, sector ) 317*55782138SLi Zefan __field( unsigned int, nr_sector ) 318*55782138SLi Zefan __array( char, rwbs, 6 ) 319*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 320*55782138SLi Zefan ), 321*55782138SLi Zefan 322*55782138SLi Zefan TP_fast_assign( 323*55782138SLi Zefan __entry->dev = bio ? bio->bi_bdev->bd_dev : 0; 324*55782138SLi Zefan __entry->sector = bio ? bio->bi_sector : 0; 325*55782138SLi Zefan __entry->nr_sector = bio ? bio->bi_size >> 9 : 0; 326*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, 327*55782138SLi Zefan bio ? bio->bi_rw : 0, __entry->nr_sector); 328*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 329*55782138SLi Zefan ), 330*55782138SLi Zefan 331*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 332*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 333*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 334*55782138SLi Zefan ); 335*55782138SLi Zefan 336*55782138SLi Zefan TRACE_EVENT(block_sleeprq, 337*55782138SLi Zefan 338*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, int rw), 339*55782138SLi Zefan 340*55782138SLi Zefan TP_ARGS(q, bio, rw), 341*55782138SLi Zefan 342*55782138SLi Zefan TP_STRUCT__entry( 343*55782138SLi Zefan __field( dev_t, dev ) 344*55782138SLi Zefan __field( sector_t, sector ) 345*55782138SLi Zefan __field( unsigned int, nr_sector ) 346*55782138SLi Zefan __array( char, rwbs, 6 ) 347*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 348*55782138SLi Zefan ), 349*55782138SLi Zefan 350*55782138SLi Zefan TP_fast_assign( 351*55782138SLi Zefan __entry->dev = bio ? bio->bi_bdev->bd_dev : 0; 352*55782138SLi Zefan __entry->sector = bio ? bio->bi_sector : 0; 353*55782138SLi Zefan __entry->nr_sector = bio ? bio->bi_size >> 9 : 0; 354*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, 355*55782138SLi Zefan bio ? bio->bi_rw : 0, __entry->nr_sector); 356*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 357*55782138SLi Zefan ), 358*55782138SLi Zefan 359*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u [%s]", 360*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 361*55782138SLi Zefan __entry->sector, __entry->nr_sector, __entry->comm) 362*55782138SLi Zefan ); 363*55782138SLi Zefan 364*55782138SLi Zefan TRACE_EVENT(block_plug, 365*55782138SLi Zefan 366*55782138SLi Zefan TP_PROTO(struct request_queue *q), 367*55782138SLi Zefan 368*55782138SLi Zefan TP_ARGS(q), 369*55782138SLi Zefan 370*55782138SLi Zefan TP_STRUCT__entry( 371*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 372*55782138SLi Zefan ), 373*55782138SLi Zefan 374*55782138SLi Zefan TP_fast_assign( 375*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 376*55782138SLi Zefan ), 377*55782138SLi Zefan 378*55782138SLi Zefan TP_printk("[%s]", __entry->comm) 379*55782138SLi Zefan ); 380*55782138SLi Zefan 381*55782138SLi Zefan TRACE_EVENT(block_unplug_timer, 382*55782138SLi Zefan 383*55782138SLi Zefan TP_PROTO(struct request_queue *q), 384*55782138SLi Zefan 385*55782138SLi Zefan TP_ARGS(q), 386*55782138SLi Zefan 387*55782138SLi Zefan TP_STRUCT__entry( 388*55782138SLi Zefan __field( int, nr_rq ) 389*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 390*55782138SLi Zefan ), 391*55782138SLi Zefan 392*55782138SLi Zefan TP_fast_assign( 393*55782138SLi Zefan __entry->nr_rq = q->rq.count[READ] + q->rq.count[WRITE]; 394*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 395*55782138SLi Zefan ), 396*55782138SLi Zefan 397*55782138SLi Zefan TP_printk("[%s] %d", __entry->comm, __entry->nr_rq) 398*55782138SLi Zefan ); 399*55782138SLi Zefan 400*55782138SLi Zefan TRACE_EVENT(block_unplug_io, 401*55782138SLi Zefan 402*55782138SLi Zefan TP_PROTO(struct request_queue *q), 403*55782138SLi Zefan 404*55782138SLi Zefan TP_ARGS(q), 405*55782138SLi Zefan 406*55782138SLi Zefan TP_STRUCT__entry( 407*55782138SLi Zefan __field( int, nr_rq ) 408*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 409*55782138SLi Zefan ), 410*55782138SLi Zefan 411*55782138SLi Zefan TP_fast_assign( 412*55782138SLi Zefan __entry->nr_rq = q->rq.count[READ] + q->rq.count[WRITE]; 413*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 414*55782138SLi Zefan ), 415*55782138SLi Zefan 416*55782138SLi Zefan TP_printk("[%s] %d", __entry->comm, __entry->nr_rq) 417*55782138SLi Zefan ); 418*55782138SLi Zefan 419*55782138SLi Zefan TRACE_EVENT(block_split, 420*55782138SLi Zefan 421*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, 422*55782138SLi Zefan unsigned int new_sector), 423*55782138SLi Zefan 424*55782138SLi Zefan TP_ARGS(q, bio, new_sector), 425*55782138SLi Zefan 426*55782138SLi Zefan TP_STRUCT__entry( 427*55782138SLi Zefan __field( dev_t, dev ) 428*55782138SLi Zefan __field( sector_t, sector ) 429*55782138SLi Zefan __field( sector_t, new_sector ) 430*55782138SLi Zefan __array( char, rwbs, 6 ) 431*55782138SLi Zefan __array( char, comm, TASK_COMM_LEN ) 432*55782138SLi Zefan ), 433*55782138SLi Zefan 434*55782138SLi Zefan TP_fast_assign( 435*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 436*55782138SLi Zefan __entry->sector = bio->bi_sector; 437*55782138SLi Zefan __entry->new_sector = new_sector; 438*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 439*55782138SLi Zefan memcpy(__entry->comm, current->comm, TASK_COMM_LEN); 440*55782138SLi Zefan ), 441*55782138SLi Zefan 442*55782138SLi Zefan TP_printk("%d,%d %s %llu / %llu [%s]", 443*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 444*55782138SLi Zefan __entry->sector, __entry->new_sector, __entry->comm) 445*55782138SLi Zefan ); 446*55782138SLi Zefan 447*55782138SLi Zefan TRACE_EVENT(block_remap, 448*55782138SLi Zefan 449*55782138SLi Zefan TP_PROTO(struct request_queue *q, struct bio *bio, dev_t dev, 450*55782138SLi Zefan sector_t from), 451*55782138SLi Zefan 452*55782138SLi Zefan TP_ARGS(q, bio, dev, from), 453*55782138SLi Zefan 454*55782138SLi Zefan TP_STRUCT__entry( 455*55782138SLi Zefan __field( dev_t, dev ) 456*55782138SLi Zefan __field( sector_t, sector ) 457*55782138SLi Zefan __field( unsigned int, nr_sector ) 458*55782138SLi Zefan __field( dev_t, old_dev ) 459*55782138SLi Zefan __field( sector_t, old_sector ) 460*55782138SLi Zefan __array( char, rwbs, 6 ) 461*55782138SLi Zefan ), 462*55782138SLi Zefan 463*55782138SLi Zefan TP_fast_assign( 464*55782138SLi Zefan __entry->dev = bio->bi_bdev->bd_dev; 465*55782138SLi Zefan __entry->sector = bio->bi_sector; 466*55782138SLi Zefan __entry->nr_sector = bio->bi_size >> 9; 467*55782138SLi Zefan __entry->old_dev = dev; 468*55782138SLi Zefan __entry->old_sector = from; 469*55782138SLi Zefan blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size); 470*55782138SLi Zefan ), 471*55782138SLi Zefan 472*55782138SLi Zefan TP_printk("%d,%d %s %llu + %u <- (%d,%d) %llu", 473*55782138SLi Zefan MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs, 474*55782138SLi Zefan __entry->sector, __entry->nr_sector, 475*55782138SLi Zefan MAJOR(__entry->old_dev), MINOR(__entry->old_dev), 476*55782138SLi Zefan __entry->old_sector) 477*55782138SLi Zefan ); 478*55782138SLi Zefan 479*55782138SLi Zefan #endif /* _TRACE_BLOCK_H */ 480*55782138SLi Zefan 481*55782138SLi Zefan /* This part must be outside protection */ 482*55782138SLi Zefan #include <trace/define_trace.h> 483*55782138SLi Zefan 484