aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/os/linux/spl/sys/Makefile.am1
-rw-r--r--include/os/linux/spl/sys/trace.h17
-rw-r--r--include/os/linux/spl/sys/trace_spl.h27
-rw-r--r--include/os/linux/zfs/sys/Makefile.am2
-rw-r--r--include/os/linux/zfs/sys/trace_dbgmsg.h22
-rw-r--r--include/os/linux/zfs/sys/trace_zfs.h (renamed from include/os/linux/zfs/sys/trace_defs.h)1
-rw-r--r--include/sys/zfs_context.h2
-rw-r--r--lib/libspl/include/sys/Makefile.am3
-rw-r--r--lib/libspl/include/sys/trace_spl.h24
-rw-r--r--lib/libspl/include/sys/trace_zfs.h (renamed from lib/libspl/include/sys/trace_defs.h)0
-rw-r--r--module/os/linux/spl/Makefile.in1
-rw-r--r--module/os/linux/spl/spl-trace.c30
-rw-r--r--module/os/linux/zfs/arc_os.c2
-rw-r--r--module/os/linux/zfs/trace.c1
-rw-r--r--module/os/linux/zfs/zfs_debug.c1
-rw-r--r--module/os/linux/zfs/zio_os.c2
-rw-r--r--module/zfs/arc.c2
-rw-r--r--module/zfs/dbuf.c2
-rw-r--r--module/zfs/dmu.c2
-rw-r--r--module/zfs/dmu_tx.c2
-rw-r--r--module/zfs/dnode.c2
-rw-r--r--module/zfs/dsl_pool.c2
-rw-r--r--module/zfs/multilist.c2
-rw-r--r--module/zfs/rrwlock.c2
-rw-r--r--module/zfs/txg.c2
-rw-r--r--module/zfs/vdev_removal.c2
-rw-r--r--module/zfs/zil.c2
-rw-r--r--module/zfs/zio.c2
-rw-r--r--module/zfs/zrlock.c2
29 files changed, 123 insertions, 39 deletions
diff --git a/include/os/linux/spl/sys/Makefile.am b/include/os/linux/spl/sys/Makefile.am
index 7e7d95dc0..251542118 100644
--- a/include/os/linux/spl/sys/Makefile.am
+++ b/include/os/linux/spl/sys/Makefile.am
@@ -45,6 +45,7 @@ KERNEL_H = \
$(top_srcdir)/include/os/linux/spl/sys/time.h \
$(top_srcdir)/include/os/linux/spl/sys/timer.h \
$(top_srcdir)/include/os/linux/spl/sys/trace.h \
+ $(top_srcdir)/include/os/linux/spl/sys/trace_spl.h \
$(top_srcdir)/include/os/linux/spl/sys/tsd.h \
$(top_srcdir)/include/os/linux/spl/sys/types32.h \
$(top_srcdir)/include/os/linux/spl/sys/types.h \
diff --git a/include/os/linux/spl/sys/trace.h b/include/os/linux/spl/sys/trace.h
index e2cd634b4..df859cf2f 100644
--- a/include/os/linux/spl/sys/trace.h
+++ b/include/os/linux/spl/sys/trace.h
@@ -59,14 +59,6 @@
#include <sys/types.h>
/*
- * The sys/trace_dbgmsg.h header defines tracepoint events for
- * dprintf(), dbgmsg(), and SET_ERROR().
- */
-#define _SYS_TRACE_DBGMSG_INDIRECT
-#include <sys/trace_dbgmsg.h>
-#undef _SYS_TRACE_DBGMSG_INDIRECT
-
-/*
* DTRACE_PROBE with 0 arguments is not currently available with
* tracepoint events
*/
@@ -174,14 +166,5 @@ EXPORT_SYMBOL(trace_zfs_##name)
#define DEFINE_DTRACE_PROBE4(name) PROTO_DTRACE_PROBE4(name)
#endif /* CREATE_TRACE_POINTS */
-
-/*
- * The sys/trace_dbgmsg.h header defines tracepoint events for
- * dprintf(), dbgmsg(), and SET_ERROR().
- */
-#define _SYS_TRACE_DBGMSG_INDIRECT
-#include <sys/trace_dbgmsg.h>
-#undef _SYS_TRACE_DBGMSG_INDIRECT
-
#endif /* HAVE_DECLARE_EVENT_CLASS */
#endif /* _KERNEL */
diff --git a/include/os/linux/spl/sys/trace_spl.h b/include/os/linux/spl/sys/trace_spl.h
new file mode 100644
index 000000000..6b50d546b
--- /dev/null
+++ b/include/os/linux/spl/sys/trace_spl.h
@@ -0,0 +1,27 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+#ifndef _OS_LINUX_SPL_TRACE_H
+#define _OS_LINUX_SPL_TRACE_H
+
+#include <sys/trace.h>
+
+#endif
diff --git a/include/os/linux/zfs/sys/Makefile.am b/include/os/linux/zfs/sys/Makefile.am
index ca8d83e26..e061c5ab1 100644
--- a/include/os/linux/zfs/sys/Makefile.am
+++ b/include/os/linux/zfs/sys/Makefile.am
@@ -4,7 +4,7 @@ KERNEL_H = \
$(top_srcdir)/include/os/linux/zfs/sys/trace_acl.h \
$(top_srcdir)/include/os/linux/zfs/sys/trace_arc.h \
$(top_srcdir)/include/os/linux/zfs/sys/trace_common.h \
- $(top_srcdir)/include/os/linux/zfs/sys/trace_defs.h \
+ $(top_srcdir)/include/os/linux/zfs/sys/trace_zfs.h \
$(top_srcdir)/include/os/linux/zfs/sys/trace_dbgmsg.h \
$(top_srcdir)/include/os/linux/zfs/sys/trace_dbuf.h \
$(top_srcdir)/include/os/linux/zfs/sys/trace_dmu.h \
diff --git a/include/os/linux/zfs/sys/trace_dbgmsg.h b/include/os/linux/zfs/sys/trace_dbgmsg.h
index b2ef529ed..513918d00 100644
--- a/include/os/linux/zfs/sys/trace_dbgmsg.h
+++ b/include/os/linux/zfs/sys/trace_dbgmsg.h
@@ -22,10 +22,16 @@
#if defined(_KERNEL)
#if defined(HAVE_DECLARE_EVENT_CLASS)
-/* Do not include this file directly. Please use <sys/trace.h> instead. */
-#ifndef _SYS_TRACE_DBGMSG_INDIRECT
-#error "trace_dbgmsg.h included directly"
-#endif
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM zfs
+
+#undef TRACE_SYSTEM_VAR
+#define TRACE_SYSTEM_VAR zfs_dbgmsg
+
+#if !defined(_TRACE_DBGMSG_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_DBGMSG_H
+
+#include <linux/tracepoint.h>
/*
* This file defines tracepoint events for use by the dbgmsg(),
@@ -67,6 +73,14 @@ DEFINE_EVENT(zfs_dprintf_class, name, \
/* END CSTYLED */
DEFINE_DPRINTF_EVENT(zfs_zfs__dprintf);
+#endif /* _TRACE_DBGMSG_H */
+
+#undef TRACE_INCLUDE_PATH
+#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_PATH sys
+#define TRACE_INCLUDE_FILE trace_dbgmsg
+#include <trace/define_trace.h>
+
#else
DEFINE_DTRACE_PROBE1(zfs__dprintf);
diff --git a/include/os/linux/zfs/sys/trace_defs.h b/include/os/linux/zfs/sys/trace_zfs.h
index aaff65fbc..0e19f8d18 100644
--- a/include/os/linux/zfs/sys/trace_defs.h
+++ b/include/os/linux/zfs/sys/trace_zfs.h
@@ -38,6 +38,7 @@
#include <sys/trace.h>
#include <sys/trace_acl.h>
#include <sys/trace_arc.h>
+#include <sys/trace_dbgmsg.h>
#include <sys/trace_dbuf.h>
#include <sys/trace_dmu.h>
#include <sys/trace_dnode.h>
diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h
index 8b31bbc08..59846b1c8 100644
--- a/include/sys/zfs_context.h
+++ b/include/sys/zfs_context.h
@@ -116,7 +116,7 @@
#include <sys/sunddi.h>
#include <sys/debug.h>
#include <sys/utsname.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
/*
* Stack
diff --git a/lib/libspl/include/sys/Makefile.am b/lib/libspl/include/sys/Makefile.am
index d84ed1ec4..a83fc025e 100644
--- a/lib/libspl/include/sys/Makefile.am
+++ b/lib/libspl/include/sys/Makefile.am
@@ -35,7 +35,8 @@ libspl_HEADERS = \
$(top_srcdir)/lib/libspl/include/sys/sunddi.h \
$(top_srcdir)/lib/libspl/include/sys/systeminfo.h \
$(top_srcdir)/lib/libspl/include/sys/time.h \
- $(top_srcdir)/lib/libspl/include/sys/trace_defs.h \
+ $(top_srcdir)/lib/libspl/include/sys/trace_spl.h \
+ $(top_srcdir)/lib/libspl/include/sys/trace_zfs.h \
$(top_srcdir)/lib/libspl/include/sys/types32.h \
$(top_srcdir)/lib/libspl/include/sys/types.h \
$(top_srcdir)/lib/libspl/include/sys/tzfile.h \
diff --git a/lib/libspl/include/sys/trace_spl.h b/lib/libspl/include/sys/trace_spl.h
new file mode 100644
index 000000000..b80d288f7
--- /dev/null
+++ b/lib/libspl/include/sys/trace_spl.h
@@ -0,0 +1,24 @@
+/* Here to keep the libspl build happy */
+
+#ifndef _LIBSPL_SPL_TRACE_H
+#define _LIBSPL_SPL_TRACE_H
+
+/*
+ * The set-error SDT probe is extra static, in that we declare its fake
+ * function literally, rather than with the DTRACE_PROBE1() macro. This is
+ * necessary so that SET_ERROR() can evaluate to a value, which wouldn't
+ * be possible if it required multiple statements (to declare the function
+ * and then call it).
+ *
+ * SET_ERROR() uses the comma operator so that it can be used without much
+ * additional code. For example, "return (EINVAL);" becomes
+ * "return (SET_ERROR(EINVAL));". Note that the argument will be evaluated
+ * twice, so it should not have side effects (e.g. something like:
+ * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice).
+ */
+#undef SET_ERROR
+#define SET_ERROR(err) \
+ (__set_error(__FILE__, __func__, __LINE__, err), err)
+
+
+#endif
diff --git a/lib/libspl/include/sys/trace_defs.h b/lib/libspl/include/sys/trace_zfs.h
index 87ed5ad3c..87ed5ad3c 100644
--- a/lib/libspl/include/sys/trace_defs.h
+++ b/lib/libspl/include/sys/trace_zfs.h
diff --git a/module/os/linux/spl/Makefile.in b/module/os/linux/spl/Makefile.in
index a29c36a2a..94804bfed 100644
--- a/module/os/linux/spl/Makefile.in
+++ b/module/os/linux/spl/Makefile.in
@@ -11,6 +11,7 @@ $(MODULE)-objs += ../os/linux/spl/spl-proc.o
$(MODULE)-objs += ../os/linux/spl/spl-procfs-list.o
$(MODULE)-objs += ../os/linux/spl/spl-taskq.o
$(MODULE)-objs += ../os/linux/spl/spl-thread.o
+$(MODULE)-objs += ../os/linux/spl/spl-trace.o
$(MODULE)-objs += ../os/linux/spl/spl-tsd.o
$(MODULE)-objs += ../os/linux/spl/spl-vmem.o
$(MODULE)-objs += ../os/linux/spl/spl-vnode.o
diff --git a/module/os/linux/spl/spl-trace.c b/module/os/linux/spl/spl-trace.c
new file mode 100644
index 000000000..6415f9a91
--- /dev/null
+++ b/module/os/linux/spl/spl-trace.c
@@ -0,0 +1,30 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Each DTRACE_PROBE must define its trace point in one (and only one)
+ * source file, so this dummy file exists for that purpose.
+ */
+
+#ifdef _KERNEL
+#define CREATE_TRACE_POINTS
+#include <sys/trace.h>
+#endif
diff --git a/module/os/linux/zfs/arc_os.c b/module/os/linux/zfs/arc_os.c
index c9db31096..1e0cabd0a 100644
--- a/module/os/linux/zfs/arc_os.c
+++ b/module/os/linux/zfs/arc_os.c
@@ -54,7 +54,7 @@
#include <sys/zthr.h>
#include <zfs_fletcher.h>
#include <sys/arc_impl.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/aggsum.h>
int64_t last_free_memory;
diff --git a/module/os/linux/zfs/trace.c b/module/os/linux/zfs/trace.c
index 7b2f981ee..a690822ae 100644
--- a/module/os/linux/zfs/trace.c
+++ b/module/os/linux/zfs/trace.c
@@ -41,6 +41,7 @@
#include <sys/trace.h>
#include <sys/trace_acl.h>
#include <sys/trace_arc.h>
+#include <sys/trace_dbgmsg.h>
#include <sys/trace_dbuf.h>
#include <sys/trace_dmu.h>
#include <sys/trace_dnode.h>
diff --git a/module/os/linux/zfs/zfs_debug.c b/module/os/linux/zfs/zfs_debug.c
index 538533d27..a64971d0a 100644
--- a/module/os/linux/zfs/zfs_debug.c
+++ b/module/os/linux/zfs/zfs_debug.c
@@ -24,6 +24,7 @@
*/
#include <sys/zfs_context.h>
+#include <sys/trace_zfs.h>
typedef struct zfs_dbgmsg {
procfs_list_node_t zdm_node;
diff --git a/module/os/linux/zfs/zio_os.c b/module/os/linux/zfs/zio_os.c
index 207484c4d..533e0cb45 100644
--- a/module/os/linux/zfs/zio_os.c
+++ b/module/os/linux/zfs/zio_os.c
@@ -29,7 +29,7 @@
#include <sys/zio.h>
#include <sys/zio_impl.h>
#include <sys/time.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
void
zio_delay_interrupt(zio_t *zio)
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index 45211bc5c..6ed2a220d 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -297,7 +297,7 @@
#include <sys/zthr.h>
#include <zfs_fletcher.h>
#include <sys/arc_impl.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/aggsum.h>
#include <sys/cityhash.h>
diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c
index bf8b48d25..9c1132cfb 100644
--- a/module/zfs/dbuf.c
+++ b/module/zfs/dbuf.c
@@ -44,7 +44,7 @@
#include <sys/zfeature.h>
#include <sys/blkptr.h>
#include <sys/range_tree.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/callb.h>
#include <sys/abd.h>
#include <sys/vdev.h>
diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c
index 78c673433..f34429eee 100644
--- a/module/zfs/dmu.c
+++ b/module/zfs/dmu.c
@@ -49,7 +49,7 @@
#include <sys/sa.h>
#include <sys/zfeature.h>
#include <sys/abd.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/zfs_rlock.h>
#ifdef _KERNEL
#include <sys/vmsystm.h>
diff --git a/module/zfs/dmu_tx.c b/module/zfs/dmu_tx.c
index 66dbb583a..958ae1dc7 100644
--- a/module/zfs/dmu_tx.c
+++ b/module/zfs/dmu_tx.c
@@ -37,7 +37,7 @@
#include <sys/sa.h>
#include <sys/sa_impl.h>
#include <sys/zfs_context.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
typedef void (*dmu_tx_hold_func_t)(dmu_tx_t *tx, struct dnode *dn,
uint64_t arg1, uint64_t arg2);
diff --git a/module/zfs/dnode.c b/module/zfs/dnode.c
index f03e88eb9..343aadbed 100644
--- a/module/zfs/dnode.c
+++ b/module/zfs/dnode.c
@@ -37,7 +37,7 @@
#include <sys/zio.h>
#include <sys/dmu_zfetch.h>
#include <sys/range_tree.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/zfs_project.h>
dnode_stats_t dnode_stats = {
diff --git a/module/zfs/dsl_pool.c b/module/zfs/dsl_pool.c
index 59104e6d1..4083abb7e 100644
--- a/module/zfs/dsl_pool.c
+++ b/module/zfs/dsl_pool.c
@@ -48,7 +48,7 @@
#include <sys/zfeature.h>
#include <sys/zil_impl.h>
#include <sys/dsl_userhold.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/mmp.h>
/*
diff --git a/module/zfs/multilist.c b/module/zfs/multilist.c
index 73cf8cbbc..27b17c8f3 100644
--- a/module/zfs/multilist.c
+++ b/module/zfs/multilist.c
@@ -18,7 +18,7 @@
#include <sys/zfs_context.h>
#include <sys/multilist.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
/* needed for spa_get_random() */
#include <sys/spa.h>
diff --git a/module/zfs/rrwlock.c b/module/zfs/rrwlock.c
index c48a5d3ed..c6d358b34 100644
--- a/module/zfs/rrwlock.c
+++ b/module/zfs/rrwlock.c
@@ -28,7 +28,7 @@
#include <sys/refcount.h>
#include <sys/rrwlock.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
/*
* This file contains the implementation of a re-entrant read
diff --git a/module/zfs/txg.c b/module/zfs/txg.c
index ae96f5ec0..e972bcc25 100644
--- a/module/zfs/txg.c
+++ b/module/zfs/txg.c
@@ -33,7 +33,7 @@
#include <sys/dsl_scan.h>
#include <sys/zil.h>
#include <sys/callb.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
/*
* ZFS Transaction Groups
diff --git a/module/zfs/vdev_removal.c b/module/zfs/vdev_removal.c
index a4fac1cc5..8089571e1 100644
--- a/module/zfs/vdev_removal.c
+++ b/module/zfs/vdev_removal.c
@@ -47,7 +47,7 @@
#include <sys/abd.h>
#include <sys/vdev_initialize.h>
#include <sys/vdev_trim.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
/*
* This file contains the necessary logic to remove vdevs from a
diff --git a/module/zfs/zil.c b/module/zfs/zil.c
index 0a62ace14..6ca0bc73e 100644
--- a/module/zfs/zil.c
+++ b/module/zfs/zil.c
@@ -41,7 +41,7 @@
#include <sys/dmu_tx.h>
#include <sys/dsl_pool.h>
#include <sys/metaslab.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/abd.h>
/*
diff --git a/module/zfs/zio.c b/module/zfs/zio.c
index 092262590..1ac2f52bb 100644
--- a/module/zfs/zio.c
+++ b/module/zfs/zio.c
@@ -44,7 +44,7 @@
#include <sys/dsl_scan.h>
#include <sys/metaslab_impl.h>
#include <sys/time.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
#include <sys/abd.h>
#include <sys/dsl_crypt.h>
#include <sys/cityhash.h>
diff --git a/module/zfs/zrlock.c b/module/zfs/zrlock.c
index fe9044f2c..6deb25648 100644
--- a/module/zfs/zrlock.c
+++ b/module/zfs/zrlock.c
@@ -39,7 +39,7 @@
* function calls.
*/
#include <sys/zrlock.h>
-#include <sys/trace_defs.h>
+#include <sys/trace_zfs.h>
/*
* A ZRL can be locked only while there are zero references, so ZRL_LOCKED is