SUNRPC: Add trace_rpc_timeout_status()
authorChuck Lever <chuck.lever@oracle.com>
Wed, 8 Jul 2020 20:09:58 +0000 (16:09 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Mon, 21 Sep 2020 14:21:09 +0000 (10:21 -0400)
For a long while we've wanted a tracepoint that fires when a major
timeout is reported in the system log. Such a tracepoint can be
attached to other actions that can take place when a timeout is
detected (eg, server or connection health assessment).

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
include/trace/events/sunrpc.h
net/sunrpc/clnt.c

index 0aa15cc..edb41e1 100644 (file)
@@ -261,6 +261,7 @@ DECLARE_EVENT_CLASS(rpc_task_status,
 DEFINE_RPC_STATUS_EVENT(call);
 DEFINE_RPC_STATUS_EVENT(bind);
 DEFINE_RPC_STATUS_EVENT(connect);
+DEFINE_RPC_STATUS_EVENT(timeout);
 
 TRACE_EVENT(rpc_request,
        TP_PROTO(const struct rpc_task *task),
index 48d8681..cabde92 100644 (file)
@@ -2398,7 +2398,7 @@ rpc_check_timeout(struct rpc_task *task)
        if (xprt_adjust_timeout(task->tk_rqstp) == 0)
                return;
 
-       dprintk("RPC: %5u call_timeout (major)\n", task->tk_pid);
+       trace_rpc_timeout_status(task);
        task->tk_timeouts++;
 
        if (RPC_IS_SOFTCONN(task) && !rpc_check_connected(task->tk_rqstp)) {