xref: /linux/drivers/block/rnbd/rnbd-srv-trace.h (revision c771600c6af14749609b49565ffb4cac2959710d)
174e237b6SSantosh Pradhan /* SPDX-License-Identifier: GPL-2.0+ */
274e237b6SSantosh Pradhan /*
374e237b6SSantosh Pradhan  * RDMA Network Block Driver
474e237b6SSantosh Pradhan  *
574e237b6SSantosh Pradhan  * Copyright (c) 2022 1&1 IONOS SE. All rights reserved.
674e237b6SSantosh Pradhan  */
774e237b6SSantosh Pradhan #undef TRACE_SYSTEM
874e237b6SSantosh Pradhan #define TRACE_SYSTEM rnbd_srv
974e237b6SSantosh Pradhan 
1074e237b6SSantosh Pradhan #if !defined(_TRACE_RNBD_SRV_H) || defined(TRACE_HEADER_MULTI_READ)
1174e237b6SSantosh Pradhan #define _TRACE_RNBD_SRV_H
1274e237b6SSantosh Pradhan 
1374e237b6SSantosh Pradhan #include <linux/tracepoint.h>
1474e237b6SSantosh Pradhan 
1574e237b6SSantosh Pradhan struct rnbd_srv_session;
1674e237b6SSantosh Pradhan struct rtrs_srv_op;
1774e237b6SSantosh Pradhan 
1874e237b6SSantosh Pradhan DECLARE_EVENT_CLASS(rnbd_srv_link_class,
1974e237b6SSantosh Pradhan 	TP_PROTO(struct rnbd_srv_session *srv),
2074e237b6SSantosh Pradhan 
2174e237b6SSantosh Pradhan 	TP_ARGS(srv),
2274e237b6SSantosh Pradhan 
2374e237b6SSantosh Pradhan 	TP_STRUCT__entry(
2474e237b6SSantosh Pradhan 		__field(int, qdepth)
2574e237b6SSantosh Pradhan 		__string(sessname, srv->sessname)
2674e237b6SSantosh Pradhan 	),
2774e237b6SSantosh Pradhan 
2874e237b6SSantosh Pradhan 	TP_fast_assign(
2974e237b6SSantosh Pradhan 		__entry->qdepth = srv->queue_depth;
30*2c92ca84SSteven Rostedt (Google) 		__assign_str(sessname);
3174e237b6SSantosh Pradhan 	),
3274e237b6SSantosh Pradhan 
3374e237b6SSantosh Pradhan 	TP_printk("sessname: %s qdepth: %d",
3474e237b6SSantosh Pradhan 		   __get_str(sessname),
3574e237b6SSantosh Pradhan 		   __entry->qdepth
3674e237b6SSantosh Pradhan 	)
3774e237b6SSantosh Pradhan );
3874e237b6SSantosh Pradhan 
3974e237b6SSantosh Pradhan #define DEFINE_LINK_EVENT(name) \
4074e237b6SSantosh Pradhan DEFINE_EVENT(rnbd_srv_link_class, name, \
4174e237b6SSantosh Pradhan 	TP_PROTO(struct rnbd_srv_session *srv), \
4274e237b6SSantosh Pradhan 	TP_ARGS(srv))
4374e237b6SSantosh Pradhan 
4474e237b6SSantosh Pradhan DEFINE_LINK_EVENT(create_sess);
4574e237b6SSantosh Pradhan DEFINE_LINK_EVENT(destroy_sess);
4674e237b6SSantosh Pradhan 
4774e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_OP_READ);
4874e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_OP_WRITE);
4974e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_OP_FLUSH);
5074e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_OP_DISCARD);
5174e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_OP_SECURE_ERASE);
5274e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_F_SYNC);
5374e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_F_FUA);
5474e237b6SSantosh Pradhan 
5574e237b6SSantosh Pradhan #define show_rnbd_rw_flags(x) \
5674e237b6SSantosh Pradhan 	__print_flags(x, "|", \
5774e237b6SSantosh Pradhan 		{ RNBD_OP_READ,		"READ" }, \
5874e237b6SSantosh Pradhan 		{ RNBD_OP_WRITE,	"WRITE" }, \
5974e237b6SSantosh Pradhan 		{ RNBD_OP_FLUSH,	"FLUSH" }, \
6074e237b6SSantosh Pradhan 		{ RNBD_OP_DISCARD,	"DISCARD" }, \
6174e237b6SSantosh Pradhan 		{ RNBD_OP_SECURE_ERASE,	"SECURE_ERASE" }, \
6274e237b6SSantosh Pradhan 		{ RNBD_F_SYNC,		"SYNC" }, \
6374e237b6SSantosh Pradhan 		{ RNBD_F_FUA,		"FUA" })
6474e237b6SSantosh Pradhan 
6574e237b6SSantosh Pradhan TRACE_EVENT(process_rdma,
6674e237b6SSantosh Pradhan 	TP_PROTO(struct rnbd_srv_session *srv,
6774e237b6SSantosh Pradhan 		 const struct rnbd_msg_io *msg,
6874e237b6SSantosh Pradhan 		 struct rtrs_srv_op *id,
6974e237b6SSantosh Pradhan 		 u32 datalen,
7074e237b6SSantosh Pradhan 		 size_t usrlen),
7174e237b6SSantosh Pradhan 
7274e237b6SSantosh Pradhan 	TP_ARGS(srv, msg, id, datalen, usrlen),
7374e237b6SSantosh Pradhan 
7474e237b6SSantosh Pradhan 	TP_STRUCT__entry(
7574e237b6SSantosh Pradhan 		__string(sessname, srv->sessname)
7674e237b6SSantosh Pradhan 		__field(u8, dir)
7774e237b6SSantosh Pradhan 		__field(u8, ver)
7874e237b6SSantosh Pradhan 		__field(u32, device_id)
7974e237b6SSantosh Pradhan 		__field(u64, sector)
8074e237b6SSantosh Pradhan 		__field(u32, flags)
8174e237b6SSantosh Pradhan 		__field(u32, bi_size)
8274e237b6SSantosh Pradhan 		__field(u16, ioprio)
8374e237b6SSantosh Pradhan 		__field(u32, datalen)
8474e237b6SSantosh Pradhan 		__field(size_t, usrlen)
8574e237b6SSantosh Pradhan 	),
8674e237b6SSantosh Pradhan 
8774e237b6SSantosh Pradhan 	TP_fast_assign(
88*2c92ca84SSteven Rostedt (Google) 		__assign_str(sessname);
8974e237b6SSantosh Pradhan 		__entry->dir = id->dir;
9074e237b6SSantosh Pradhan 		__entry->ver = srv->ver;
9174e237b6SSantosh Pradhan 		__entry->device_id = le32_to_cpu(msg->device_id);
9274e237b6SSantosh Pradhan 		__entry->sector = le64_to_cpu(msg->sector);
9374e237b6SSantosh Pradhan 		__entry->bi_size = le32_to_cpu(msg->bi_size);
9474e237b6SSantosh Pradhan 		__entry->flags = le32_to_cpu(msg->rw);
9574e237b6SSantosh Pradhan 		__entry->ioprio = le16_to_cpu(msg->prio);
9674e237b6SSantosh Pradhan 		__entry->datalen = datalen;
9774e237b6SSantosh Pradhan 		__entry->usrlen = usrlen;
9874e237b6SSantosh Pradhan 	),
9974e237b6SSantosh Pradhan 
10074e237b6SSantosh Pradhan 	TP_printk("I/O req: sess: %s, type: %s, ver: %d, devid: %u, sector: %llu, bsize: %u, flags: %s, ioprio: %d, datalen: %u, usrlen: %zu",
10174e237b6SSantosh Pradhan 		   __get_str(sessname),
10274e237b6SSantosh Pradhan 		   __print_symbolic(__entry->dir,
10374e237b6SSantosh Pradhan 			 { READ,  "READ" },
10474e237b6SSantosh Pradhan 			 { WRITE, "WRITE" }),
10574e237b6SSantosh Pradhan 		   __entry->ver,
10674e237b6SSantosh Pradhan 		   __entry->device_id,
10774e237b6SSantosh Pradhan 		   __entry->sector,
10874e237b6SSantosh Pradhan 		   __entry->bi_size,
10974e237b6SSantosh Pradhan 		   show_rnbd_rw_flags(__entry->flags),
11074e237b6SSantosh Pradhan 		   __entry->ioprio,
11174e237b6SSantosh Pradhan 		   __entry->datalen,
11274e237b6SSantosh Pradhan 		   __entry->usrlen
11374e237b6SSantosh Pradhan 	)
11474e237b6SSantosh Pradhan );
11574e237b6SSantosh Pradhan 
11674e237b6SSantosh Pradhan TRACE_EVENT(process_msg_sess_info,
11774e237b6SSantosh Pradhan 	TP_PROTO(struct rnbd_srv_session *srv,
11874e237b6SSantosh Pradhan 		 const struct rnbd_msg_sess_info *msg),
11974e237b6SSantosh Pradhan 
12074e237b6SSantosh Pradhan 	TP_ARGS(srv, msg),
12174e237b6SSantosh Pradhan 
12274e237b6SSantosh Pradhan 	TP_STRUCT__entry(
12374e237b6SSantosh Pradhan 		__field(u8, proto_ver)
12474e237b6SSantosh Pradhan 		__field(u8, clt_ver)
12574e237b6SSantosh Pradhan 		__field(u8, srv_ver)
12674e237b6SSantosh Pradhan 		__string(sessname, srv->sessname)
12774e237b6SSantosh Pradhan 	),
12874e237b6SSantosh Pradhan 
12974e237b6SSantosh Pradhan 	TP_fast_assign(
13074e237b6SSantosh Pradhan 		__entry->proto_ver = srv->ver;
13174e237b6SSantosh Pradhan 		__entry->clt_ver = msg->ver;
13274e237b6SSantosh Pradhan 		__entry->srv_ver = RNBD_PROTO_VER_MAJOR;
133*2c92ca84SSteven Rostedt (Google) 		__assign_str(sessname);
13474e237b6SSantosh Pradhan 	),
13574e237b6SSantosh Pradhan 
13674e237b6SSantosh Pradhan 	TP_printk("Session %s using proto-ver %d (clt-ver: %d, srv-ver: %d)",
13774e237b6SSantosh Pradhan 		   __get_str(sessname),
13874e237b6SSantosh Pradhan 		   __entry->proto_ver,
13974e237b6SSantosh Pradhan 		   __entry->clt_ver,
14074e237b6SSantosh Pradhan 		   __entry->srv_ver
14174e237b6SSantosh Pradhan 	)
14274e237b6SSantosh Pradhan );
14374e237b6SSantosh Pradhan 
14474e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_ACCESS_RO);
14574e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_ACCESS_RW);
14674e237b6SSantosh Pradhan TRACE_DEFINE_ENUM(RNBD_ACCESS_MIGRATION);
14774e237b6SSantosh Pradhan 
14874e237b6SSantosh Pradhan #define show_rnbd_access_mode(x) \
14974e237b6SSantosh Pradhan 	__print_symbolic(x, \
15074e237b6SSantosh Pradhan 		{ RNBD_ACCESS_RO,		"RO" }, \
15174e237b6SSantosh Pradhan 		{ RNBD_ACCESS_RW,		"RW" }, \
15274e237b6SSantosh Pradhan 		{ RNBD_ACCESS_MIGRATION,	"MIGRATION" })
15374e237b6SSantosh Pradhan 
15474e237b6SSantosh Pradhan TRACE_EVENT(process_msg_open,
15574e237b6SSantosh Pradhan 	TP_PROTO(struct rnbd_srv_session *srv,
15674e237b6SSantosh Pradhan 		 const struct rnbd_msg_open *msg),
15774e237b6SSantosh Pradhan 
15874e237b6SSantosh Pradhan 	TP_ARGS(srv, msg),
15974e237b6SSantosh Pradhan 
16074e237b6SSantosh Pradhan 	TP_STRUCT__entry(
16174e237b6SSantosh Pradhan 		__field(u8, access_mode)
16274e237b6SSantosh Pradhan 		__string(sessname, srv->sessname)
16374e237b6SSantosh Pradhan 		__string(dev_name, msg->dev_name)
16474e237b6SSantosh Pradhan 	),
16574e237b6SSantosh Pradhan 
16674e237b6SSantosh Pradhan 	TP_fast_assign(
16774e237b6SSantosh Pradhan 		__entry->access_mode = msg->access_mode;
168*2c92ca84SSteven Rostedt (Google) 		__assign_str(sessname);
169*2c92ca84SSteven Rostedt (Google) 		__assign_str(dev_name);
17074e237b6SSantosh Pradhan 	),
17174e237b6SSantosh Pradhan 
17274e237b6SSantosh Pradhan 	TP_printk("Open message received: session='%s' path='%s' access_mode=%s",
17374e237b6SSantosh Pradhan 		   __get_str(sessname),
17474e237b6SSantosh Pradhan 		   __get_str(dev_name),
17574e237b6SSantosh Pradhan 		   show_rnbd_access_mode(__entry->access_mode)
17674e237b6SSantosh Pradhan 	)
17774e237b6SSantosh Pradhan );
17874e237b6SSantosh Pradhan 
17974e237b6SSantosh Pradhan TRACE_EVENT(process_msg_close,
18074e237b6SSantosh Pradhan 	TP_PROTO(struct rnbd_srv_session *srv,
18174e237b6SSantosh Pradhan 		 const struct rnbd_msg_close *msg),
18274e237b6SSantosh Pradhan 
18374e237b6SSantosh Pradhan 	TP_ARGS(srv, msg),
18474e237b6SSantosh Pradhan 
18574e237b6SSantosh Pradhan 	TP_STRUCT__entry(
18674e237b6SSantosh Pradhan 		__field(u32, device_id)
18774e237b6SSantosh Pradhan 		__string(sessname, srv->sessname)
18874e237b6SSantosh Pradhan 	),
18974e237b6SSantosh Pradhan 
19074e237b6SSantosh Pradhan 	TP_fast_assign(
19174e237b6SSantosh Pradhan 		__entry->device_id = le32_to_cpu(msg->device_id);
192*2c92ca84SSteven Rostedt (Google) 		__assign_str(sessname);
19374e237b6SSantosh Pradhan 	),
19474e237b6SSantosh Pradhan 
19574e237b6SSantosh Pradhan 	TP_printk("Close message received: session='%s' device id='%d'",
19674e237b6SSantosh Pradhan 		   __get_str(sessname),
19774e237b6SSantosh Pradhan 		   __entry->device_id
19874e237b6SSantosh Pradhan 	)
19974e237b6SSantosh Pradhan );
20074e237b6SSantosh Pradhan 
20174e237b6SSantosh Pradhan #endif /* _TRACE_RNBD_SRV_H */
20274e237b6SSantosh Pradhan 
20374e237b6SSantosh Pradhan #undef TRACE_INCLUDE_PATH
20474e237b6SSantosh Pradhan #define TRACE_INCLUDE_PATH .
20574e237b6SSantosh Pradhan #define TRACE_INCLUDE_FILE rnbd-srv-trace
20674e237b6SSantosh Pradhan #include <trace/define_trace.h>
20774e237b6SSantosh Pradhan 
208