Implement -A (ignore ASSERTs) for zdb

The command line switch -A (ignore ASSERTs) has always been available 
in zdb but was never connected up to the correct global variable.

There are times when you need zdb to ignore asserts and keep dumping 
out whatever information it can get despite the ASSERT(s) failing. 
It was always intended to be part of zdb but was incomplete.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Paul Zuchowski <pzuchowski@datto.com>
Closes #9610
This commit is contained in:
Paul Zuchowski 2019-11-27 13:45:56 -05:00 committed by Brian Behlendorf
parent 9e17e6f254
commit 7c1bf0cf27
2 changed files with 10 additions and 1 deletions

View File

@ -33,11 +33,18 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#ifndef _KERNEL
int aok;
#endif
static inline int static inline int
libspl_assert(const char *buf, const char *file, const char *func, int line) libspl_assert(const char *buf, const char *file, const char *func, int line)
{ {
fprintf(stderr, "%s\n", buf); fprintf(stderr, "%s\n", buf);
fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func); fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func);
if (aok) {
return (0);
}
abort(); abort();
} }
@ -52,6 +59,9 @@ libspl_assertf(const char *file, const char *func, int line, char *format, ...)
fprintf(stderr, "\n"); fprintf(stderr, "\n");
fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func); fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func);
va_end(args); va_end(args);
if (aok) {
return;
}
abort(); abort();
} }

View File

@ -47,7 +47,6 @@
* Emulation of kernel services in userland. * Emulation of kernel services in userland.
*/ */
int aok;
uint64_t physmem; uint64_t physmem;
char hw_serial[HW_HOSTID_LEN]; char hw_serial[HW_HOSTID_LEN];
struct utsname hw_utsname; struct utsname hw_utsname;