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