summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2008-05-14 12:54:58 -0400
committerSteve Dickson <steved@redhat.com>2008-05-14 12:54:58 -0400
commitc1219627e96c121a5a7f69a19c44c5fc98c8ab77 (patch)
tree282df271c977459adadfc675af10b22a3eea438c
parent06b10622ae9c1bb929d088ed7f0faa33eac18503 (diff)
downloadsystemtap-c1219627e96c121a5a7f69a19c44c5fc98c8ab77.tar.gz
systemtap-c1219627e96c121a5a7f69a19c44c5fc98c8ab77.tar.xz
systemtap-c1219627e96c121a5a7f69a19c44c5fc98c8ab77.zip
Added in nfs_auth.stp tapset/task.stp xprt.stp
-rw-r--r--nfs_auth.stp11
-rw-r--r--tapset/task.stp23
-rw-r--r--xprt.stp44
3 files changed, 78 insertions, 0 deletions
diff --git a/nfs_auth.stp b/nfs_auth.stp
new file mode 100644
index 0000000..c7fc739
--- /dev/null
+++ b/nfs_auth.stp
@@ -0,0 +1,11 @@
+probe module("auth_rpcgss").function("gss_create")
+{
+ printf("gss_create: clnt %p flavor %d\n", $clnt, $flavor);
+}
+probe module("auth_rpcgss").function("gss_create").return
+{
+ printf("gss_create: %p\n", $return);
+}
+
+probe begin { log("starting nfs_auth probe") }
+probe end { log("ending nfs_auth probe") }
diff --git a/tapset/task.stp b/tapset/task.stp
new file mode 100644
index 0000000..d409a96
--- /dev/null
+++ b/tapset/task.stp
@@ -0,0 +1,23 @@
+%{
+#include <linux/kernel.h>
+#include <linux/sunrpc/clnt.h>
+#include <linux/sunrpc/svc.h>
+%}
+
+function task_dump:string(_task:long)
+%{
+ struct rpc_task *task = (struct rpc_task *)(long) kread(&(THIS->_task));
+ char buf[MAXSTRINGLEN];
+ int cc=0;
+
+ if (task <= 0) {
+ sprintf(buf+cc, "task NULL");
+ } else {
+ sprintf(buf+cc, "task %p tk_pid %d tk_status %d\n",
+ task, task->tk_pid, task->tk_status);
+ cc = strlen(buf);
+ }
+ snprintf(THIS->__retvalue, MAXSTRINGLEN, "%s", buf);
+
+ CATCH_DEREF_FAULT();
+%}
diff --git a/xprt.stp b/xprt.stp
new file mode 100644
index 0000000..b6a0c73
--- /dev/null
+++ b/xprt.stp
@@ -0,0 +1,44 @@
+global xs_task, trans_task, udp_send_task
+
+probe module("sunrpc").function("xs_connect")
+{
+ printf("xs_connect: task %p\n", $task);
+ xs_task = $task;
+ //print_backtrace();
+}
+probe module("sunrpc").function("xs_tcp_connect")
+{
+ printf("xs_tcp_connect: task %p\n", $task);
+ //print_backtrace();
+ xs_task = $task;
+}
+probe module("sunrpc").function("xprt_connect_status")
+{
+ printf("xprt_connect_status: task %p\n", $task);
+}
+probe module("sunrpc").function("xprt_connect_status").return
+{
+ printf("xprt_connect_status: %s", task_dump(xs_task));
+}
+probe module("sunrpc").function("xprt_transmit")
+{
+ printf("xprt_transmit: task %p\n", $task);
+ trans_task = $task;
+}
+probe module("sunrpc").function("xprt_transmit").return
+{
+ printf("xprt_transmit: %s", task_dump(trans_task));
+}
+probe module("sunrpc").function("xs_udp_send_request")
+{
+ printf("xs_udp_send_request: task %p\n", $task);
+ udp_send_task = $task;
+}
+probe module("sunrpc").function("xs_udp_send_request").return
+{
+ if ($return)
+ printf("xs_udp_send_request: %d (%s)\n", $return, errno_str($return));
+}
+probe begin { log("starting xprt probe") }
+probe end { log("ending xprt probe") }
+