]> git.proxmox.com Git - mirror_zfs.git/blobdiff - include/sys/zfs_debug.h
Fixes for procfs files backed by linked lists
[mirror_zfs.git] / include / sys / zfs_debug.h
index 7632d7420c14fe11dd773f53907aa37769d01f1b..f3a936ae7ba0d7ad2f102196832684180895d291 100644 (file)
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017 by Delphix. All rights reserved.
  */
 
 #ifndef _SYS_ZFS_DEBUG_H
 #define        _SYS_ZFS_DEBUG_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef TRUE
 #define        TRUE 1
 #endif
 #define        FALSE 0
 #endif
 
-/*
- * ZFS debugging - Always enabled for user space builds.
- */
-#if !defined(ZFS_DEBUG) && !defined(_KERNEL)
-#define        ZFS_DEBUG
-#endif
-
 extern int zfs_flags;
 extern int zfs_recover;
+extern int zfs_free_leak_on_eio;
+extern int zfs_dbgmsg_enable;
 
-#define        ZFS_DEBUG_DPRINTF       (1<<0)
-#define        ZFS_DEBUG_DBUF_VERIFY   (1<<1)
-#define        ZFS_DEBUG_DNODE_VERIFY  (1<<2)
-#define        ZFS_DEBUG_SNAPNAMES     (1<<3)
-#define        ZFS_DEBUG_MODIFY        (1<<4)
-#define        ZFS_DEBUG_SPA           (1<<5)
-#define        ZFS_DEBUG_ZIO_FREE      (1<<6)
-
-/*
- * Always log zfs debug messages to the spl debug subsystem as SS_USER1.
- * When the SPL is configured with debugging enabled these messages will
- * appear in the internal spl debug log, otherwise they are a no-op.
- */
-#if defined(_KERNEL)
+#define        ZFS_DEBUG_DPRINTF               (1 << 0)
+#define        ZFS_DEBUG_DBUF_VERIFY           (1 << 1)
+#define        ZFS_DEBUG_DNODE_VERIFY          (1 << 2)
+#define        ZFS_DEBUG_SNAPNAMES             (1 << 3)
+#define        ZFS_DEBUG_MODIFY                (1 << 4)
+/* 1<<5 was previously used, try not to reuse */
+#define        ZFS_DEBUG_ZIO_FREE              (1 << 6)
+#define        ZFS_DEBUG_HISTOGRAM_VERIFY      (1 << 7)
+#define        ZFS_DEBUG_METASLAB_VERIFY       (1 << 8)
+#define        ZFS_DEBUG_SET_ERROR             (1 << 9)
+#define        ZFS_DEBUG_INDIRECT_REMAP        (1 << 10)
 
-#include <spl-debug.h>
-#define        dprintf(...)                                                   \
-       if (zfs_flags & ZFS_DEBUG_DPRINTF)                             \
-               __SDEBUG(NULL, SS_USER1, SD_DPRINTF, __VA_ARGS__)
+extern void __dprintf(const char *file, const char *func,
+    int line, const char *fmt, ...);
+#define        zfs_dbgmsg(...) \
+       if (zfs_dbgmsg_enable) \
+               __dprintf(__FILE__, __func__, __LINE__, __VA_ARGS__)
 
+#ifdef ZFS_DEBUG
 /*
- * When zfs is running is user space the debugging is always enabled.
- * The messages will be printed using the __dprintf() function and
- * filtered based on the zfs_flags variable.
+ * To enable this:
+ *
+ * $ echo 1 >/sys/module/zfs/parameters/zfs_flags
  */
-#else
-#define dprintf(...)                                                   \
-       if (zfs_flags & ZFS_DEBUG_DPRINTF)                             \
+#define        dprintf(...) \
+       if (zfs_flags & ZFS_DEBUG_DPRINTF) \
                __dprintf(__FILE__, __func__, __LINE__, __VA_ARGS__)
+#else
+#define        dprintf(...) ((void)0)
+#endif /* ZFS_DEBUG */
 
-#endif /* _KERNEL */
+extern void zfs_panic_recover(const char *fmt, ...);
 
-void zfs_panic_recover(const char *fmt, ...);
-#define        zfs_dbgmsg(...) dprintf(__VA_ARGS__)
-void zfs_dbgmsg_init(void);
-void zfs_dbgmsg_fini(void);
+extern void zfs_dbgmsg_init(void);
+extern void zfs_dbgmsg_fini(void);
+
+#ifndef _KERNEL
+extern int dprintf_find_string(const char *string);
+extern void zfs_dbgmsg_print(const char *tag);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* _SYS_ZFS_DEBUG_H */