mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
MFV r303083: 7164 zdb should be able to open the root dataset
Note: conversion of the manual page change from roff to mdoc is mine.
illumos/illumos-gate@b702644a6e
b702644a6e
https://www.illumos.org/issues/7164
If the pool/dataset command-line argument is specified with a trailing
slash, for example, "tank/", we should interpret it as the topmost
dataset (rather than the whole pool)
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author: Tim Chase <tim@chase2k.com>
PR: 204661
MFC after: 1 week
Relnotes: yes
This commit is contained in:
commit
7ad541f1f8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=303086
@ -86,6 +86,17 @@ pool, and is inherently unstable.
|
|||||||
The precise output of most invocations is not documented, a knowledge of ZFS
|
The precise output of most invocations is not documented, a knowledge of ZFS
|
||||||
internals is assumed.
|
internals is assumed.
|
||||||
.Pp
|
.Pp
|
||||||
|
If the
|
||||||
|
.Ar dataset
|
||||||
|
argument does not contain any
|
||||||
|
.Sy /
|
||||||
|
or
|
||||||
|
.Sy @
|
||||||
|
characters, it is interpreted as a pool name.
|
||||||
|
The root dataset can be specified as
|
||||||
|
.Pa pool Ns Sy /
|
||||||
|
(pool name followed by a slash).
|
||||||
|
.Pp
|
||||||
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.
|
||||||
.Sh OPTIONS
|
.Sh OPTIONS
|
||||||
|
@ -3559,6 +3559,7 @@ main(int argc, char **argv)
|
|||||||
uint64_t max_txg = UINT64_MAX;
|
uint64_t max_txg = UINT64_MAX;
|
||||||
int rewind = ZPOOL_NEVER_REWIND;
|
int rewind = ZPOOL_NEVER_REWIND;
|
||||||
char *spa_config_path_env;
|
char *spa_config_path_env;
|
||||||
|
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);
|
||||||
@ -3738,8 +3739,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 (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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user