diff options
author | Brad Lewis <[email protected]> | 2019-07-08 12:20:53 -0600 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-07-08 11:20:53 -0700 |
commit | cb709642216b5ac9be10039471c3c4bc27cb7cf2 (patch) | |
tree | 9bad20f8aafa6d1a53773ef9758614b6135f4f31 /include/sys/trace_vdev.h | |
parent | 1086f54219ebcdebf05b8f6bd10142c43c1f4f3f (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.h | 25 |
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 */ |