summaryrefslogtreecommitdiffstats
path: root/nfsd
diff options
context:
space:
mode:
authorSteve Dickson <steved@redhat.com>2009-06-10 11:21:37 -0400
committerSteve Dickson <steved@redhat.com>2009-06-10 11:21:37 -0400
commitdfdce363041b4fb72910837174bf40019923c9bc (patch)
tree827cf40c3a311e8314c0e6719cebd7e0c34919ec /nfsd
parentaaa6513f6db3a54691cfa7022bfbd979db42672e (diff)
downloadsystemtap-dfdce363041b4fb72910837174bf40019923c9bc.tar.gz
systemtap-dfdce363041b4fb72910837174bf40019923c9bc.tar.xz
systemtap-dfdce363041b4fb72910837174bf40019923c9bc.zip
Reorganised scripts into local directories
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'nfsd')
-rw-r--r--nfsd/nfsd4_acl.stp56
-rw-r--r--nfsd/nfsd4_callback.stp32
-rw-r--r--nfsd/nfsd4_secinfo.stp72
-rw-r--r--nfsd/nfsd_auth.stp29
-rw-r--r--nfsd/nfsd_cacheio.stp147
-rw-r--r--nfsd/nfsd_deleg.stp48
-rw-r--r--nfsd/nfsd_dispatch.stp47
-rw-r--r--nfsd/nfsd_exports.stp89
-rw-r--r--nfsd/nfsd_fh.stp101
-rw-r--r--nfsd/nfsd_lookup.stp100
-rw-r--r--nfsd/nfsd_permission.stp16
-rw-r--r--nfsd/nfsd_setattr.stp19
-rw-r--r--nfsd/svc_export.stp49
13 files changed, 805 insertions, 0 deletions
diff --git a/nfsd/nfsd4_acl.stp b/nfsd/nfsd4_acl.stp
new file mode 100644
index 0000000..e46403f
--- /dev/null
+++ b/nfsd/nfsd4_acl.stp
@@ -0,0 +1,56 @@
+global nfs4err
+
+probe module("nfsd").function("nfs4_acl_new")
+{
+ printf("nfs4_acl_new: n %d\n", $n);
+}
+probe module("nfsd").function("nfs4_acl_new").return
+{
+ printf("nfs4_acl_new: nfs4_acl * %p \n", $return);
+}
+probe module("nfsd").function("nfs4_acl_get_whotype")
+{
+ printf("nfs4_acl_get_whotype: p %p(%s) len %d\n",
+ $p, kernel_string($p), $len);
+}
+probe module("nfsd").function("nfs4_acl_get_whotype").return
+{
+ if ( $return == 0)
+ printf("nfs4_acl_get_whotype: return NFS4_ACL_WHO_NAMED\n");
+ if ( $return == 1)
+ printf("nfs4_acl_get_whotype: return NFS4_ACL_WHO_OWNER\n");
+ if ( $return == 2)
+ printf("nfs4_acl_get_whotype: return NFS4_ACL_WHO_GROUP\n");
+ if ( $return == 3)
+ printf("nfs4_acl_get_whotype: return NFS4_ACL_WHO_EVERYONE\n");
+}
+probe module("nfsd").function("nfs4_acl_write_who")
+{
+ printf("nfs4_acl_write_who: who %d p %p(%s)\n",
+ $who, $p, kernel_string($p));
+}
+probe module("nfsd").function("nfs4_acl_write_who").return
+{
+ printf("nfs4_acl_write_who: return %d\n", $return);
+}
+probe module("nfsd").function("idmap_name_to_id")
+{
+ printf("idmap_name_to_id: rqstp %d type %d name(%d) %s\n",
+ $rqstp, $type, $namelen, kernel_string($name));
+}
+probe module("nfsd").function("idmap_name_to_id").return
+{
+ printf("idmap_name_to_id: return %d(%s)\n", $return, errno_str($return));
+}
+probe module("nfs").function("nfs4_stat_to_errno")
+{
+ nfs4err = $stat;
+}
+probe module("nfs").function("nfs4_stat_to_errno").return
+{
+ printf("nfs4_stat_to_errno: %s errno %d(%s)\n",
+ nfs4error(nfs4err), $return, errno_str($return));
+}
+
+probe begin { log("starting nfsd4_acl probe") }
+probe end { log("ending nfsd4_acl probe") }
diff --git a/nfsd/nfsd4_callback.stp b/nfsd/nfsd4_callback.stp
new file mode 100644
index 0000000..b0defc6
--- /dev/null
+++ b/nfsd/nfsd4_callback.stp
@@ -0,0 +1,32 @@
+probe module("nfsd").function("nfsd4_probe_callback")
+{
+ printf("nfsd4_probe_callback: clp %p\n", $clp);
+}
+probe module("nfsd").function("nfsd4_setclientid_confirm")
+{
+ printf("nfsd4_setclientid_confirm: hellow\n");
+}
+/*
+probe module("nfsd").function("*@fs/nfsd/nfs4state.c:3318")
+{
+ printf("nfsd4_setclientid_confirm: hellow\n");
+}
+*/
+probe module("nfsd").function("nfsd4_setclientid_confirm").return
+{
+ printf("nfsd4_setclientid_confirm: status %d\n", $return);
+}
+probe module("nfsd").function("nfsd4_process_open2").return
+{
+ printf("nfsd4_process_open2: status %d\n", $return);
+}
+probe module("nfsd").function("svc_export_parse").return
+{
+ printf("svc_export_parse: status %d\n", $return);
+}
+probe module("sunrpc").function("rpc_exit_task")
+{
+ printf("rpc_exit_task: task 0x%p\n", $task);
+}
+probe begin { log("starting probe") }
+probe end { log("ending probe") }
diff --git a/nfsd/nfsd4_secinfo.stp b/nfsd/nfsd4_secinfo.stp
new file mode 100644
index 0000000..aa91a26
--- /dev/null
+++ b/nfsd/nfsd4_secinfo.stp
@@ -0,0 +1,72 @@
+global check_exp, check_rqstp_flavor
+
+probe module("nfsd").function("nfsd4_secinfo")
+{
+ printf("nfsd4_secinfo: rqstp %p fh %p secinfo %p\n",
+ $rqstp, $current_fh, $secinfo);
+ printf(" : %s\n", nfsd4_secinfo_dump($secinfo));
+}
+probe module("nfsd").function("nfsd4_secinfo").return
+{
+ printf("nfsd4_secinfo: %s\n", nfsderror($return));
+}
+/*
+probe module("nfsd").function("nfsd_lookup_dentry")
+{
+ printf(" nfsd_lookup_dentry: rqstp %p fh %p\n", $rqstp, $fhp);
+}
+*/
+probe module("nfsd").function("nfsd_lookup_dentry").return
+{
+ if ($return != 0)
+ printf(" nfsd_lookup_dentry: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("nfsd4_encode_secinfo")
+{
+ if ($nfserr != 0) {
+ printf("nfsd4_encode_secinfo: error %s\n", nfsderror($nfserr));
+ } else {
+ printf("nfsd4_encode_secinfo: %s\n", svc_export_flavors($secinfo->si_exp));
+ }
+}
+probe module("nfsd").function("nfsd4_decode_secinfo")
+{
+ printf("nfsd4_decode_secinfo: argp %p secinfo %p\n", $argp, $secinfo);
+}
+probe module("nfsd").function("nfsd4_decode_secinfo").return
+{
+ printf("nfsd4_decode_secinfo: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("secinfo_parse")
+{
+ printf("secinfo_parse: %s\n", svc_export_dump($exp));
+}
+probe module("nfsd").function("secinfo_parse").return
+{
+ printf("secinfo_parse: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("nfsd_lookup")
+{
+ printf("nfsd_lookup: rqstp %p fhp %p name %s\n",
+ $rqstp, $fhp, kernel_string($name));
+}
+probe module("nfsd").function("nfsd_lookup").return
+{
+ printf("nfsd_lookup: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("check_nfsd_access")
+{
+ check_exp = $exp;
+ check_rqstp_flavor = $rqstp->rq_flavor;
+}
+probe module("nfsd").function("check_nfsd_access").return
+{
+ if ($return != 0) {
+ printf(" check_nfsd_access: %s\n", nfsderror($return));
+ printf(" : rq_flavor %d %s\n",
+ check_rqstp_flavor, svc_export_flavors(check_exp));
+ }
+}
+probe begin { log("starting nfsd4_secinfo probe") }
+probe end { log("ending nfsd4_secinfo probe") }
+
diff --git a/nfsd/nfsd_auth.stp b/nfsd/nfsd_auth.stp
new file mode 100644
index 0000000..6e2b4d2
--- /dev/null
+++ b/nfsd/nfsd_auth.stp
@@ -0,0 +1,29 @@
+probe module("sunrpc").function("svc_authenticate")
+{
+ printf("svc_authenticate: rqstp %p authp %p\n", $rqstp, $authp);
+}
+probe module("sunrpc").function("svc_authenticate").return
+{
+ printf("svc_authenticate: %s\n", svcerror($return));
+}
+probe module("auth_rpcgss").function("svcauth_gss_set_client")
+{
+ printf("svcauth_gss_set_client: rqstp %p\n", $rqstp);
+}
+probe module("auth_rpcgss").function("svcauth_gss_set_client").return
+{
+ printf("svcauth_gss_set_client: %s\n", svcerror($return));
+}
+probe module("sunrpc").function("svcauth_unix_set_client")
+{
+ printf("svcauth_unix_set_client: rqstp %p\n", $rqstp);
+}
+probe module("sunrpc").function("svcauth_unix_set_client").return
+{
+ printf("svcauth_unix_set_client: %s\n", svcerror($return));
+}
+
+
+probe begin { log("starting nfsd_auth probe") }
+probe end { log("ending nfsd_auth probe") }
+
diff --git a/nfsd/nfsd_cacheio.stp b/nfsd/nfsd_cacheio.stp
new file mode 100644
index 0000000..3dc0a8d
--- /dev/null
+++ b/nfsd/nfsd_cacheio.stp
@@ -0,0 +1,147 @@
+#!/usr/bin/env stap
+
+probe module("nfsd").function("exp_pseudoroot")
+{
+ printf("exp_pseudoroot: rqstp %p fhp %p\n", $rqstp, $fhp);
+}
+probe module("nfsd").function("exp_pseudoroot").return
+{
+ printf("exp_pseudoroot: %s\n", nfsderror($return));
+}
+probe module("sunrpc").function("cache_write")
+{
+ if (!isinstr("rpc.idmapd", file2name($filp))) {
+ printf("cache_write(%s): cnt %d %s\n", execname(),
+ $count, file2name($filp));
+ }
+ //printf("cache_write(%s): filp %p cnt %d\n", execname(), $filp, $count);
+ //printf(" : name %s\n", file2name($filp));
+}
+probe module("sunrpc").function("cache_write").return
+{
+ if ($return < 0) {
+ printf("cache_write: error %s\n", errno_str($return));
+ } else {
+ printf("cache_write: cnt %d\n", $return);
+ }
+}
+probe module("nfsd").function("svc_export_lookup")
+{
+ printf(" svc_export_lookup: %p\n", $exp);
+}
+probe module("nfsd").function("svc_export_lookup").return
+{
+ if ($return > 0) {
+ printf(" svc_export_lookup: %s\n", svc_export_dump($return));
+ } else {
+ printf(" svc_export_lookup: return %p\n", $return);
+ }
+}
+probe module("nfsd").function("svc_export_parse")
+{
+ printf(" svc_export_parse: cd %p(%s) mlen %d\n",
+ $cd, kernel_string($cd->name), $mlen);
+ printf(" %s\n",
+ svc_export_data(kernel_string($mesg)));
+}
+probe module("nfsd").function("svc_export_parse").return
+{
+ if ($return < 0)
+ printf(" svc_export_parse: error %s\n", errno_str($return));
+}
+probe module("nfsd").function("exp_get_by_name")
+{
+ printf("exp_get_by_name: clp %p mnt %p dentry %p reqp %p\n",
+ $clp, $mnt, $dentry, $reqp);
+}
+probe module("nfsd").function("exp_get_by_name").return
+{
+ printf("exp_get_by_name: return %p\n", $return);
+}
+probe module("nfsd").function("exp_export")
+{
+ printf("exp_export: %p\n", $nxp);
+}
+probe module("nfsd").function("exp_export").return
+{
+ printf("exp_export: return %p\n", $return);
+}
+/*
+probe module("sunrpc").function("cache_read")
+{
+ printf("cache_read(%s): %s\n", execname(), file2name($filp));
+ //printf("cache_write(%s): filp %p cnt %d\n", execname(), $filp, $count);
+ //printf(" : name %s\n", file2name($filp));
+}
+probe module("sunrpc").function("cache_read").return
+{
+ if ($return < 0)
+ printf("cache_read: error %s\n", errno_str($return));
+}
+*/
+probe module("nfsd").function("svc_export_parse")
+{
+ printf(" svc_export_parse: cd %p(%s) mlen %d\n",
+ $cd, kernel_string($cd->name), $mlen);
+ printf(" %s\n",
+ svc_export_data(kernel_string($mesg)));
+}
+probe module("nfsd").function("svc_export_parse").return
+{
+ if ($return < 0)
+ printf(" svc_export_parse: error %s\n", errno_str($return));
+}
+probe module("sunrpc").function("ip_map_parse")
+{
+ printf(" ip_map_parse: cd %p(%s) mlen %d\n",
+ $cd, kernel_string($cd->name), $mlen);
+ printf(" %s\n", ip_map_data(kernel_string($mesg)));
+}
+probe module("sunrpc").function("ip_map_parse").return
+{
+ if ($return < 0)
+ printf(" ip_map_parse: error %s\n", errno_str($return));
+}
+probe module("nfsd").function("expkey_parse")
+{
+ printf(" expkey_parse: cd %p(%s) mlen %d\n",
+ $cd, kernel_string($cd->name), $mlen);
+ printf(" %s\n", expkey_data(kernel_string($mesg)));
+}
+probe module("nfsd").function("expkey_parse").return
+{
+ if ($return < 0)
+ printf(" expkey_parse: error %s\n", errno_str($return));
+}
+/*
+probe module("nfsd").function("idtoname_parse")
+{
+ printf(" idtoname_parse: cd %p(%s) buflen %d\n",
+ $cd, kernel_string($cd->name), $buflen);
+ printf(" %s\n", idtoname_data(kernel_string($buf)));
+}
+probe module("nfsd").function("idtoname_parse").return
+{
+ if ($return < 0)
+ printf(" idtoname_parse: error %s\n", errno_str($return));
+}
+*/
+probe module("nfsd").function("expkey_request")
+{
+ printf(" expkey_request: cd %p(%s)\n",
+ $cd, kernel_string($cd->name));
+ //print_stack(backtrace());
+ //printf(" %s\n", expkey_data(kernel_string($mesg)));
+}
+probe module("nfsd").function("check_export")
+{
+ printf(" check_export: inode %p flags 0x%x uuid %p\n",
+ $inode, $flags, $uuid);
+}
+probe module("nfsd").function("check_export").return
+{
+ if ($return < 0)
+ printf(" check_export: error %s\n", errno_str($return));
+}
+probe begin { log("starting cachio probe") }
+probe end { log("ending cachio probe") }
diff --git a/nfsd/nfsd_deleg.stp b/nfsd/nfsd_deleg.stp
new file mode 100644
index 0000000..02c7590
--- /dev/null
+++ b/nfsd/nfsd_deleg.stp
@@ -0,0 +1,48 @@
+
+probe module("nfsd").function("nfs4_open_delegation")
+{
+ printf("nfs4_open_delegation: fh %p open %p (type: %d) stp %d\n",
+ $fh, $open, $open->op_claim_type, $stp);
+ printf(" : %s\n", nfs4_callback($stp));
+}
+probe module("nfsd").function("alloc_init_deleg")
+{
+ printf(" alloc_init_deleg: clp %p stp %p current_fh %p, type %d\n",
+ $clp, $stp, $current_fh, $type);
+}
+probe module("nfsd").function("alloc_init_deleg").return
+{
+ printf(" alloc_init_deleg: %p\n", $return);
+}
+probe kernel.function("setlease")
+{
+ printf(" setlease: filp %p arg %p\n", $filp, $arg);
+}
+probe kernel.function("setlease").return
+{
+ printf(" setlease: return %d (%s)\n", $return, errno_str($return));
+}
+/*
+probe kernel.function("security_file_lock")
+{
+ printf(" security_file_lock: filp %p arg %p\n", $filp, $arg);
+}
+probe kernel.function("security_file_lock").return
+{
+ printf(" security_file_lock: return %d (%s)\n",
+ $return, errno_str($return));
+}
+*/
+probe kernel.function("__setlease")
+{
+ printf(" __setlease: filp %p arg %p\n", $filp, $arg);
+}
+probe kernel.function("__setlease").return
+{
+ printf(" __setlease: return %d (%s)\n",
+ $return, errno_str($return));
+}
+
+probe begin { log("starting nfsd_deleg probe") }
+probe end { log("ending nfsd_deleg probe") }
+
diff --git a/nfsd/nfsd_dispatch.stp b/nfsd/nfsd_dispatch.stp
new file mode 100644
index 0000000..15f9e6f
--- /dev/null
+++ b/nfsd/nfsd_dispatch.stp
@@ -0,0 +1,47 @@
+/*
+probe module("nfsd").function("nfsd_setattr")
+{
+ printf("nfsd_setattr: rqstp %p fhp %p iap %p check_guard %d\n",
+ $rqstp, $fhp, $iap, $check_guard);
+}
+probe module("nfsd").function("nfsd_setattr").return
+{
+ printf("nfsd_setattr: %s\n", nfsderror($return));
+}
+probe nfsd.dispatch
+{
+ printf("prog %d proc %d\n", prog, proc);
+}
+probe nfsd.dispatch.return
+{
+ printf("return %s\n", retstr);
+}
+probe nfsd.proc.compound
+{
+ printf("cnt %d proc %p\n", num, op);
+}
+global lookupname
+
+probe nfsd.proc3.lookup
+{
+ lookupname = filename;
+
+}
+probe nfsd.proc3.lookup.return
+{
+ printf("nfsd_lookup %s %s\n", lookupname, nfsderror($return));
+}
+*/
+probe module("nfsd").function("nfsd4_proc_compound")
+{
+ printf("nfsd4_proc_compound: %s\n", nfs4ops($args));
+}
+probe module("nfsd").function("nfsd4_proc_compound").return
+{
+ if ($return != 0)
+ printf("nfsd4_proc_compound: %s\n", nfsderror($return));
+}
+
+probe begin { log("starting nfsd4_dispatch probe") }
+probe end { log("ending nfsd4_dispatch probe") }
+
diff --git a/nfsd/nfsd_exports.stp b/nfsd/nfsd_exports.stp
new file mode 100644
index 0000000..ec73af8
--- /dev/null
+++ b/nfsd/nfsd_exports.stp
@@ -0,0 +1,89 @@
+global check_exp, check_rqstp_flavor
+
+probe module("nfsd").function("exp_pseudoroot")
+{
+ printf("exp_pseudoroot: rqstp %p fhp %p\n", $rqstp, $fhp);
+}
+probe module("nfsd").function("exp_pseudoroot").return
+{
+ printf("exp_pseudoroot: %s\n", nfsderror($return));
+}
+/*
+probe module("nfsd").function("exp_find")
+{
+ printf(" exp_find: clp %p fsid %d fsdiv %p\n",
+ $clp, $fsid_type, $fsidv);
+}
+probe module("nfsd").function("exp_find").return
+{
+ printf(" exp_find: %p\n", $return);
+}
+*/
+probe module("nfsd").function("rqst_exp_find")
+{
+ printf(" rqst_exp_find: rqstp %p fsid_type %d fsidv %p\n",
+ $rqstp, $fsid_type, $fsidv);
+}
+probe module("nfsd").function("rqst_exp_find").return
+{
+ printf(" rqst_exp_find: %p\n", $return);
+}
+probe module("nfsd").function("fh_compose")
+{
+ printf(" fh_compose: fhp %p exp %p dentry %p ref_fh %p\n",
+ $fhp, $exp, $dentry, $ref_fh);
+}
+probe module("nfsd").function("fh_compose").return
+{
+ printf(" fh_compose: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("svc_export_lookup")
+{
+ printf(" svc_export_lookup: %p\n", $exp);
+}
+probe module("nfsd").function("svc_export_lookup").return
+{
+ printf(" svc_export_lookup: return %p\n", $return);
+ if ($return > 0)
+ printf(" : %s\n",
+ svc_export_dump($return));
+}
+probe module("sunrpc").function("cache_check")
+{
+ printf(" cache_check: detail %p h %p rqstp %p\n",
+ $detail, $h, $rqstp);
+ printf(" : %s\n", cache_head_dump($detail, $h));
+}
+probe module("sunrpc").function("cache_check").return
+{
+ if ($return)
+ printf(" cache_check: %s\n", errno_str($return));
+}
+probe module("sunrpc").function("cache_make_upcall")
+{
+ printf(" cache_make_upcall: detail %p h %p \n",
+ $detail, $h);
+ printf(" : %s\n", cache_head_dump($detail, $h));
+}
+probe module("sunrpc").function("cache_make_upcall").return
+{
+ if ($return)
+ printf(" cache_make_upcall: %s\n", errno_str($return));
+}
+/*
+probe module("nfsd").function("check_nfsd_access")
+{
+ check_exp = $exp;
+ check_rqstp_flavor = $rqstp->rq_flavor;
+}
+probe module("nfsd").function("check_nfsd_access").return
+{
+ if ($return != 0) {
+ printf(" check_nfsd_access: %s\n", nfsderror($return));
+ printf(" : rq_flavor %d %s\n",
+ check_rqstp_flavor, svc_export_flavors(check_exp));
+ }
+}
+*/
+probe begin { log("starting exports probe") }
+probe end { log("ending exports probe") }
diff --git a/nfsd/nfsd_fh.stp b/nfsd/nfsd_fh.stp
new file mode 100644
index 0000000..7c7fdbe
--- /dev/null
+++ b/nfsd/nfsd_fh.stp
@@ -0,0 +1,101 @@
+#!/usr/bin/env stap
+
+global _putfh_cstate, _putrootfh_cstate, pseudoroot_cstate
+
+probe module("nfsd").function("nfsd4_putrootfh")
+{
+ _putrootfh_cstate = $cstate;
+}
+probe module("nfsd").function("nfsd4_putrootfh").return
+{
+ if ($return) {
+ printf("nfsd4_putrootfh: %s\n", nfsderror($return));
+ } else {
+ printf("nfsd4_putrootfh: %s\n", cstate_pr(_putrootfh_cstate));
+ }
+}
+probe module("nfsd").function("exp_pseudoroot")
+{
+ /*
+ printf("exp_pseudoroot: rqstp %p fhp %p\n", $rqstp, $fhp);
+ */
+ pseudoroot_cstate = $fhp;
+}
+probe module("nfsd").function("exp_pseudoroot").return
+{
+ if ($return) {
+ printf("exp_pseudoroot: %s\n", nfsderror($return));
+ } else {
+ printf("exp_pseudoroot: %s\n", svcfhfmt(pseudoroot_cstate));
+ }
+}
+probe module("nfsd").function("nfsd4_putfh")
+{
+ printf("nfsd4_putfh: rqstp %p cstate %p putfh %p\n",
+ $rqstp, $cstate, $putfh);
+ _putfh_cstate = $cstate;
+}
+probe module("nfsd").function("nfsd4_putfh").return
+{
+ if ($return) {
+ printf("nfsd4_putfh: %s\n", nfsderror($return));
+ } else {
+ printf("nfsd4_putfh: %s\n", cstate_pr(_putfh_cstate));
+ }
+}
+probe module("nfsd").function("nfsd4_getfh")
+{
+ printf("nfsd4_getfh: rqstp %p cstate %p \n", $rqstp, $cstate);
+ printf(" %s\n", cstate_pr($cstate));
+}
+probe module("nfsd").function("nfsd4_getfh").return
+{
+ printf("nfsd4_getfh: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("fh_verify")
+{
+ printf(" fh_verify: rqstp %p fhp %p type %d access %d\n",
+ $rqstp, $fhp, $type, $access);
+ printf(" %s\n", svcfhfmt($fhp));
+}
+probe module("nfsd").function("fh_verify").return
+{
+ printf(" fh_verify: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("fh_compose")
+{
+ printf(" fh_compose: fhp %p exp %p dentry %p ref_fh %p\n",
+ $fhp, $exp, $dentry, $ref_fh);
+ printf(" : %s\n", svc_export_dump($exp));
+}
+probe module("nfsd").function("fh_compose").return
+{
+ printf(" fh_compose: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("rqst_exp_find")
+{
+ printf(" rqst_exp_find: rqstp %p fsid_type %d fsidv %p\n",
+ $rqstp, $fsid_type, $fsidv);
+}
+probe module("nfsd").function("rqst_exp_find").return
+{
+ if ($return != 0)
+ printf(" rqst_exp_find: %p\n", $return);
+}
+/*
+probe module("nfsd").function("exp_find_key").return
+{
+ printf("exp_find_key: %p\n", $return);
+}
+probe module("nfsd").function("exp_get_by_name").return
+{
+ printf("exp_get_by_name: %p\n", $return);
+}
+probe module("nfsd").function("svc_expkey_lookup").return
+{
+ printf("svc_expkey_lookup: %p\n", $return);
+}
+*/
+probe begin { log("starting nfsd_fh probe") }
+probe end { log("ending nfsd_fh probe") }
+
diff --git a/nfsd/nfsd_lookup.stp b/nfsd/nfsd_lookup.stp
new file mode 100644
index 0000000..1c9e9b4
--- /dev/null
+++ b/nfsd/nfsd_lookup.stp
@@ -0,0 +1,100 @@
+global check_exp, check_rqstp_flavor
+
+probe module("nfsd").function("nfsd_lookup")
+{
+ printf("nfsd_lookup: rqstp %p fhp %p name %s\n",
+ $rqstp, $fhp, kernel_string($name));
+}
+probe module("nfsd").function("nfsd_lookup").return
+{
+ if ($return)
+ printf("nfsd_lookup: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("nfsd_lookup_dentry").return
+{
+ if ($return != 0)
+ printf(" nfsd_lookup_dentry: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("check_nfsd_access")
+{
+ check_exp = $exp;
+ check_rqstp_flavor = $rqstp->rq_flavor;
+}
+probe module("nfsd").function("check_nfsd_access").return
+{
+ if ($return != 0) {
+ printf(" check_nfsd_access: %s\n", nfsderror($return));
+ printf(" : rq_flavor %d %s\n",
+ check_rqstp_flavor, svc_export_flavors(check_exp));
+ }
+}
+probe module("nfsd").function("fh_verify")
+{
+ printf(" fh_verify: rqstp %p fhp %p type %d access %d\n",
+ $rqstp, $fhp, $type, $access);
+ printf(" %s\n", svcfhfmt($fhp));
+}
+probe module("nfsd").function("fh_verify").return
+{
+ if ($return)
+ printf(" fh_verify: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("nfsd_setuser_and_check_port")
+{
+ printf(" nfsd_setuser_and_check_port: rqstp %p exp %p \n",
+ $rqstp, $exp);
+}
+probe module("nfsd").function("nfsd_setuser_and_check_port").return
+{
+ if ($return)
+ printf(" nfsd_setuser_and_check_port: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("check_nfsd_access")
+{
+ printf(" check_nfsd_access: rqstp %p exp %p \n",
+ $rqstp, $exp);
+}
+probe module("nfsd").function("check_nfsd_access").return
+{
+ if ($return)
+ printf(" check_nfsd_access: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("rqst_exp_parent")
+{
+ printf(" rqst_exp_parent: rqstp %p mnt %d dentry %d\n",
+ $rqstp, $mnt, $dentry);
+}
+probe module("nfsd").function("rqst_exp_parent").return
+{
+ printf(" rqst_exp_parent: %p\n", $return);
+}
+probe kernel.function("lookup_one_len")
+{
+ printf(" lookup_one_len: name %p dentry %p len %d\n",
+ $name, $base, $len);
+}
+probe kernel.function("lookup_one_len").return
+{
+ printf(" lookup_one_len: %p\n", $return);
+}
+probe module("nfsd").function("nfsd_cross_mnt")
+{
+ printf(" nfsd_cross_mnt: rqstp %p\n", $rqstp);
+}
+probe module("nfsd").function("nfsd_cross_mnt").return
+{
+ if ($return)
+ printf(" nfsd_cross_mnt: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("rqst_exp_get_by_name")
+{
+ printf(" rqst_exp_get_by_name: rqstp %p mnt %p dentry %p\n",
+ $rqstp, $mnt, $dentry);
+}
+probe module("nfsd").function("rqst_exp_get_by_name").return
+{
+ printf(" rqst_exp_get_by_name: %p\n", $return);
+}
+probe begin { log("starting nfsd_lookup probe") }
+probe end { log("ending nfsd_lookup probe") }
+
diff --git a/nfsd/nfsd_permission.stp b/nfsd/nfsd_permission.stp
new file mode 100644
index 0000000..7e27ca5
--- /dev/null
+++ b/nfsd/nfsd_permission.stp
@@ -0,0 +1,16 @@
+#!/usr/bin/env stap
+
+probe module("nfsd").function("nfsd_permission")
+{
+ printf("nfsd_permission: rqstp %p exp %p dentry %p acc 0x%x\n",
+ $rqstp, $exp, $dentry, $acc);
+ printf(" : %s\n", svc_export_dump($exp));
+}
+probe module("nfsd").function("nfsd_permission").return
+{
+ printf("nfsd_permission: %s\n", nfsderror($return));
+}
+probe begin { log("starting nfsd_permission probe") }
+probe end { log("ending nfsd_permission probe") }
+
+
diff --git a/nfsd/nfsd_setattr.stp b/nfsd/nfsd_setattr.stp
new file mode 100644
index 0000000..b0cd7e0
--- /dev/null
+++ b/nfsd/nfsd_setattr.stp
@@ -0,0 +1,19 @@
+#!/usr/bin/env stap
+
+probe module("nfsd").function("nfsd_setattr")
+{
+ printf("nfsd_setattr: rqstp %p fhp %p iap %p check_guard %d\n",
+ $rqstp, $fhp, $iap, $check_guard);
+}
+probe module("nfsd").function("nfsd_setattr").return
+{
+ printf("nfsd_setattr: %s\n", nfsderror($return));
+}
+probe module("nfsd").function("fh_verify").return
+{
+ if ($return)
+ printf(" fh_verify: %s\n", nfsderror($return));
+}
+probe begin { log("starting nfsd_setattr probe") }
+probe end { log("ending nfsd_setattr probe") }
+
diff --git a/nfsd/svc_export.stp b/nfsd/svc_export.stp
new file mode 100644
index 0000000..eb36538
--- /dev/null
+++ b/nfsd/svc_export.stp
@@ -0,0 +1,49 @@
+probe module("nfsd").function("svc_export_show")
+{
+ printf("svc_export_show: m 0x%p cd 0x%p h 0x%p\n", $m, $cd, $h);
+}
+probe module("nfsd").function("svc_export_show").return
+{
+ if ($return)
+ printf("svc_export_show: %s\n", nfsderror($return));
+}
+
+probe module("nfsd").function("export_update")
+{
+ printf("export_update: cnew 0x%p citem 0x%p\n", $cnew, $citem);
+}
+
+probe module("nfsd").function("svc_export_match")
+{
+ printf("svc_export_match: a 0x%p b 0x%p\n", $a, $b);
+}
+probe module("nfsd").function("svc_export_match").return
+{
+ printf("svc_export_match: %d\n", $return);
+}
+probe module("nfsd").function("svc_export_request")
+{
+ printf("svc_export_request: cd 0x%p h 0x%p\n", $cd, $h);
+}
+probe module("nfsd").function("svc_export_put")
+{
+ printf("svc_export_put: ref 0x%p \n", $ref);
+}
+probe module("nfsd").function("svc_export_parse")
+{
+ printf(" svc_export_parse: cd %p(%s) mlen %d\n",
+ $cd, kernel_string($cd->name), $mlen);
+ printf(" %s\n",
+ svc_export_data(kernel_string($mesg)));
+}
+probe module("nfsd").function("svc_export_parse").return
+{
+ if ($return < 0) {
+ printf(" svc_export_parse: error %s\n", errno_str($return));
+ } else {
+ printf(" svc_export_parse: count %d\n", $return);
+ }
+}
+probe begin { log("starting svc_export probe") }
+probe end { log("ending svc_export probe") }
+