@@ -2371,7 +2371,7 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
rqstp->rq_lease_breaker = (void **)&cstate->clp;
- trace_nfsd_compound(rqstp, args->opcnt);
+ trace_nfsd4_compound(rqstp, args->opcnt);
while (!status && resp->opcnt < args->opcnt) {
op = &args->ops[resp->opcnt++];
@@ -2450,8 +2450,8 @@ nfsd4_proc_compound(struct svc_rqst *rqstp)
status = op->status;
}
- trace_nfsd_compound_status(args->opcnt, resp->opcnt, status,
- nfsd4_op_name(op->opnum));
+ trace_nfsd4_compoundstatus(rqstp, args->opcnt, resp->opcnt,
+ status, nfsd4_op_name(op->opnum));
nfsd4_cstate_clear_replay(cstate);
nfsd4_increment_op_stats(op->opnum);
@@ -102,42 +102,49 @@ NFSD_PERMISSION_LIST
#define show_perm_flags(val) __print_flags(val, "|", NFSD_PERMISSION_LIST)
-TRACE_EVENT(nfsd_compound,
- TP_PROTO(const struct svc_rqst *rqst,
- u32 args_opcnt),
- TP_ARGS(rqst, args_opcnt),
+TRACE_EVENT(nfsd4_compound,
+ TP_PROTO(
+ const struct svc_rqst *rqstp,
+ u32 args_opcnt
+ ),
+ TP_ARGS(rqstp, args_opcnt),
TP_STRUCT__entry(
__field(u32, xid)
__field(u32, args_opcnt)
),
TP_fast_assign(
- __entry->xid = be32_to_cpu(rqst->rq_xid);
+ __entry->xid = be32_to_cpu(rqstp->rq_xid);
__entry->args_opcnt = args_opcnt;
),
TP_printk("xid=0x%08x opcnt=%u",
__entry->xid, __entry->args_opcnt)
)
-TRACE_EVENT(nfsd_compound_status,
- TP_PROTO(u32 args_opcnt,
+TRACE_EVENT(nfsd4_compoundstatus,
+ TP_PROTO(
+ const struct svc_rqst *rqstp,
+ u32 args_opcnt,
u32 resp_opcnt,
__be32 status,
- const char *name),
- TP_ARGS(args_opcnt, resp_opcnt, status, name),
+ const char *name
+ ),
+ TP_ARGS(rqstp, args_opcnt, resp_opcnt, status, name),
TP_STRUCT__entry(
+ __field(u32, xid)
__field(u32, args_opcnt)
__field(u32, resp_opcnt)
__field(int, status)
__string(name, name)
),
TP_fast_assign(
+ __entry->xid = be32_to_cpu(rqstp->rq_xid);
__entry->args_opcnt = args_opcnt;
__entry->resp_opcnt = resp_opcnt;
__entry->status = be32_to_cpu(status);
__assign_str(name, name);
),
- TP_printk("op=%u/%u %s status=%d",
- __entry->resp_opcnt, __entry->args_opcnt,
+ TP_printk("xid=0x%08x op=%u/%u %s status=%d",
+ __entry->xid, __entry->resp_opcnt, __entry->args_opcnt,
__get_str(name), __entry->status)
)
The two tracepoints, nfsd_compound and nfsd_compound_status, should provide matching information, to enable the records to be bracketed correctly. So, for example: nfsd-1034 [000] 165.191371: nfsd4_compound: xid=0xe62d9610 opcnt=4 nfsd-1034 [000] 165.191516: nfsd4_compound_status: xid=0xe62d9610 op=1/4 OP_PUTFH status=0 nfsd-1034 [000] 165.191637: nfsd4_compound_status: xid=0xe62d9610 op=2/4 OP_CREATE status=0 nfsd-1034 [000] 165.191639: nfsd4_compound_status: xid=0xe62d9610 op=3/4 OP_GETFH status=0 nfsd-1034 [000] 165.191680: nfsd4_compound_status: xid=0xe62d9610 op=4/4 OP_GETATTR status=0 Signed-off-by: Chuck Lever <chuck.lever@oracle.com> --- fs/nfsd/nfs4proc.c | 6 +++--- fs/nfsd/trace.h | 29 ++++++++++++++++++----------- 2 files changed, 21 insertions(+), 14 deletions(-)