Author: avg
Date: Fri Oct  6 08:09:20 2017
New Revision: 324344
URL: https://svnweb.freebsd.org/changeset/base/324344

Log:
  MFV r316864: 6392 zdb: introduce -V for verbatim import
  
  illumos/illumos-gate@dfd5965f7e43b6a630e5ac86708ae76b4f02cc40
  
https://github.com/illumos/illumos-gate/commit/dfd5965f7e43b6a630e5ac86708ae76b4f02cc40
  
  FreeBSD note: the manual page is to be updated separately.
  
  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 <behlendo...@llnl.gov>
    Reviewed by: Matthew Ahrens <mahr...@delphix.com>
  
  Reviewed by: Yuri Pankov <yuri.pan...@gmail.com>
  Reviewed by: Brian Behlendorf <behlendo...@llnl.gov>
  Reviewed by: Matt Ahrens <mahr...@delphix.com>
  Reviewed by: Pavel Zakharov <pavel.zakha...@delphix.com>
  Approved by: Dan McDonald <dan...@omniti.com>
  Author: Richard Yao <r...@gentoo.org>
  
  MFC after:    3 weeks

Modified:
  head/cddl/contrib/opensolaris/cmd/zdb/zdb.c
Directory Properties:
  head/cddl/contrib/opensolaris/   (props changed)
  head/cddl/contrib/opensolaris/cmd/zdb/   (props changed)

Modified: head/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- head/cddl/contrib/opensolaris/cmd/zdb/zdb.c Fri Oct  6 07:52:25 2017        
(r324343)
+++ head/cddl/contrib/opensolaris/cmd/zdb/zdb.c Fri Oct  6 08:09:20 2017        
(r324344)
@@ -121,20 +121,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);
 
@@ -189,6 +190,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 "
@@ -3749,6 +3751,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;
@@ -3768,7 +3771,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':
@@ -3842,6 +3845,9 @@ main(int argc, char **argv)
                case 'v':
                        verbose++;
                        break;
+               case 'V':
+                       flags = ZFS_IMPORT_VERBATIM;
+                       break;
                case 'x':
                        vn_dumpdir = optarg;
                        break;
@@ -3942,11 +3948,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);
                }
        }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to