Skip to content

Commit fc1eb80

Browse files
chuckleveramschuma-ntap
authored andcommitted
xprtrdma: Add trace points in the client-side backchannel code paths
Signed-off-by: Chuck Lever <[email protected]> Signed-off-by: Anna Schumaker <[email protected]>
1 parent b4744e0 commit fc1eb80

File tree

3 files changed

+73
-5
lines changed

3 files changed

+73
-5
lines changed

include/trace/events/rpcrdma.h

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,39 @@ DECLARE_EVENT_CLASS(xprtrdma_mr,
267267
), \
268268
TP_ARGS(mr))
269269

270+
DECLARE_EVENT_CLASS(xprtrdma_cb_event,
271+
TP_PROTO(
272+
const struct rpc_rqst *rqst
273+
),
274+
275+
TP_ARGS(rqst),
276+
277+
TP_STRUCT__entry(
278+
__field(const void *, rqst)
279+
__field(const void *, rep)
280+
__field(const void *, req)
281+
__field(u32, xid)
282+
),
283+
284+
TP_fast_assign(
285+
__entry->rqst = rqst;
286+
__entry->req = rpcr_to_rdmar(rqst);
287+
__entry->rep = rpcr_to_rdmar(rqst)->rl_reply;
288+
__entry->xid = be32_to_cpu(rqst->rq_xid);
289+
),
290+
291+
TP_printk("xid=0x%08x, rqst=%p req=%p rep=%p",
292+
__entry->xid, __entry->rqst, __entry->req, __entry->rep
293+
)
294+
);
295+
296+
#define DEFINE_CB_EVENT(name) \
297+
DEFINE_EVENT(xprtrdma_cb_event, name, \
298+
TP_PROTO( \
299+
const struct rpc_rqst *rqst \
300+
), \
301+
TP_ARGS(rqst))
302+
270303
/**
271304
** Connection events
272305
**/
@@ -719,6 +752,41 @@ TRACE_EVENT(xprtrdma_decode_seg,
719752
)
720753
);
721754

755+
/**
756+
** Callback events
757+
**/
758+
759+
TRACE_EVENT(xprtrdma_cb_setup,
760+
TP_PROTO(
761+
const struct rpcrdma_xprt *r_xprt,
762+
unsigned int reqs
763+
),
764+
765+
TP_ARGS(r_xprt, reqs),
766+
767+
TP_STRUCT__entry(
768+
__field(const void *, r_xprt)
769+
__field(unsigned int, reqs)
770+
__string(addr, rpcrdma_addrstr(r_xprt))
771+
__string(port, rpcrdma_portstr(r_xprt))
772+
),
773+
774+
TP_fast_assign(
775+
__entry->r_xprt = r_xprt;
776+
__entry->reqs = reqs;
777+
__assign_str(addr, rpcrdma_addrstr(r_xprt));
778+
__assign_str(port, rpcrdma_portstr(r_xprt));
779+
),
780+
781+
TP_printk("peer=[%s]:%s r_xprt=%p: %u reqs",
782+
__get_str(addr), __get_str(port),
783+
__entry->r_xprt, __entry->reqs
784+
)
785+
);
786+
787+
DEFINE_CB_EVENT(xprtrdma_cb_call);
788+
DEFINE_CB_EVENT(xprtrdma_cb_reply);
789+
722790
#endif /* _TRACE_RPCRDMA_H */
723791

724792
#include <trace/define_trace.h>

net/sunrpc/xprtrdma/backchannel.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ int xprt_rdma_bc_setup(struct rpc_xprt *xprt, unsigned int reqs)
140140

141141
buffer->rb_bc_srv_max_requests = reqs;
142142
request_module("svcrdma");
143-
143+
trace_xprtrdma_cb_setup(r_xprt, reqs);
144144
return 0;
145145

146146
out_free:
@@ -212,6 +212,8 @@ static int rpcrdma_bc_marshal_reply(struct rpc_rqst *rqst)
212212
if (rpcrdma_prepare_send_sges(r_xprt, req, RPCRDMA_HDRLEN_MIN,
213213
&rqst->rq_snd_buf, rpcrdma_noch))
214214
return -EIO;
215+
216+
trace_xprtrdma_cb_reply(rqst);
215217
return 0;
216218
}
217219

@@ -331,7 +333,6 @@ void rpcrdma_bc_receive_call(struct rpcrdma_xprt *r_xprt,
331333
struct rpc_rqst, rq_bc_pa_list);
332334
list_del(&rqst->rq_bc_pa_list);
333335
spin_unlock(&xprt->bc_pa_lock);
334-
dprintk("RPC: %s: using rqst %p\n", __func__, rqst);
335336

336337
/* Prepare rqst */
337338
rqst->rq_reply_bytes_recvd = 0;
@@ -352,9 +353,8 @@ void rpcrdma_bc_receive_call(struct rpcrdma_xprt *r_xprt,
352353
* the Upper Layer is done decoding it.
353354
*/
354355
req = rpcr_to_rdmar(rqst);
355-
dprintk("RPC: %s: attaching rep %p to req %p\n",
356-
__func__, rep, req);
357356
req->rl_reply = rep;
357+
trace_xprtrdma_cb_call(rqst);
358358

359359
/* Queue rqst for ULP's callback service */
360360
bc_serv = xprt->bc_serv;

net/sunrpc/xprtrdma/xprt_rdma.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ rpcrdma_set_xprtdata(struct rpc_rqst *rqst, struct rpcrdma_req *req)
365365
}
366366

367367
static inline struct rpcrdma_req *
368-
rpcr_to_rdmar(struct rpc_rqst *rqst)
368+
rpcr_to_rdmar(const struct rpc_rqst *rqst)
369369
{
370370
return rqst->rq_xprtdata;
371371
}

0 commit comments

Comments
 (0)