xref: /openbmc/linux/drivers/block/null_blk/trace.h (revision ff07a02e)
1eebf34a8SDamien Le Moal /* SPDX-License-Identifier: GPL-2.0 */
2eebf34a8SDamien Le Moal /*
3eebf34a8SDamien Le Moal  * null_blk device driver tracepoints.
4eebf34a8SDamien Le Moal  *
5eebf34a8SDamien Le Moal  * Copyright (C) 2020 Western Digital Corporation or its affiliates.
6eebf34a8SDamien Le Moal  */
7eebf34a8SDamien Le Moal 
8eebf34a8SDamien Le Moal #undef TRACE_SYSTEM
9eebf34a8SDamien Le Moal #define TRACE_SYSTEM nullb
10eebf34a8SDamien Le Moal 
11eebf34a8SDamien Le Moal #if !defined(_TRACE_NULLB_H) || defined(TRACE_HEADER_MULTI_READ)
12eebf34a8SDamien Le Moal #define _TRACE_NULLB_H
13eebf34a8SDamien Le Moal 
14eebf34a8SDamien Le Moal #include <linux/tracepoint.h>
15eebf34a8SDamien Le Moal #include <linux/trace_seq.h>
16eebf34a8SDamien Le Moal 
17eebf34a8SDamien Le Moal #include "null_blk.h"
18eebf34a8SDamien Le Moal 
19eebf34a8SDamien Le Moal const char *nullb_trace_disk_name(struct trace_seq *p, char *name);
20eebf34a8SDamien Le Moal 
21eebf34a8SDamien Le Moal #define __print_disk_name(name) nullb_trace_disk_name(p, name)
22eebf34a8SDamien Le Moal 
23eebf34a8SDamien Le Moal #ifndef TRACE_HEADER_MULTI_READ
__assign_disk_name(char * name,struct gendisk * disk)24eebf34a8SDamien Le Moal static inline void __assign_disk_name(char *name, struct gendisk *disk)
25eebf34a8SDamien Le Moal {
26eebf34a8SDamien Le Moal 	if (disk)
27eebf34a8SDamien Le Moal 		memcpy(name, disk->disk_name, DISK_NAME_LEN);
28eebf34a8SDamien Le Moal 	else
29eebf34a8SDamien Le Moal 		memset(name, 0, DISK_NAME_LEN);
30eebf34a8SDamien Le Moal }
31eebf34a8SDamien Le Moal #endif
32eebf34a8SDamien Le Moal 
33eebf34a8SDamien Le Moal TRACE_EVENT(nullb_zone_op,
34eebf34a8SDamien Le Moal 	    TP_PROTO(struct nullb_cmd *cmd, unsigned int zone_no,
35eebf34a8SDamien Le Moal 		     unsigned int zone_cond),
36eebf34a8SDamien Le Moal 	    TP_ARGS(cmd, zone_no, zone_cond),
37eebf34a8SDamien Le Moal 	    TP_STRUCT__entry(
38eebf34a8SDamien Le Moal 		__array(char, disk, DISK_NAME_LEN)
39*ff07a02eSBart Van Assche 		__field(enum req_op, op)
40eebf34a8SDamien Le Moal 		__field(unsigned int, zone_no)
41eebf34a8SDamien Le Moal 		__field(unsigned int, zone_cond)
42eebf34a8SDamien Le Moal 	    ),
43eebf34a8SDamien Le Moal 	    TP_fast_assign(
44eebf34a8SDamien Le Moal 		__entry->op = req_op(cmd->rq);
45eebf34a8SDamien Le Moal 		__entry->zone_no = zone_no;
46eebf34a8SDamien Le Moal 		__entry->zone_cond = zone_cond;
47f3fa33acSChristoph Hellwig 		__assign_disk_name(__entry->disk, cmd->rq->q->disk);
48eebf34a8SDamien Le Moal 	    ),
49eebf34a8SDamien Le Moal 	    TP_printk("%s req=%-15s zone_no=%u zone_cond=%-10s",
50eebf34a8SDamien Le Moal 		      __print_disk_name(__entry->disk),
51eebf34a8SDamien Le Moal 		      blk_op_str(__entry->op),
52eebf34a8SDamien Le Moal 		      __entry->zone_no,
53eebf34a8SDamien Le Moal 		      blk_zone_cond_str(__entry->zone_cond))
54eebf34a8SDamien Le Moal );
55eebf34a8SDamien Le Moal 
56eebf34a8SDamien Le Moal TRACE_EVENT(nullb_report_zones,
57eebf34a8SDamien Le Moal 	    TP_PROTO(struct nullb *nullb, unsigned int nr_zones),
58eebf34a8SDamien Le Moal 	    TP_ARGS(nullb, nr_zones),
59eebf34a8SDamien Le Moal 	    TP_STRUCT__entry(
60eebf34a8SDamien Le Moal 		__array(char, disk, DISK_NAME_LEN)
61eebf34a8SDamien Le Moal 		__field(unsigned int, nr_zones)
62eebf34a8SDamien Le Moal 	    ),
63eebf34a8SDamien Le Moal 	    TP_fast_assign(
64eebf34a8SDamien Le Moal 		__entry->nr_zones = nr_zones;
65eebf34a8SDamien Le Moal 		__assign_disk_name(__entry->disk, nullb->disk);
66eebf34a8SDamien Le Moal 	    ),
67eebf34a8SDamien Le Moal 	    TP_printk("%s nr_zones=%u",
68eebf34a8SDamien Le Moal 		      __print_disk_name(__entry->disk), __entry->nr_zones)
69eebf34a8SDamien Le Moal );
70eebf34a8SDamien Le Moal 
71eebf34a8SDamien Le Moal #endif /* _TRACE_NULLB_H */
72eebf34a8SDamien Le Moal 
73eebf34a8SDamien Le Moal #undef TRACE_INCLUDE_PATH
74eebf34a8SDamien Le Moal #define TRACE_INCLUDE_PATH .
75eebf34a8SDamien Le Moal #undef TRACE_INCLUDE_FILE
76eebf34a8SDamien Le Moal #define TRACE_INCLUDE_FILE trace
77eebf34a8SDamien Le Moal 
78eebf34a8SDamien Le Moal /* This part must be outside protection */
79eebf34a8SDamien Le Moal #include <trace/define_trace.h>
80