commit f73985072571f93684e7742733d8d06b477b02bf
Author: David Smith <dsmith@redhat.com>
Date: Mon Dec 8 14:04:19 2014 -0600
Fix BZ1171823 by updating the __svc_fh() nfsd tapset function.
* tapset/linux/nfsd.stp: Rewrite __svc_fh() in systemtap script language
instead of embedded-C to get around the disappearance of struct svc_fh's
declaration from a public kernel header file.
diff --git a/tapset/linux/nfsd.stp b/tapset/linux/nfsd.stp
index 701a81d..7ec2856 100644
--- a/tapset/linux/nfsd.stp
+++ b/tapset/linux/nfsd.stp
@@ -38,22 +38,23 @@
*15 :nfsd.proc3.rename.tfh
*/
-/*Get file handler from struct svc_fh */
-function __svc_fh:string(fh :long) %{ /* pure */
- struct svc_fh * fhp = (struct svc_fh *) (unsigned long)(STAP_ARG_fh);
- struct knfsd_fh *fh = &fhp->fh_handle;
-
- snprintf(STAP_RETVALUE, MAXSTRINGLEN,
- "%d: %08x %08x %08x %08x %08x %08x",
- kread(&(fh->fh_size)),
- kread(&(fh->fh_base.fh_pad[0])),
- kread(&(fh->fh_base.fh_pad[1])),
- kread(&(fh->fh_base.fh_pad[2])),
- kread(&(fh->fh_base.fh_pad[3])),
- kread(&(fh->fh_base.fh_pad[4])),
- kread(&(fh->fh_base.fh_pad[5])));
- CATCH_DEREF_FAULT();
-%}
+@define __svc_fh_cast(fhp)
+%(
+ @cast(@fhp, "svc_fh", "kernel:nfsd")->fh_handle
+%)
+
+/* Get file handler data from struct svc_fh */
+function __svc_fh:string(fhp:long)
+{
+ return sprintf("%d: %08x %08x %08x %08x %08x %08x",
+ @__svc_fh_cast(fhp)->fh_size,
+ @__svc_fh_cast(fhp)->fh_base->fh_pad[0],
+ @__svc_fh_cast(fhp)->fh_base->fh_pad[1],
+ @__svc_fh_cast(fhp)->fh_base->fh_pad[2],
+ @__svc_fh_cast(fhp)->fh_base->fh_pad[3],
+ @__svc_fh_cast(fhp)->fh_base->fh_pad[4],
+ @__svc_fh_cast(fhp)->fh_base->fh_pad[5])
+}
function nfs3_cmode:string(cmode:long) %{ /* pure */
int cmode = (int)(long)STAP_ARG_cmode;
commit 957812abcb03ad5eb2b544c7fff111b967deb211
Author: David Smith <dsmith@redhat.com>
Date: Mon Dec 8 16:17:06 2014 -0600
BZ117823: Simplify fix using typed-integers.
* tapset/linux/nfsd.stp: Simplify __svc_fh() fix which removes macro.
diff --git a/tapset/linux/nfsd.stp b/tapset/linux/nfsd.stp
index 7ec2856..7aebb9c 100644
--- a/tapset/linux/nfsd.stp
+++ b/tapset/linux/nfsd.stp
@@ -38,22 +38,14 @@
*15 :nfsd.proc3.rename.tfh
*/
-@define __svc_fh_cast(fhp)
-%(
- @cast(@fhp, "svc_fh", "kernel:nfsd")->fh_handle
-%)
-
-/* Get file handler data from struct svc_fh */
+/* Get file handle data from struct svc_fh. */
function __svc_fh:string(fhp:long)
{
- return sprintf("%d: %08x %08x %08x %08x %08x %08x",
- @__svc_fh_cast(fhp)->fh_size,
- @__svc_fh_cast(fhp)->fh_base->fh_pad[0],
- @__svc_fh_cast(fhp)->fh_base->fh_pad[1],
- @__svc_fh_cast(fhp)->fh_base->fh_pad[2],
- @__svc_fh_cast(fhp)->fh_base->fh_pad[3],
- @__svc_fh_cast(fhp)->fh_base->fh_pad[4],
- @__svc_fh_cast(fhp)->fh_base->fh_pad[5])
+ svc_fh = &@cast(fhp, "svc_fh", "kernel:nfsd")->fh_handle
+ return sprintf("%d: %08x %08x %08x %08x %08x %08x", svc_fh->fh_size,
+ svc_fh->fh_base->fh_pad[0], svc_fh->fh_base->fh_pad[1],
+ svc_fh->fh_base->fh_pad[2], svc_fh->fh_base->fh_pad[3],
+ svc_fh->fh_base->fh_pad[4], svc_fh->fh_base->fh_pad[5])
}
function nfs3_cmode:string(cmode:long) %{ /* pure */