Skip to content

Commit 007140e

Browse files
committed
svcrdma: Record Receive completion ID in svc_rdma_decode_rqst
When recording a trace event in the Receive path, tie decoding results and errors to an incoming Receive completion. Signed-off-by: Chuck Lever <[email protected]>
1 parent 9b3bcf8 commit 007140e

File tree

2 files changed

+33
-13
lines changed

2 files changed

+33
-13
lines changed

include/trace/events/rpcrdma.h

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,13 +1369,16 @@ TRACE_DEFINE_ENUM(RDMA_ERROR);
13691369

13701370
TRACE_EVENT(svcrdma_decode_rqst,
13711371
TP_PROTO(
1372+
const struct svc_rdma_recv_ctxt *ctxt,
13721373
__be32 *p,
13731374
unsigned int hdrlen
13741375
),
13751376

1376-
TP_ARGS(p, hdrlen),
1377+
TP_ARGS(ctxt, p, hdrlen),
13771378

13781379
TP_STRUCT__entry(
1380+
__field(u32, cq_id)
1381+
__field(int, completion_id)
13791382
__field(u32, xid)
13801383
__field(u32, vers)
13811384
__field(u32, proc)
@@ -1384,68 +1387,85 @@ TRACE_EVENT(svcrdma_decode_rqst,
13841387
),
13851388

13861389
TP_fast_assign(
1390+
__entry->cq_id = ctxt->rc_cid.ci_queue_id;
1391+
__entry->completion_id = ctxt->rc_cid.ci_completion_id;
13871392
__entry->xid = be32_to_cpup(p++);
13881393
__entry->vers = be32_to_cpup(p++);
13891394
__entry->credits = be32_to_cpup(p++);
13901395
__entry->proc = be32_to_cpup(p);
13911396
__entry->hdrlen = hdrlen;
13921397
),
13931398

1394-
TP_printk("xid=0x%08x vers=%u credits=%u proc=%s hdrlen=%u",
1399+
TP_printk("cq.id=%u cid=%d xid=0x%08x vers=%u credits=%u proc=%s hdrlen=%u",
1400+
__entry->cq_id, __entry->completion_id,
13951401
__entry->xid, __entry->vers, __entry->credits,
13961402
show_rpcrdma_proc(__entry->proc), __entry->hdrlen)
13971403
);
13981404

13991405
TRACE_EVENT(svcrdma_decode_short_err,
14001406
TP_PROTO(
1407+
const struct svc_rdma_recv_ctxt *ctxt,
14011408
unsigned int hdrlen
14021409
),
14031410

1404-
TP_ARGS(hdrlen),
1411+
TP_ARGS(ctxt, hdrlen),
14051412

14061413
TP_STRUCT__entry(
1414+
__field(u32, cq_id)
1415+
__field(int, completion_id)
14071416
__field(unsigned int, hdrlen)
14081417
),
14091418

14101419
TP_fast_assign(
1420+
__entry->cq_id = ctxt->rc_cid.ci_queue_id;
1421+
__entry->completion_id = ctxt->rc_cid.ci_completion_id;
14111422
__entry->hdrlen = hdrlen;
14121423
),
14131424

1414-
TP_printk("hdrlen=%u", __entry->hdrlen)
1425+
TP_printk("cq.id=%u cid=%d hdrlen=%u",
1426+
__entry->cq_id, __entry->completion_id,
1427+
__entry->hdrlen)
14151428
);
14161429

14171430
DECLARE_EVENT_CLASS(svcrdma_badreq_event,
14181431
TP_PROTO(
1432+
const struct svc_rdma_recv_ctxt *ctxt,
14191433
__be32 *p
14201434
),
14211435

1422-
TP_ARGS(p),
1436+
TP_ARGS(ctxt, p),
14231437

14241438
TP_STRUCT__entry(
1439+
__field(u32, cq_id)
1440+
__field(int, completion_id)
14251441
__field(u32, xid)
14261442
__field(u32, vers)
14271443
__field(u32, proc)
14281444
__field(u32, credits)
14291445
),
14301446

14311447
TP_fast_assign(
1448+
__entry->cq_id = ctxt->rc_cid.ci_queue_id;
1449+
__entry->completion_id = ctxt->rc_cid.ci_completion_id;
14321450
__entry->xid = be32_to_cpup(p++);
14331451
__entry->vers = be32_to_cpup(p++);
14341452
__entry->credits = be32_to_cpup(p++);
14351453
__entry->proc = be32_to_cpup(p);
14361454
),
14371455

1438-
TP_printk("xid=0x%08x vers=%u credits=%u proc=%u",
1456+
TP_printk("cq.id=%u cid=%d xid=0x%08x vers=%u credits=%u proc=%u",
1457+
__entry->cq_id, __entry->completion_id,
14391458
__entry->xid, __entry->vers, __entry->credits, __entry->proc)
14401459
);
14411460

14421461
#define DEFINE_BADREQ_EVENT(name) \
14431462
DEFINE_EVENT(svcrdma_badreq_event, \
14441463
svcrdma_decode_##name##_err, \
14451464
TP_PROTO( \
1465+
const struct svc_rdma_recv_ctxt *ctxt, \
14461466
__be32 *p \
14471467
), \
1448-
TP_ARGS(p))
1468+
TP_ARGS(ctxt, p))
14491469

14501470
DEFINE_BADREQ_EVENT(badvers);
14511471
DEFINE_BADREQ_EVENT(drop);

net/sunrpc/xprtrdma/svc_rdma_recvfrom.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -667,27 +667,27 @@ static int svc_rdma_xdr_decode_req(struct xdr_buf *rq_arg,
667667
hdr_len = xdr_stream_pos(&rctxt->rc_stream);
668668
rq_arg->head[0].iov_len -= hdr_len;
669669
rq_arg->len -= hdr_len;
670-
trace_svcrdma_decode_rqst(rdma_argp, hdr_len);
670+
trace_svcrdma_decode_rqst(rctxt, rdma_argp, hdr_len);
671671
return hdr_len;
672672

673673
out_short:
674-
trace_svcrdma_decode_short_err(rq_arg->len);
674+
trace_svcrdma_decode_short_err(rctxt, rq_arg->len);
675675
return -EINVAL;
676676

677677
out_version:
678-
trace_svcrdma_decode_badvers_err(rdma_argp);
678+
trace_svcrdma_decode_badvers_err(rctxt, rdma_argp);
679679
return -EPROTONOSUPPORT;
680680

681681
out_drop:
682-
trace_svcrdma_decode_drop_err(rdma_argp);
682+
trace_svcrdma_decode_drop_err(rctxt, rdma_argp);
683683
return 0;
684684

685685
out_proc:
686-
trace_svcrdma_decode_badproc_err(rdma_argp);
686+
trace_svcrdma_decode_badproc_err(rctxt, rdma_argp);
687687
return -EINVAL;
688688

689689
out_inval:
690-
trace_svcrdma_decode_parse_err(rdma_argp);
690+
trace_svcrdma_decode_parse_err(rctxt, rdma_argp);
691691
return -EINVAL;
692692
}
693693

0 commit comments

Comments
 (0)