%{
#include <linux/stat.h>
+#include <linux/sunrpc/svc.h>
+
#include <linux/nfsd/nfsfh.h>
#include <linux/nfs3.h>
#include <linux/nfs4.h>
-#include <linux/sunrpc/svc.h>
%}
nfsd.proc.read,
nfsd.proc.write,
nfsd.proc.commit,
- nfsd.proc.compound,
nfsd.proc.remove,
nfsd.proc.rename,
nfsd.proc.create
probe nfsd.proc.return = nfsd.proc.lookup.return,
nfsd.proc.read.return,
nfsd.proc.write.return,
- nfsd.proc.commit.return,
- nfsd.proc.compound.return,
nfsd.proc.remove.return,
nfsd.proc.rename.return,
nfsd.proc.create.return
{}
probe nfsd.proc.lookup.return = nfsd.proc2.lookup.return,
- nfsd.proc3.lookup.return,
- nfsd.proc4.lookup.return
+ nfsd.proc3.lookup.return
+%( kernel_v >= "2.6.25" %?
+ ,nfsd.proc4.lookup.return
+%)
{}
probe nfsd.proc2.lookup = kernel.function("nfsd_proc_lookup") !,
argstr = sprintf("%s", kernel_string_n($lookup->lo_name, $lookup->lo_len))
}
+%( kernel_v >= "2.6.25" %?
probe nfsd.proc4.lookup.return = kernel.function("nfsd4_lookup").return !,
module("nfsd").function("nfsd4_lookup").return ?
{
version = 4
retstr = sprintf("%s", nfsderror($return))
}
+%)
/*
*probe nfsd.proc.read
{}
probe nfsd.proc.read.return = nfsd.proc2.read.return,
- nfsd.proc3.read.return,
- nfsd.proc4.read.return
+ nfsd.proc3.read.return
+%( kernel_v >= "2.6.25" %?
+ ,nfsd.proc4.read.return
+%)
{}
probe nfsd.proc2.read = kernel.function("nfsd_proc_read")!,
units = "bytes"
}
+%( kernel_v >= "2.6.25" %?
probe nfsd.proc4.read.return = kernel.function("nfsd4_read").return!,
module("nfsd").function("nfsd4_read").return?
{
version = 4
retstr = sprintf("%s", nfsderror($return))
}
+%)
/*
*probe nfsd.proc.write
{}
probe nfsd.proc.write.return = nfsd.proc2.write.return,
- nfsd.proc3.write.return,
- nfsd.proc4.write.return
+ nfsd.proc3.write.return
+%( kernel_v >= "2.6.25" %?
+ ,nfsd.proc4.write.return
+%)
{}
probe nfsd.proc2.write = kernel.function("nfsd_proc_write")!,
units = "bytes"
}
+%( kernel_v >= "2.6.25" %?
probe nfsd.proc4.write.return = kernel.function("nfsd4_write").return!,
module("nfsd").function("nfsd4_write").return?
{
retstr = sprintf("%s", nfsderror($return))
}
+%)
/*
*probe nfsd.proc.commit
* Fires when client does a commit operation,which is
nfsd.proc4.create
{}
probe nfsd.proc.create.return = nfsd.proc2.create.return,
- nfsd.proc3.create.return,
- nfsd.proc4.create.return
+ nfsd.proc3.create.return
+%( kernel_v >= "2.6.25" %?
+ ,nfsd.proc4.create.return
+%)
{}
probe nfsd.proc2.create = kernel.function("nfsd_proc_create")!,
}
+%( kernel_v >= "2.6.25" %?
probe nfsd.proc4.write.create = kernel.function("nfsd4_create").return!,
module("nfsd").function("nfsd4_create").return?
{
version = 4
retstr = sprintf("%s", nfsderror($return))
}
+%)
/*
*probe nfsd.proc.remove
nfsd.proc4.remove
{}
probe nfsd.proc.remove.return = nfsd.proc2.remove.return,
- nfsd.proc3.remove.return,
- nfsd.proc4.remove.return
+ nfsd.proc3.remove.return
+%( kernel_v >= "2.6.25" %?
+ ,nfsd.proc4.remove.return
+%)
{}
probe nfsd.proc2.remove = kernel.function("nfsd_proc_remove")!,
}
+%( kernel_v >= "2.6.25" %?
probe nfsd.proc4.remove.return = kernel.function("nfsd4_remove").return!,
module("nfsd").function("nfsd4_remove").return?
{
version = 4
retstr = sprintf("%s", nfsderror($return))
}
+%)
/*
* probe nfsd.proc.rename
* Fires when clients rename a file on server side
{}
probe nfsd.proc.rename.return = nfsd.proc2.rename.return,
- nfsd.proc3.rename.return,
- nfsd.proc4.rename.return
+ nfsd.proc3.rename.return
+%( kernel_v >= "2.6.25" %?
+ ,nfsd.proc4.rename.return
+%)
{}
probe nfsd.proc2.rename = kernel.function("nfsd_proc_rename")!,
version = 3
retstr = sprintf("%s", nfsderror($return))
}
-
probe nfsd.proc4.rename = kernel.function("nfsd4_rename") !,
module("nfsd").function("nfsd4_rename") ?
{
kernel_string_n($rename->rn_tname, $rename->rn_tnamelen))
}
+%( kernel_v >= "2.6.25" %?
probe nfsd.proc4.rename.return = kernel.function("nfsd4_rename").return!,
module("nfsd").function("nfsd4_rename").return?
{
version = 4
retstr = sprintf("%s", nfsderror($return))
}
+%)
probe nfsd.entries = nfsd.open,
nfsd.read,
probe nfsd.close = kernel.function("nfsd_close")!,
module("nfsd").function("nfsd_close")?
{
+ client_ip ="N/A"
filename = __file_filename($filp)
name = "nfsd.close"
%( kernel_v >= "2.6.12" %?
file = $file
%)
+%( kernel_v >= "2.6.30" %?
count = p_long($cnt)
+%:
+ count = $cnt
+%)
offset = $offset
vec = $vec
vlen = $vlen
#define nfserr_cb_path_down cpu_to_be32(NFSERR_CB_PATH_DOWN)
#define nfserr_locked cpu_to_be32(NFSERR_LOCKED)
#define nfserr_wrongsec cpu_to_be32(NFSERR_WRONGSEC)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
#define nfserr_badiomode cpu_to_be32(NFS4ERR_BADIOMODE)
#define nfserr_badlayout cpu_to_be32(NFS4ERR_BADLAYOUT)
#define nfserr_bad_session_digest cpu_to_be32(NFS4ERR_BAD_SESSION_DIGEST)
#define nfserr_reject_deleg cpu_to_be32(NFS4ERR_REJECT_DELEG)
#define nfserr_returnconflict cpu_to_be32(NFS4ERR_RETURNCONFLICT)
#define nfserr_deleg_revoked cpu_to_be32(NFS4ERR_DELEG_REVOKED)
+#endif
%}
function nfsderror:string(err:long)
{nfserr_cb_path_down, "NFSERR_CB_PATH_DOWN"},
{nfserr_locked, "NFSERR_LOCKED"},
{nfserr_wrongsec, "NFSERR_WRONGSEC"},
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
{nfserr_badiomode, "NFS4ERR_BADIOMODE"},
{nfserr_badlayout, "NFS4ERR_BADLAYOUT"},
{nfserr_bad_session_digest, "NFS4ERR_BAD_SESSION_DIGEST"},
{nfserr_reject_deleg, "NFS4ERR_REJECT_DELEG"},
{nfserr_returnconflict, "NFS4ERR_RETURNCONFLICT"},
{nfserr_deleg_revoked, "NFS4ERR_DELEG_REVOKED"},
+#endif
};
int i;
int tabsz = (sizeof(nfs_errtbl)/sizeof(nfs_errtbl[0]));