Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F163323020
D6117.id15641.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D6117.id15641.diff
View Options
Index: kern/kern_shutdown.c
===================================================================
--- kern/kern_shutdown.c
+++ kern/kern_shutdown.c
@@ -56,7 +56,6 @@
#include <sys/kernel.h>
#include <sys/kerneldump.h>
#include <sys/kthread.h>
-#include <sys/ktr.h>
#include <sys/malloc.h>
#include <sys/mount.h>
#include <sys/priv.h>
@@ -556,127 +555,7 @@
/* NOTREACHED */ /* assuming reset worked */
}
-#if defined(WITNESS) || defined(INVARIANTS)
-static int kassert_warn_only = 0;
-#ifdef KDB
-static int kassert_do_kdb = 0;
-#endif
-#ifdef KTR
-static int kassert_do_ktr = 0;
-#endif
-static int kassert_do_log = 1;
-static int kassert_log_pps_limit = 4;
-static int kassert_log_mute_at = 0;
-static int kassert_log_panic_at = 0;
-static int kassert_warnings = 0;
-
-SYSCTL_NODE(_debug, OID_AUTO, kassert, CTLFLAG_RW, NULL, "kassert options");
-
-SYSCTL_INT(_debug_kassert, OID_AUTO, warn_only, CTLFLAG_RWTUN,
- &kassert_warn_only, 0,
- "KASSERT triggers a panic (1) or just a warning (0)");
-
-#ifdef KDB
-SYSCTL_INT(_debug_kassert, OID_AUTO, do_kdb, CTLFLAG_RWTUN,
- &kassert_do_kdb, 0, "KASSERT will enter the debugger");
-#endif
-
-#ifdef KTR
-SYSCTL_UINT(_debug_kassert, OID_AUTO, do_ktr, CTLFLAG_RWTUN,
- &kassert_do_ktr, 0,
- "KASSERT does a KTR, set this to the KTRMASK you want");
-#endif
-
-SYSCTL_INT(_debug_kassert, OID_AUTO, do_log, CTLFLAG_RWTUN,
- &kassert_do_log, 0, "KASSERT triggers a panic (1) or just a warning (0)");
-
-SYSCTL_INT(_debug_kassert, OID_AUTO, warnings, CTLFLAG_RWTUN,
- &kassert_warnings, 0, "number of KASSERTs that have been triggered");
-
-SYSCTL_INT(_debug_kassert, OID_AUTO, log_panic_at, CTLFLAG_RWTUN,
- &kassert_log_panic_at, 0, "max number of KASSERTS before we will panic");
-
-SYSCTL_INT(_debug_kassert, OID_AUTO, log_pps_limit, CTLFLAG_RWTUN,
- &kassert_log_pps_limit, 0, "limit number of log messages per second");
-
-SYSCTL_INT(_debug_kassert, OID_AUTO, log_mute_at, CTLFLAG_RWTUN,
- &kassert_log_mute_at, 0, "max number of KASSERTS to log");
-
-static int kassert_sysctl_kassert(SYSCTL_HANDLER_ARGS);
-
-SYSCTL_PROC(_debug_kassert, OID_AUTO, kassert,
- CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_SECURE, NULL, 0,
- kassert_sysctl_kassert, "I", "set to trigger a test kassert");
-
-static int
-kassert_sysctl_kassert(SYSCTL_HANDLER_ARGS)
-{
- int error, i;
-
- error = sysctl_wire_old_buffer(req, sizeof(int));
- if (error == 0) {
- i = 0;
- error = sysctl_handle_int(oidp, &i, 0, req);
- }
- if (error != 0 || req->newptr == NULL)
- return (error);
- KASSERT(0, ("kassert_sysctl_kassert triggered kassert %d", i));
- return (0);
-}
-
/*
- * Called by KASSERT, this decides if we will panic
- * or if we will log via printf and/or ktr.
- */
-void
-kassert_panic(const char *fmt, ...)
-{
- static char buf[256];
- va_list ap;
-
- va_start(ap, fmt);
- (void)vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
-
- /*
- * panic if we're not just warning, or if we've exceeded
- * kassert_log_panic_at warnings.
- */
- if (!kassert_warn_only ||
- (kassert_log_panic_at > 0 &&
- kassert_warnings >= kassert_log_panic_at)) {
- va_start(ap, fmt);
- vpanic(fmt, ap);
- /* NORETURN */
- }
-#ifdef KTR
- if (kassert_do_ktr)
- CTR0(ktr_mask, buf);
-#endif /* KTR */
- /*
- * log if we've not yet met the mute limit.
- */
- if (kassert_do_log &&
- (kassert_log_mute_at == 0 ||
- kassert_warnings < kassert_log_mute_at)) {
- static struct timeval lasterr;
- static int curerr;
-
- if (ppsratecheck(&lasterr, &curerr, kassert_log_pps_limit)) {
- printf("KASSERT failed: %s\n", buf);
- kdb_backtrace();
- }
- }
-#ifdef KDB
- if (kassert_do_kdb) {
- kdb_enter(KDB_WHY_KASSERT, buf);
- }
-#endif
- atomic_add_int(&kassert_warnings, 1);
-}
-#endif
-
-/*
* Panic is called on unresolvable fatal errors. It prints "panic: mesg",
* and then reboots. If we are called twice, then we avoid trying to sync
* the disks as this often leads to recursive panics.
Index: kern/subr_witness.c
===================================================================
--- kern/subr_witness.c
+++ kern/subr_witness.c
@@ -185,6 +185,8 @@
#define WITNESS_INDEX_ASSERT(i) \
MPASS((i) > 0 && (i) <= w_max_used_index && (i) < witness_count)
+#define kassert_panic panic
+
static MALLOC_DEFINE(M_WITNESS, "Witness", "Witness");
/*
Index: sys/systm.h
===================================================================
--- sys/systm.h
+++ sys/systm.h
@@ -76,19 +76,15 @@
enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN, VM_GUEST_HV,
VM_GUEST_VMWARE, VM_LAST };
-#if defined(WITNESS) || defined(INVARIANTS)
-void kassert_panic(const char *fmt, ...) __printflike(1, 2);
-#endif
-
#ifdef INVARIANTS /* The option is always available */
#define KASSERT(exp,msg) do { \
if (__predict_false(!(exp))) \
- kassert_panic msg; \
+ panic msg; \
} while (0)
#define VNASSERT(exp, vp, msg) do { \
if (__predict_false(!(exp))) { \
vn_printf(vp, "VNASSERT failed\n"); \
- kassert_panic msg; \
+ panic msg; \
} \
} while (0)
#else
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 23, 2:54 AM (3 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35389262
Default Alt Text
D6117.id15641.diff (4 KB)
Attached To
Mode
D6117: Revert r243980 and r244105
Attached
Detach File
Event Timeline
Log In to Comment