summaryrefslogtreecommitdiff
path: root/fs/xfs/xfs_message.c
diff options
context:
space:
mode:
authorBrian Foster <bfoster@redhat.com>2017-06-14 21:29:12 -0700
committerDarrick J. Wong <darrick.wong@oracle.com>2017-06-19 08:59:10 -0700
commitccdab3d6e881649f05110d9098fd248d2753aaf3 (patch)
treed684f89dab1b5a2c9579e307e841cd0629b24399 /fs/xfs/xfs_message.c
parente1a4e37cc7b665b6804fba812aca2f4d7402c249 (diff)
xfs: define bug_on_assert debug mode sysfs tunable
In DEBUG mode, assert failures unconditionally trigger a kernel BUG. This is useful in diagnostic situations to panic a system and collect detailed state information at the time of a failure. This can also cause problems in cases where DEBUG mode code is desired but it is preferable not trigger kernel BUGs on assert failure. For example, during development of new code or during certain xfstests tests that intentionally cause corruption and test the kernel for survival (but otherwise may expect to trigger assert failures). To provide additional flexibility, create the <sysfs>/fs/xfs/debug/bug_on_assert tunable to configure assert failure behavior at runtime. This tunable is only available in DEBUG mode and is enabled by default to preserve existing default behavior. When disabled, assert failures in DEBUG mode result in kernel warnings. 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>
Diffstat (limited to 'fs/xfs/xfs_message.c')
-rw-r--r--fs/xfs/xfs_message.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/xfs/xfs_message.c b/fs/xfs/xfs_message.c
index 11792d888e4e..e68bd1050eab 100644
--- a/fs/xfs/xfs_message.c
+++ b/fs/xfs/xfs_message.c
@@ -110,7 +110,10 @@ assfail(char *expr, char *file, int line)
{
xfs_emerg(NULL, "Assertion failed: %s, file: %s, line: %d",
expr, file, line);
- BUG();
+ if (xfs_globals.bug_on_assert)
+ BUG();
+ else
+ WARN_ON(1);
}
void