Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Apr 2017 17:01:01 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r316864 - in vendor/illumos/dist: cmd/zdb man/man1m
Message-ID:  <201704141701.v3EH11qq031914@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avg
Date: Fri Apr 14 17:01:00 2017
New Revision: 316864
URL: https://svnweb.freebsd.org/changeset/base/316864

Log:
  6392 zdb: introduce -V for verbatim import
  
  illumos/illumos-gate@dfd5965f7e43b6a630e5ac86708ae76b4f02cc40
  https://github.com/illumos/illumos-gate/commit/dfd5965f7e43b6a630e5ac86708ae76b4f02cc40
  
  https://www.illumos.org/issues/6392
    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.
    https://github.com/zfsonlinux/zfs/commit/a5778ea2427bd340e3b4f697d9b6e1452bd71909
    Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed by: Matthew Ahrens <mahrens@delphix.com>
  
  Reviewed by: Yuri Pankov <yuri.pankov@gmail.com>
  Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
  Reviewed by: Matt Ahrens <mahrens@delphix.com>
  Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
  Approved by: Dan McDonald <danmcd@omniti.com>
  Author: Richard Yao <ryao@gentoo.org>

Modified:
  vendor/illumos/dist/cmd/zdb/zdb.c
  vendor/illumos/dist/man/man1m/zdb.1m

Modified: vendor/illumos/dist/cmd/zdb/zdb.c
==============================================================================
--- vendor/illumos/dist/cmd/zdb/zdb.c	Fri Apr 14 16:59:53 2017	(r316863)
+++ vendor/illumos/dist/cmd/zdb/zdb.c	Fri Apr 14 17:01:00 2017	(r316864)
@@ -120,20 +120,21 @@ static void
 usage(void)
 {
 	(void) fprintf(stderr,
-	    "Usage:\t%s [-AbcdDFGhiLMPsvX] [-e [-p <path> ...]] "
+	    "Usage:\t%s [-AbcdDFGhiLMPsvX] [-e [-V] [-p <path> ...]] "
 	    "[-I <inflight I/Os>]\n"
 	    "\t\t[-o <var>=<value>]... [-t <txg>] [-U <cache>] [-x <dumpdir>]\n"
 	    "\t\t[<poolname> [<object> ...]]\n"
-	    "\t%s [-AdiPv] [-e [-p <path> ...]] [-U <cache>] <dataset> "
+	    "\t%s [-AdiPv] [-e [-V] [-p <path> ...]] [-U <cache>] <dataset> "
 	    "[<object> ...]\n"
 	    "\t%s -C [-A] [-U <cache>]\n"
 	    "\t%s -l [-Aqu] <device>\n"
-	    "\t%s -m [-AFLPX] [-e [-p <path> ...]] [-t <txg>] [-U <cache>]\n"
-	    "\t\t<poolname> [<vdev> [<metaslab> ...]]\n"
+	    "\t%s -m [-AFLPX] [-e [-V] [-p <path> ...]] [-t <txg>] "
+	    "[-U <cache>]\n\t\t<poolname> [<vdev> [<metaslab> ...]]\n"
 	    "\t%s -O <dataset> <path>\n"
-	    "\t%s -R [-A] [-e [-p <path> ...]] [-U <cache>]\n"
+	    "\t%s -R [-A] [-e [-V] [-p <path> ...]] [-U <cache>]\n"
 	    "\t\t<poolname> <vdev>:<offset>:<size>[:<flags>]\n"
-	    "\t%s -S [-AP] [-e [-p <path> ...]] [-U <cache>] <poolname>\n\n",
+	    "\t%s -S [-AP] [-e [-V] [-p <path> ...]] [-U <cache>] "
+	    "<poolname>\n\n",
 	    cmdname, cmdname, cmdname, cmdname, cmdname, cmdname, cmdname,
 	    cmdname);
 
@@ -188,6 +189,7 @@ usage(void)
 	(void) fprintf(stderr, "        -u uberblock\n");
 	(void) fprintf(stderr, "        -U <cachefile_path> -- use alternate "
 	    "cachefile\n");
+	(void) fprintf(stderr, "        -V do verbatim import\n");
 	(void) fprintf(stderr, "        -x <dumpdir> -- "
 	    "dump all read blocks into specified directory\n");
 	(void) fprintf(stderr, "        -X attempt extreme rewind (does not "
@@ -3707,6 +3709,7 @@ 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;
 	boolean_t target_is_spa = B_TRUE;
@@ -3726,7 +3729,7 @@ main(int argc, char **argv)
 		spa_config_path = spa_config_path_env;
 
 	while ((c = getopt(argc, argv,
-	    "AbcCdDeFGhiI:lLmMo:Op:PqRsSt:uU:vx:X")) != -1) {
+	    "AbcCdDeFGhiI:lLmMo:Op:PqRsSt:uU:vVx:X")) != -1) {
 		switch (c) {
 		case 'b':
 		case 'c':
@@ -3800,6 +3803,9 @@ main(int argc, char **argv)
 		case 'v':
 			verbose++;
 			break;
+		case 'V':
+			flags = ZFS_IMPORT_VERBATIM;
+			break;
 		case 'x':
 			vn_dumpdir = optarg;
 			break;
@@ -3899,11 +3905,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);
 		}
 	}
 

Modified: vendor/illumos/dist/man/man1m/zdb.1m
==============================================================================
--- vendor/illumos/dist/man/man1m/zdb.1m	Fri Apr 14 16:59:53 2017	(r316863)
+++ vendor/illumos/dist/man/man1m/zdb.1m	Fri Apr 14 17:01:00 2017	(r316864)
@@ -22,7 +22,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl AbcdDFGhiLMPsvX
-.Op Fl e Op Fl p Ar path ...
+.Op Fl e Oo Fl V Oc Op Fl p Ar path ...
 .Op Fl I Ar inflight I/Os
 .Oo Fl o Ar var Ns = Ns Ar value Oc Ns ...
 .Op Fl t Ar txg
@@ -31,7 +31,7 @@
 .Op Ar poolname Op Ar object ...
 .Nm
 .Op Fl AdiPv
-.Op Fl e Op Fl p Ar path ...
+.Op Fl e Oo Fl V Oc Op Fl p Ar path ...
 .Op Fl U Ar cache
 .Ar dataset Op Ar object ...
 .Nm
@@ -45,8 +45,8 @@
 .Nm
 .Fl m
 .Op Fl AFLPX
+.Op Fl e Oo Fl V Oc Op Fl p Ar path ...
 .Op Fl t Ar txg
-.Op Fl e Op Fl p Ar path ...
 .Op Fl U Ar cache
 .Ar poolname Op Ar vdev Op Ar metaslab ...
 .Nm
@@ -55,13 +55,13 @@
 .Nm
 .Fl R
 .Op Fl A
-.Op Fl e Op Fl p Ar path ...
+.Op Fl e Oo Fl V Oc Op Fl p Ar path ...
 .Op Fl U Ar cache
 .Ar poolname vdev Ns : Ns Ar offset Ns : Ns Ar size Ns Op : Ns Ar flags
 .Nm
 .Fl S
 .Op Fl AP
-.Op Fl e Op Fl p Ar path ...
+.Op Fl e Oo Fl V Oc Op Fl p Ar path ...
 .Op Fl U Ar cache
 .Ar poolname
 .Sh DESCRIPTION
@@ -316,6 +316,11 @@ Use a cache file other than
 .It Fl v
 Enable verbosity.
 Specify multiple times for increased verbosity.
+.It Fl V
+Attempt verbatim import.
+This mimics the behavior of the kernel when loading a pool from a cachefile.
+Only usable with
+.Fl e .
 .It Fl X
 Attempt
 .Qq extreme



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201704141701.v3EH11qq031914>