提交 5753cba1 编写于 作者: S Steve Dickson 提交者: Trond Myklebust

SUNRPC: Adding status trace points

This patch adds three trace points to the status routines
in the sunrpc state machine.

The goal of these trace points is to give an Admin
the ability to check on binding status or connection
status to see if there is a potential problem.
Signed-off-by: NSteve Dickson <steved@redhat.com>
Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
上级 85c0d24f
......@@ -8,6 +8,59 @@
#include <linux/sunrpc/clnt.h>
#include <linux/tracepoint.h>
DECLARE_EVENT_CLASS(rpc_task_status,
TP_PROTO(struct rpc_task *task),
TP_ARGS(task),
TP_STRUCT__entry(
__field(const struct rpc_task *, task)
__field(const struct rpc_clnt *, clnt)
__field(int, status)
),
TP_fast_assign(
__entry->task = task;
__entry->clnt = task->tk_client;
__entry->status = task->tk_status;
),
TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status)
);
DEFINE_EVENT(rpc_task_status, rpc_call_status,
TP_PROTO(struct rpc_task *task),
TP_ARGS(task)
);
DEFINE_EVENT(rpc_task_status, rpc_bind_status,
TP_PROTO(struct rpc_task *task),
TP_ARGS(task)
);
TRACE_EVENT(rpc_connect_status,
TP_PROTO(struct rpc_task *task, int status),
TP_ARGS(task, status),
TP_STRUCT__entry(
__field(const struct rpc_task *, task)
__field(const struct rpc_clnt *, clnt)
__field(int, status)
),
TP_fast_assign(
__entry->task = task;
__entry->clnt = task->tk_client;
__entry->status = status;
),
TP_printk("task:%p@%p, status %d",__entry->task, __entry->clnt, __entry->status)
);
DECLARE_EVENT_CLASS(rpc_task_running,
TP_PROTO(const struct rpc_clnt *clnt, const struct rpc_task *task, const void *action),
......
......@@ -36,6 +36,7 @@
#include <linux/sunrpc/rpc_pipe_fs.h>
#include <linux/sunrpc/metrics.h>
#include <linux/sunrpc/bc_xprt.h>
#include <trace/events/sunrpc.h>
#include "sunrpc.h"
#include "netns.h"
......@@ -1247,6 +1248,7 @@ call_bind_status(struct rpc_task *task)
return;
}
trace_rpc_bind_status(task);
switch (task->tk_status) {
case -ENOMEM:
dprintk("RPC: %5u rpcbind out of memory\n", task->tk_pid);
......@@ -1346,6 +1348,7 @@ call_connect_status(struct rpc_task *task)
return;
}
trace_rpc_connect_status(task, status);
switch (status) {
/* if soft mounted, test if we've timed out */
case -ETIMEDOUT:
......@@ -1534,6 +1537,7 @@ call_status(struct rpc_task *task)
return;
}
trace_rpc_call_status(task);
task->tk_status = 0;
switch(status) {
case -EHOSTDOWN:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册