aboutsummaryrefslogtreecommitdiffstats
path: root/include/sys/trace_vdev.h
diff options
context:
space:
mode:
authorBrad Lewis <[email protected]>2019-07-08 12:20:53 -0600
committerBrian Behlendorf <[email protected]>2019-07-08 11:20:53 -0700
commitcb709642216b5ac9be10039471c3c4bc27cb7cf2 (patch)
tree9bad20f8aafa6d1a53773ef9758614b6135f4f31 /include/sys/trace_vdev.h
parent1086f54219ebcdebf05b8f6bd10142c43c1f4f3f (diff)
8659 static dtrace probes unavailable on non-GPL modules
ZFS tracing efforts are hampered by the inability to access zfs static probes(probes using DTRACE_PROBE macros). The probes are available via tracepoints for GPL modules only. The build could be modified to generate a function for each unique DTRACE_PROBE invocation. These could be then accessed via kprobes. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Matt Ahrens <[email protected]> Reviewed-by: Richard Elling <[email protected]> Signed-off-by: Brad Lewis <[email protected]> Closes #8659 Closes #8663
Diffstat (limited to 'include/sys/trace_vdev.h')
-rw-r--r--include/sys/trace_vdev.h25
1 files changed, 23 insertions, 2 deletions
diff --git a/include/sys/trace_vdev.h b/include/sys/trace_vdev.h
index d7af44c25..289aca69e 100644
--- a/include/sys/trace_vdev.h
+++ b/include/sys/trace_vdev.h
@@ -19,7 +19,14 @@
* CDDL HEADER END
*/
-#if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS)
+#if defined(_KERNEL)
+#if defined(HAVE_DECLARE_EVENT_CLASS)
+
+/*
+ * If tracepoints are available define dtrace_probe events for vdev
+ * related probes. Definitions in usr/include/trace.h will map
+ * DTRACE_PROBE* calls to tracepoints.
+ */
#undef TRACE_SYSTEM
#define TRACE_SYSTEM zfs
@@ -116,4 +123,18 @@ DEFINE_REMOVE_FREE_EVENT_TXG(zfs_remove__free__inflight);
#define TRACE_INCLUDE_FILE trace_vdev
#include <trace/define_trace.h>
-#endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */
+#else
+
+/*
+ * When tracepoints are not available, a DEFINE_DTRACE_PROBE* macro is
+ * needed for each DTRACE_PROBE. These will be used to generate stub
+ * tracing functions and protoypes for those functions. See
+ * include/sys/trace.h.
+ */
+
+DEFINE_DTRACE_PROBE3(remove__free__synced);
+DEFINE_DTRACE_PROBE3(remove__free__unvisited);
+DEFINE_DTRACE_PROBE4(remove__free__inflight);
+
+#endif /* HAVE_DECLARE_EVENT_CLASS */
+#endif /* _KERNEL */