Zdb should be able to open the root dataset

If the pool/dataset command-line argument is specified with a trailing
slash, for example, "tank/", it is interpreted as the root dataset.

Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #3415
This commit is contained in:
Tim Chase 2015-05-14 12:45:56 -05:00 committed by Brian Behlendorf
parent 79065ed5a4
commit b1b85c8772
2 changed files with 16 additions and 1 deletions

View File

@ -3572,6 +3572,7 @@ main(int argc, char **argv)
int rewind = ZPOOL_NEVER_REWIND; int rewind = ZPOOL_NEVER_REWIND;
char *spa_config_path_env; char *spa_config_path_env;
const char *opts = "bcdhilmMI:suCDRSAFLXevp:t:U:P"; const char *opts = "bcdhilmMI:suCDRSAFLXevp:t:U:P";
boolean_t target_is_spa = B_TRUE;
(void) setrlimit(RLIMIT_NOFILE, &rl); (void) setrlimit(RLIMIT_NOFILE, &rl);
(void) enable_extended_FILE_stdio(-1, -1); (void) enable_extended_FILE_stdio(-1, -1);
@ -3740,8 +3741,17 @@ main(int argc, char **argv)
} }
} }
if (strpbrk(target, "/@") != NULL) {
size_t targetlen;
target_is_spa = B_FALSE;
targetlen = strlen(target);
if (targetlen && target[targetlen - 1] == '/')
target[targetlen - 1] = '\0';
}
if (error == 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, error = spa_open_rewind(target, &spa, FTAG, policy,
NULL); NULL);
if (error) { if (error) {

View File

@ -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 pool, and is inherently unstable. The precise output of most invocations is
not documented, a knowledge of ZFS internals is assumed. 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 .P
When operating on an imported and active pool it is possible, though unlikely, When operating on an imported and active pool it is possible, though unlikely,
that zdb may interpret inconsistent pool data and behave erratically. that zdb may interpret inconsistent pool data and behave erratically.