zdb: Introduce -V for verbatim import

When given a pool name via -e, zdb would attempt an import. If it
failed, then it would attempt a verbatim import. This behavior is
not always desirable so a -V switch is added to zdb to control the
behavior. When specified, a verbatim import is done. Otherwise,
the behavior is as it was previously, except no verbatim import
is done on failure.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #2372
This commit is contained in:
Richard Yao
2014-06-08 14:10:14 -04:00
committed by Brian Behlendorf
parent 2fbc542ebd
commit a5778ea242
2 changed files with 19 additions and 7 deletions
+7 -6
View File
@@ -3227,8 +3227,10 @@ main(int argc, char **argv)
char *target;
nvlist_t *policy = NULL;
uint64_t max_txg = UINT64_MAX;
int flags = ZFS_IMPORT_MISSING_LOG;
int rewind = ZPOOL_NEVER_REWIND;
char *spa_config_path_env;
const char *opts = "bcdhilmM:suCDRSAFLVXevp:t:U:P";
(void) setrlimit(RLIMIT_NOFILE, &rl);
(void) enable_extended_FILE_stdio(-1, -1);
@@ -3244,7 +3246,7 @@ main(int argc, char **argv)
if (spa_config_path_env != NULL)
spa_config_path = spa_config_path_env;
while ((c = getopt(argc, argv, "bcdhilmM:suCDRSAFLXevp:t:U:P")) != -1) {
while ((c = getopt(argc, argv, opts)) != -1) {
switch (c) {
case 'b':
case 'c':
@@ -3270,6 +3272,9 @@ main(int argc, char **argv)
case 'P':
dump_opt[c]++;
break;
case 'V':
flags = ZFS_IMPORT_VERBATIM;
break;
case 'v':
verbose++;
break;
@@ -3381,11 +3386,7 @@ main(int argc, char **argv)
fatal("can't open '%s': %s",
target, strerror(ENOMEM));
}
if ((error = spa_import(name, cfg, NULL,
ZFS_IMPORT_MISSING_LOG)) != 0) {
error = spa_import(name, cfg, NULL,
ZFS_IMPORT_VERBATIM);
}
error = spa_import(name, cfg, NULL, flags);
}
}