Merge tag 'nfs-for-4.17-1' of git://git.linux-nfs.org/projects/anna/linux-nfs
[linux-block.git] / include / trace / events / sunrpc.h
index 922cb8968fb246ed22126b910713b07d1ecc8597..335d87242439db1b64d2ed7ad0c167844d0c5dad 100644 (file)
@@ -50,9 +50,9 @@ DEFINE_EVENT(rpc_task_status, rpc_bind_status,
 );
 
 TRACE_EVENT(rpc_connect_status,
-       TP_PROTO(struct rpc_task *task, int status),
+       TP_PROTO(const struct rpc_task *task),
 
-       TP_ARGS(task, status),
+       TP_ARGS(task),
 
        TP_STRUCT__entry(
                __field(unsigned int, task_id)
@@ -63,7 +63,7 @@ TRACE_EVENT(rpc_connect_status,
        TP_fast_assign(
                __entry->task_id = task->tk_pid;
                __entry->client_id = task->tk_client->cl_clid;
-               __entry->status = status;
+               __entry->status = task->tk_status;
        ),
 
        TP_printk("task:%u@%u status=%d",
@@ -103,9 +103,9 @@ TRACE_EVENT(rpc_request,
 
 DECLARE_EVENT_CLASS(rpc_task_running,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+       TP_PROTO(const struct rpc_task *task, const void *action),
 
-       TP_ARGS(clnt, task, action),
+       TP_ARGS(task, action),
 
        TP_STRUCT__entry(
                __field(unsigned int, task_id)
@@ -117,7 +117,8 @@ DECLARE_EVENT_CLASS(rpc_task_running,
                ),
 
        TP_fast_assign(
-               __entry->client_id = clnt ? clnt->cl_clid : -1;
+               __entry->client_id = task->tk_client ?
+                                    task->tk_client->cl_clid : -1;
                __entry->task_id = task->tk_pid;
                __entry->action = action;
                __entry->runstate = task->tk_runstate;
@@ -136,33 +137,33 @@ DECLARE_EVENT_CLASS(rpc_task_running,
 
 DEFINE_EVENT(rpc_task_running, rpc_task_begin,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+       TP_PROTO(const struct rpc_task *task, const void *action),
 
-       TP_ARGS(clnt, task, action)
+       TP_ARGS(task, action)
 
 );
 
 DEFINE_EVENT(rpc_task_running, rpc_task_run_action,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+       TP_PROTO(const struct rpc_task *task, const void *action),
 
-       TP_ARGS(clnt, task, action)
+       TP_ARGS(task, action)
 
 );
 
 DEFINE_EVENT(rpc_task_running, rpc_task_complete,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
+       TP_PROTO(const struct rpc_task *task, const void *action),
 
-       TP_ARGS(clnt, task, action)
+       TP_ARGS(task, action)
 
 );
 
 DECLARE_EVENT_CLASS(rpc_task_queued,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
+       TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
 
-       TP_ARGS(clnt, task, q),
+       TP_ARGS(task, q),
 
        TP_STRUCT__entry(
                __field(unsigned int, task_id)
@@ -175,7 +176,8 @@ DECLARE_EVENT_CLASS(rpc_task_queued,
                ),
 
        TP_fast_assign(
-               __entry->client_id = clnt ? clnt->cl_clid : -1;
+               __entry->client_id = task->tk_client ?
+                                    task->tk_client->cl_clid : -1;
                __entry->task_id = task->tk_pid;
                __entry->timeout = task->tk_timeout;
                __entry->runstate = task->tk_runstate;
@@ -196,18 +198,63 @@ DECLARE_EVENT_CLASS(rpc_task_queued,
 
 DEFINE_EVENT(rpc_task_queued, rpc_task_sleep,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
+       TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
 
-       TP_ARGS(clnt, task, q)
+       TP_ARGS(task, q)
 
 );
 
 DEFINE_EVENT(rpc_task_queued, rpc_task_wakeup,
 
-       TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const struct rpc_wait_queue *q),
+       TP_PROTO(const struct rpc_task *task, const struct rpc_wait_queue *q),
+
+       TP_ARGS(task, q)
+
+);
+
+TRACE_EVENT(rpc_stats_latency,
+
+       TP_PROTO(
+               const struct rpc_task *task,
+               ktime_t backlog,
+               ktime_t rtt,
+               ktime_t execute
+       ),
 
-       TP_ARGS(clnt, task, q)
+       TP_ARGS(task, backlog, rtt, execute),
 
+       TP_STRUCT__entry(
+               __field(u32, xid)
+               __field(int, version)
+               __string(progname, task->tk_client->cl_program->name)
+               __string(procname, rpc_proc_name(task))
+               __field(unsigned long, backlog)
+               __field(unsigned long, rtt)
+               __field(unsigned long, execute)
+               __string(addr,
+                        task->tk_xprt->address_strings[RPC_DISPLAY_ADDR])
+               __string(port,
+                        task->tk_xprt->address_strings[RPC_DISPLAY_PORT])
+       ),
+
+       TP_fast_assign(
+               __entry->xid = be32_to_cpu(task->tk_rqstp->rq_xid);
+               __entry->version = task->tk_client->cl_vers;
+               __assign_str(progname, task->tk_client->cl_program->name)
+               __assign_str(procname, rpc_proc_name(task))
+               __entry->backlog = ktime_to_us(backlog);
+               __entry->rtt = ktime_to_us(rtt);
+               __entry->execute = ktime_to_us(execute);
+               __assign_str(addr,
+                            task->tk_xprt->address_strings[RPC_DISPLAY_ADDR]);
+               __assign_str(port,
+                            task->tk_xprt->address_strings[RPC_DISPLAY_PORT]);
+       ),
+
+       TP_printk("peer=[%s]:%s xid=0x%08x %sv%d %s backlog=%lu rtt=%lu execute=%lu",
+               __get_str(addr), __get_str(port), __entry->xid,
+               __get_str(progname), __entry->version, __get_str(procname),
+               __entry->backlog, __entry->rtt, __entry->execute)
 );
 
 /*
@@ -406,6 +453,27 @@ DEFINE_EVENT(rpc_xprt_event, xprt_complete_rqst,
        TP_PROTO(struct rpc_xprt *xprt, __be32 xid, int status),
        TP_ARGS(xprt, xid, status));
 
+TRACE_EVENT(xprt_ping,
+       TP_PROTO(const struct rpc_xprt *xprt, int status),
+
+       TP_ARGS(xprt, status),
+
+       TP_STRUCT__entry(
+               __field(int, status)
+               __string(addr, xprt->address_strings[RPC_DISPLAY_ADDR])
+               __string(port, xprt->address_strings[RPC_DISPLAY_PORT])
+       ),
+
+       TP_fast_assign(
+               __entry->status = status;
+               __assign_str(addr, xprt->address_strings[RPC_DISPLAY_ADDR]);
+               __assign_str(port, xprt->address_strings[RPC_DISPLAY_PORT]);
+       ),
+
+       TP_printk("peer=[%s]:%s status=%d",
+                       __get_str(addr), __get_str(port), __entry->status)
+);
+
 TRACE_EVENT(xs_tcp_data_ready,
        TP_PROTO(struct rpc_xprt *xprt, int err, unsigned int total),