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