This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 02/02] Backport recently added probes to RHEL5(U5)


commit 35f22bd95cea2fb75573a27282f2a5edea84f2d7
Author: Steve Dickson <steved@redhat.com>
Date:   Thu Mar 4 09:18:47 2010 -0500

    Backport recently added probes to RHEL5(U5)
    
    Ensured the recent additions of v4 probes and supporting
    routines worked or at least don't break with RHEL5 U5 kernel.
    
    Signed-off-by: Steve Dickson <steved@redhat.com>

diff --git a/tapset/nfsd.stp b/tapset/nfsd.stp
index 96fd285..a5dc86b 100644
--- a/tapset/nfsd.stp
+++ b/tapset/nfsd.stp
@@ -12,11 +12,12 @@
 %{
 #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>
 
 %}
 
@@ -186,7 +187,6 @@ probe nfsd.proc.entries = nfsd.proc.lookup,
                           nfsd.proc.read,
                           nfsd.proc.write,
                           nfsd.proc.commit,
-                          nfsd.proc.compound,
                           nfsd.proc.remove,
                           nfsd.proc.rename,
 			              nfsd.proc.create
@@ -195,8 +195,6 @@ probe nfsd.proc.entries = nfsd.proc.lookup,
 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
@@ -214,14 +212,20 @@ probe nfsd.proc.return = nfsd.proc.lookup.return,
 *  filename : file name 
 *  filelen  : the length of file name
 */
-probe nfsd.proc.lookup = nfsd.proc2.lookup,
-                         nfsd.proc3.lookup,
-                         nfsd.proc4.lookup
+probe nfsd.proc.lookup = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.lookup,
+%)
+	nfsd.proc3.lookup,
+	nfsd.proc2.lookup
 {}
 
-probe nfsd.proc.lookup.return = nfsd.proc2.lookup.return,
-                         nfsd.proc3.lookup.return,
-                         nfsd.proc4.lookup.return
+probe nfsd.proc.lookup.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.lookup.return,
+%)
+    nfsd.proc3.lookup.return,
+	nfsd.proc2.lookup.return
 {}
 
 probe nfsd.proc2.lookup = kernel.function("nfsd_proc_lookup") !,
@@ -275,6 +279,7 @@ probe nfsd.proc3.lookup.return = kernel.function("nfsd3_proc_lookup").return !,
 	retstr = sprintf("%s", nfsderror($return))
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.lookup = kernel.function("nfsd4_lookup") !,
                           module("nfsd").function("nfsd4_lookup") ?
 {
@@ -299,6 +304,7 @@ probe nfsd.proc4.lookup.return = kernel.function("nfsd4_lookup").return !,
 	version = 4
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 
 /*
 *probe nfsd.proc.read
@@ -316,14 +322,20 @@ probe nfsd.proc4.lookup.return = kernel.function("nfsd4_lookup").return !,
          and length of each buffer
 *  vlen : read blocks 
 */
-probe nfsd.proc.read = nfsd.proc2.read,
-                       nfsd.proc3.read,
-                       nfsd.proc4.read
+probe nfsd.proc.read = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.read,
+%)
+	nfsd.proc3.read,
+	nfsd.proc2.read
 {}
 
-probe nfsd.proc.read.return = nfsd.proc2.read.return,
-                       nfsd.proc3.read.return,
-                       nfsd.proc4.read.return
+probe nfsd.proc.read.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.read.return,
+%)
+	nfsd.proc3.read.return,
+	nfsd.proc2.read.return
 {}
 
 probe nfsd.proc2.read = kernel.function("nfsd_proc_read")!,
@@ -396,6 +408,7 @@ probe nfsd.proc3.read.return = kernel.function("nfsd3_proc_read").return!,
 	retstr = sprintf("%s", nfsderror($return))
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.read = kernel.function("nfsd4_read") !,
                           module("nfsd").function("nfsd4_read") ?
 {
@@ -424,6 +437,7 @@ probe nfsd.proc4.read.return = kernel.function("nfsd4_read").return!,
 	version = 4
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 
 /*
 *probe nfsd.proc.write
@@ -442,14 +456,20 @@ probe nfsd.proc4.read.return = kernel.function("nfsd4_read").return!,
 *  vlen : read blocks 
 *  stable : argp->stable(only in nfs.proc3.write)
 */
-probe nfsd.proc.write = nfsd.proc2.write,
-                        nfsd.proc3.write,
-                        nfsd.proc4.write
+probe nfsd.proc.write = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.write,
+%)
+	nfsd.proc3.write,
+	nfsd.proc2.write
 {}
 
-probe nfsd.proc.write.return = nfsd.proc2.write.return,
-                       nfsd.proc3.write.return,
-                       nfsd.proc4.write.return
+probe nfsd.proc.write.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.write.return,
+%)
+	nfsd.proc3.write.return,
+	nfsd.proc2.write.return
 {}
 
 probe nfsd.proc2.write = kernel.function("nfsd_proc_write")!,
@@ -492,7 +512,7 @@ probe nfsd.proc3.write = kernel.function("nfsd3_proc_write")!,
 {
 	client_ip =  addr_from_rqst_str($rqstp)
 	proto = $rqstp->rq_prot
-        version = 3
+	version = 3
 	fh = & @cast($argp, "nfsd3_writeargs", "kernel:nfsd")->fh
 
 	count = $argp->count 
@@ -525,6 +545,7 @@ probe nfsd.proc3.write.return = kernel.function("nfsd3_proc_write").return!,
 	stable = $resp->committed
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.write = kernel.function("nfsd4_write") !,
                           module("nfsd").function("nfsd4_write") ?
 {
@@ -556,6 +577,7 @@ probe nfsd.proc4.write.return = kernel.function("nfsd4_write").return!,
 
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 /*
 *probe nfsd.proc.commit
 *  Fires when client does a commit operation,which is
@@ -571,13 +593,19 @@ probe nfsd.proc4.write.return = kernel.function("nfsd4_write").return!,
 *  count : read bytes
 *  offset : the offset of file 
 */
-probe nfsd.proc.commit =  nfsd.proc3.commit
+probe nfsd.proc.commit =  
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.commit,
+%)
+	nfsd.proc3.commit
 {}
 
-probe nfsd.proc.commit.return = nfsd.proc3.commit.return
-{
-
-}
+probe nfsd.proc.commit.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.commit.return,
+%)
+	nfsd.proc3.commit.return
+{}
 
 probe nfsd.proc3.commit = kernel.function("nfsd3_proc_commit")!,
                         module("nfsd").function("nfsd3_proc_commit")?
@@ -607,6 +635,7 @@ probe nfsd.proc3.commit.return = kernel.function("nfsd3_proc_commit").return!,
 	retstr = sprintf("%s", nfsderror($return))
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.commit = kernel.function("nfsd4_commit") !,
                           module("nfsd").function("nfsd4_commit") ?
 {
@@ -624,7 +653,7 @@ probe nfsd.proc4.commit = kernel.function("nfsd4_commit") !,
 	units = "bytes"
 } 
 
-probe nfsd.proc4.write.commit = kernel.function("nfsd4_commit").return!,
+probe nfsd.proc4.commit.return = kernel.function("nfsd4_commit").return!,
                         module("nfsd").function("nfsd4_commit").return?
 {
 	client_ip = addr_from_rqst_str($rqstp)
@@ -633,6 +662,7 @@ probe nfsd.proc4.write.commit = kernel.function("nfsd4_commit").return!,
 	version = 4
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 
 /*
 *probe nfsd.proc.create
@@ -646,13 +676,19 @@ probe nfsd.proc4.write.commit = kernel.function("nfsd4_commit").return!,
 *  filename : file name
 *  filelen : length of file name
 */
-probe nfsd.proc.create = nfsd.proc2.create,
-                         nfsd.proc3.create,
-                         nfsd.proc4.create
+probe nfsd.proc.create = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.create,
+%)
+	nfsd.proc3.create,
+	nfsd.proc2.create
 {}
-probe nfsd.proc.create.return = nfsd.proc2.create.return,
-                                nfsd.proc3.create.return,
-                                nfsd.proc4.create.return
+probe nfsd.proc.create.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.create.return,
+%)
+	nfsd.proc3.create.return,
+	nfsd.proc2.create.return
 {}
 
 probe nfsd.proc2.create = kernel.function("nfsd_proc_create")!,
@@ -660,7 +696,7 @@ probe nfsd.proc2.create = kernel.function("nfsd_proc_create")!,
 {
 	client_ip =  addr_from_rqst_str($rqstp)
 	proto = $rqstp->rq_prot
-        version = 2
+	version = 2
 	fh = & @cast($argp, "struct nfsd_createargs", "kernel:nfsd")->fh
 
 	filelen = $argp->len
@@ -707,6 +743,7 @@ probe nfsd.proc3.create.return =  kernel.function("nfsd3_proc_create").return!,
 	retstr = sprintf("%s", nfsderror($return))
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.create = kernel.function("nfsd4_create") !,
                           module("nfsd").function("nfsd4_create") ?
 {
@@ -725,8 +762,8 @@ probe nfsd.proc4.create = kernel.function("nfsd4_create") !,
 
 } 
 
-probe nfsd.proc4.write.create = kernel.function("nfsd4_create").return!,
-                        module("nfsd").function("nfsd4_create").return?
+probe nfsd.proc4.create.return = kernel.function("nfsd4_create").return !,
+                        module("nfsd").function("nfsd4_create").return ?
 {
 	client_ip = addr_from_rqst_str($rqstp)
 
@@ -734,6 +771,7 @@ probe nfsd.proc4.write.create = kernel.function("nfsd4_create").return!,
 	version = 4
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 
 /*
 *probe nfsd.proc.remove
@@ -747,13 +785,19 @@ probe nfsd.proc4.write.create = kernel.function("nfsd4_create").return!,
 *  filename : file name
 *  filelen : length of file name
 */
-probe nfsd.proc.remove = nfsd.proc2.remove,
-                         nfsd.proc3.remove,
-                         nfsd.proc4.remove
+probe nfsd.proc.remove = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.remove,
+%)
+	nfsd.proc3.remove,
+	nfsd.proc2.remove
 {}
-probe nfsd.proc.remove.return = nfsd.proc2.remove.return,
-                                nfsd.proc3.remove.return,
-                                nfsd.proc4.remove.return
+probe nfsd.proc.remove.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.remove.return,
+%)
+	nfsd.proc3.remove.return,
+	nfsd.proc2.remove.return
 {}
 
 probe nfsd.proc2.remove = kernel.function("nfsd_proc_remove")!,
@@ -806,6 +850,7 @@ probe nfsd.proc3.remove.return =  kernel.function("nfsd3_proc_remove").return!,
 	retstr = sprintf("%s", nfsderror($return))
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.remove = kernel.function("nfsd4_remove") !,
                           module("nfsd").function("nfsd4_remove") ?
 {
@@ -831,6 +876,7 @@ probe nfsd.proc4.remove.return = kernel.function("nfsd4_remove").return!,
 	version = 4
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 /*
 * probe nfsd.proc.rename
 *  Fires when clients rename a file on server side
@@ -844,14 +890,20 @@ probe nfsd.proc4.remove.return = kernel.function("nfsd4_remove").return!,
 *   flen : length of old file name 
 *   tlen : length of new file name
 */
-probe nfsd.proc.rename = nfsd.proc2.rename,
-                         nfsd.proc3.rename,
-                         nfsd.proc4.rename
+probe nfsd.proc.rename = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.rename,
+%)
+	nfsd.proc3.rename,
+	nfsd.proc2.rename
 {}
 
-probe nfsd.proc.rename.return = nfsd.proc2.rename.return,
-                         nfsd.proc3.rename.return,
-                         nfsd.proc4.rename.return
+probe nfsd.proc.rename.return = 
+%( kernel_v >= "2.6.25" %?
+	nfsd.proc4.rename.return,
+%)
+	nfsd.proc3.rename.return,
+	nfsd.proc2.rename.return
 {}
 
 probe nfsd.proc2.rename =  kernel.function("nfsd_proc_rename")!,
@@ -914,6 +966,7 @@ probe nfsd.proc3.rename.return =  kernel.function("nfsd3_proc_rename").return!,
 	retstr = sprintf("%s", nfsderror($return))
 }
 
+%( kernel_v >= "2.6.25" %?
 probe nfsd.proc4.rename = kernel.function("nfsd4_rename") !,
                           module("nfsd").function("nfsd4_rename") ?
 {
@@ -943,6 +996,7 @@ probe nfsd.proc4.rename.return = kernel.function("nfsd4_rename").return!,
 	version = 4
 	retstr = sprintf("%s", nfsderror($return))
 }
+%)
 
 probe nfsd.entries = nfsd.open,
 	                 nfsd.read,
@@ -1007,6 +1061,7 @@ probe nfsd.open.return = kernel.function("nfsd_open").return !,
 probe nfsd.close = kernel.function("nfsd_close")!,
                    module("nfsd").function("nfsd_close")?
 {
+	client_ip ="N/A"
 	filename = __file_filename($filp)
 
 	name = "nfsd.close"
@@ -1084,7 +1139,11 @@ probe nfsd.write = kernel.function("nfsd_write")!,
 %( kernel_v >= "2.6.12" %?
 	file = $file
 %)
+%( kernel_v >= "2.6.30" %?
 	count = p_long($cnt)
+%:
+	count = $cnt
+%)
 	offset = $offset
 	vec = $vec
 	vlen = $vlen
diff --git a/tapset/nfsderrno.stp b/tapset/nfsderrno.stp
index 6ac4cac..5472892 100644
--- a/tapset/nfsderrno.stp
+++ b/tapset/nfsderrno.stp
@@ -73,6 +73,7 @@
 #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)
@@ -111,6 +112,7 @@
 #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) 
@@ -182,6 +184,7 @@ 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"},
@@ -220,6 +223,7 @@ function nfsderror:string(err:long)
 		{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]));
diff --git a/tapset/rpc.stp b/tapset/rpc.stp
index 3e65d0e..d8f2fad 100644
--- a/tapset/rpc.stp
+++ b/tapset/rpc.stp
@@ -996,7 +996,12 @@ function addr_from_rqst_str:string(_rqstp:long)
 	unsigned char *bytes;
 
 	if (rqstp) {
-		if (rqstp->rq_addr.ss_family == AF_INET) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)
+		if (rqstp->rq_addr.ss_family == AF_INET)
+#else
+		if (rqstp->rq_addr.sin_family == AF_INET)
+#endif
+		{
 			addr = (struct sockaddr_in *) &rqstp->rq_addr;
 			bytes = (unsigned char *)&addr->sin_addr.s_addr;
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]