7277 zdb should be able to print zfs_dbgmsg's

illumos/illumos-gate@29bdd2f916
29bdd2f916

https://www.illumos.org/issues/7277
  ztest always prints the debug messages (zfs_dbgmsg()) by calling
  zfs_dbgmsg_print(). We should add a flag to zdb to make it do this as well
  before exiting.

Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Author: Pavel Zakharov <pavel.zakharov@delphix.com>
This commit is contained in:
Andriy Gapon 2016-08-15 14:24:47 +00:00
parent 4b498e5e9d
commit 9d4cd9e2d9
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/vendor/illumos/dist/; revision=304159
2 changed files with 36 additions and 7 deletions

View file

@ -21,7 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright (c) 2011, 2016 by Delphix. All rights reserved.
* Copyright (c) 2014 Integros [integros.com]
*/
@ -117,7 +117,7 @@ static void
usage(void)
{
(void) fprintf(stderr,
"Usage: %s [-CumMdibcsDvhLXFPA] [-t txg] [-e [-p path...]] "
"Usage: %s [-CumMdibcsDvhLXFPAG] [-t txg] [-e [-p path...]] "
"[-U config] [-I inflight I/Os] [-x dumpdir] poolname [object...]\n"
" %s [-divPA] [-e -p path...] [-U config] dataset "
"[object...]\n"
@ -178,12 +178,23 @@ usage(void)
(void) fprintf(stderr, " -I <number of inflight I/Os> -- "
"specify the maximum number of "
"checksumming I/Os [default is 200]\n");
(void) fprintf(stderr, " -G dump zfs_dbgmsg buffer before "
"exiting\n");
(void) fprintf(stderr, "Specify an option more than once (e.g. -bb) "
"to make only that option verbose\n");
(void) fprintf(stderr, "Default is to dump everything non-verbosely\n");
exit(1);
}
static void
dump_debug_buffer()
{
if (dump_opt['G']) {
(void) printf("\n");
zfs_dbgmsg_print("zdb");
}
}
/*
* Called for usage errors that are discovered after a call to spa_open(),
* dmu_bonus_hold(), or pool_match(). abort() is called for other errors.
@ -200,6 +211,8 @@ fatal(const char *fmt, ...)
va_end(ap);
(void) fprintf(stderr, "\n");
dump_debug_buffer();
exit(1);
}
@ -3076,8 +3089,10 @@ dump_zpool(spa_t *spa)
if (dump_opt['h'])
dump_history(spa);
if (rc != 0)
if (rc != 0) {
dump_debug_buffer();
exit(rc);
}
}
#define ZDB_FLAG_CHECKSUM 0x0001
@ -3547,7 +3562,7 @@ main(int argc, char **argv)
spa_config_path = spa_config_path_env;
while ((c = getopt(argc, argv,
"bcdhilmMI:suCDRSAFLXx:evp:t:U:P")) != -1) {
"bcdhilmMI:suCDRSAFLXx:evp:t:U:PG")) != -1) {
switch (c) {
case 'b':
case 'c':
@ -3563,6 +3578,7 @@ main(int argc, char **argv)
case 'M':
case 'R':
case 'S':
case 'G':
dump_opt[c]++;
dump_all = 0;
break;
@ -3797,6 +3813,8 @@ main(int argc, char **argv)
fuid_table_destroy();
sa_loaded = B_FALSE;
dump_debug_buffer();
libzfs_fini(g_zfs);
kernel_fini();

View file

@ -11,15 +11,15 @@
.\"
.\"
.\" Copyright 2012, Richard Lowe.
.\" Copyright (c) 2012, 2014 by Delphix. All rights reserved.
.\" Copyright (c) 2012, 2016 by Delphix. All rights reserved.
.\"
.TH "ZDB" "1M" "March 6, 2014" "" ""
.TH "ZDB" "1M" "Feb 4, 2016" "" ""
.SH "NAME"
\fBzdb\fR - Display zpool debugging and consistency information
.SH "SYNOPSIS"
\fBzdb\fR [-CumdibcsDvhLMXFPA] [-e [-p \fIpath\fR...]] [-t \fItxg\fR]
\fBzdb\fR [-CumdibcsDvhLMXFPAG] [-e [-p \fIpath\fR...]] [-t \fItxg\fR]
[-U \fIcache\fR] [-I \fIinflight I/Os\fR] [-x \fIdumpdir\fR]
[\fIpoolname\fR [\fIobject\fR ...]]
@ -397,6 +397,17 @@ Attempt to make an unreadable pool readable by trying progressively older
transactions.
.RE
.sp
.ne 2
.na
\fB-G\fR
.ad
.sp .6
.RS 4n
Dump the contents of the zfs_dbgmsg buffer before exiting zdb. zfs_dbgmsg is
a buffer used by ZFS to dump advanced debug information.
.RE
.sp
.ne 2
.na