Skip to content

Commit

Permalink
7164 zdb should be able to open the root dataset
Browse files Browse the repository at this point in the history
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
  • Loading branch information
dweeezil authored and ahrens committed Jul 20, 2016
1 parent c39a2aa commit b702644
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 1 deletion.
18 changes: 17 additions & 1 deletion usr/src/cmd/zdb/zdb.c
Original file line number Diff line number Diff line change
Expand Up @@ -3533,6 +3533,7 @@ main(int argc, char **argv)
uint64_t max_txg = UINT64_MAX;
int rewind = ZPOOL_NEVER_REWIND;
char *spa_config_path_env;
boolean_t target_is_spa = B_TRUE;

(void) setrlimit(RLIMIT_NOFILE, &rl);
(void) enable_extended_FILE_stdio(-1, -1);
Expand Down Expand Up @@ -3711,8 +3712,23 @@ main(int argc, char **argv)
}
}

if (strpbrk(target, "/@") != NULL) {
size_t targetlen;

target_is_spa = B_FALSE;
/*
* Remove any trailing slash. Later code would get confused
* by it, but we want to allow it so that "pool/" can
* indicate that we want to dump the topmost filesystem,
* rather than the whole pool.
*/
targetlen = strlen(target);
if (targetlen != 0 && target[targetlen - 1] == '/')
target[targetlen - 1] = '\0';
}

if (error == 0) {
if (strpbrk(target, "/@") == NULL || dump_opt['R']) {
if (target_is_spa || dump_opt['R']) {
error = spa_open_rewind(target, &spa, FTAG, policy,
NULL);
if (error) {
Expand Down
5 changes: 5 additions & 0 deletions usr/src/man/man1m/zdb.1m
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ The output of this command in general reflects the on-disk structure of a ZFS
pool, and is inherently unstable. The precise output of most invocations is
not documented, a knowledge of ZFS internals is assumed.

.P
If the \fIdataset\fR argument does not contain any \fB/\fR or \fB@\fR
characters, it is interpreted as a pool name. The root dataset can be
specified as \fIpool\fB/\fR (pool name followed by a slash).

.P
When operating on an imported and active pool it is possible, though unlikely,
that zdb may interpret inconsistent pool data and behave erratically.
Expand Down

0 comments on commit b702644

Please sign in to comment.