xfs: define fatal assert build time tunable
authorBrian Foster <bfoster@redhat.com>
Thu, 15 Jun 2017 04:29:13 +0000 (21:29 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 19 Jun 2017 15:59:10 +0000 (08:59 -0700)
While configurable at runtime, the DEBUG mode assert failure
behavior is usually either desired or not for a particular
situation. For example, developers using kernel modules may prefer
for fatal asserts to remain disabled across module reloads while QE
engineers doing broad regression testing may prefer to have fatal
asserts enabled on boot to facilitate data collection for bug
reports.

To provide a compromise/convenience for developers, create a Kconfig
option that sets the default value of the DEBUG mode 'bug_on_assert'
sysfs tunable. The default behavior remains to trigger kernel BUGs
on assert failures to preserve existing behavior across kernel
configuration updates with DEBUG mode enabled.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/Kconfig
fs/xfs/xfs.h
fs/xfs/xfs_globals.c

index 35faf128f36d8d3c8b0ac3e279bd2b59029ec856..1b98cfa342ab38bf6093ffe4c42e26fa201c69c3 100644 (file)
@@ -96,3 +96,16 @@ config XFS_DEBUG
          not useful unless you are debugging a particular problem.
 
          Say N unless you are an XFS developer, or you play one on TV.
+
+config XFS_ASSERT_FATAL
+       bool "XFS fatal asserts"
+       default y
+       depends on XFS_FS && XFS_DEBUG
+       help
+         Set the default DEBUG mode ASSERT failure behavior.
+
+         Say Y here to cause DEBUG mode ASSERT failures to result in fatal
+         errors that BUG() the kernel by default. If you say N, ASSERT failures
+         result in warnings.
+
+         This behavior can be modified at runtime via sysfs.
index a742c47f7d5a00cc7bd38cd80a153eea3d4ffa7e..80cd0fd867832b3486b1de0bbb0c4e8de9ed3e9c 100644 (file)
 #define XFS_BUF_LOCK_TRACKING 1
 #endif
 
+#ifdef CONFIG_XFS_ASSERT_FATAL
+#define XFS_ASSERT_FATAL 1
+#endif
+
 #ifdef CONFIG_XFS_WARN
 #define XFS_WARN 1
 #endif
index 673adf0a40ccf5851a95572cbaf30fc7d3a32b51..3e1cc3001bcbfebb050c6556786747ef7f13cfdd 100644 (file)
@@ -47,6 +47,9 @@ xfs_param_t xfs_params = {
 
 struct xfs_globals xfs_globals = {
        .log_recovery_delay     =       0,      /* no delay by default */
-       .bug_on_assert          =       true,   /* historical default in DEBUG
-                                                * mode */
+#ifdef XFS_ASSERT_FATAL
+       .bug_on_assert          =       true,   /* assert failures BUG() */
+#else
+       .bug_on_assert          =       false,  /* assert failures WARN() */
+#endif
 };