diff options
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 |