Skip to content

Commit

Permalink
7277 zdb should be able to print zfs_dbgmsg's
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
pzakha authored and ahrens committed Aug 8, 2016
1 parent 7429414 commit 29bdd2f
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 7 deletions.
26 changes: 22 additions & 4 deletions usr/src/cmd/zdb/zdb.c
Expand Up @@ -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]
*/

Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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.
Expand All @@ -200,6 +211,8 @@ fatal(const char *fmt, ...)
va_end(ap);
(void) fprintf(stderr, "\n");

dump_debug_buffer();

exit(1);
}

Expand Down Expand Up @@ -3079,8 +3092,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
Expand Down Expand Up @@ -3550,7 +3565,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':
Expand All @@ -3566,6 +3581,7 @@ main(int argc, char **argv)
case 'M':
case 'R':
case 'S':
case 'G':
dump_opt[c]++;
dump_all = 0;
break;
Expand Down Expand Up @@ -3800,6 +3816,8 @@ main(int argc, char **argv)
fuid_table_destroy();
sa_loaded = B_FALSE;

dump_debug_buffer();

libzfs_fini(g_zfs);
kernel_fini();

Expand Down
17 changes: 14 additions & 3 deletions usr/src/man/man1m/zdb.1m
Expand Up @@ -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 ...]]

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 29bdd2f

Please sign in to comment.