]> git.proxmox.com Git - mirror_zfs.git/commitdiff
zdb -d has false positive warning when feature@large_blocks=disabled
authorDon Brady <don.brady@intel.com>
Thu, 25 Jun 2015 04:05:32 +0000 (22:05 -0600)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 26 Jun 2015 21:10:31 +0000 (14:10 -0700)
Skip large blocks feature refcount checking if feature is disabled.

Signed-off-by: Don Brady <don.brady@intel.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #3468

cmd/zdb/zdb.c

index 8572dae2e922a1864af7f33a5d91edd7d8c7758a..800d49867dea7baa1d2f3e259165f1bcfbb01022 100644 (file)
@@ -22,6 +22,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2015, Intel Corporation.
  */
 
 #include <stdio.h>
@@ -3086,6 +3087,7 @@ dump_zpool(spa_t *spa)
 
        if (dump_opt['d'] || dump_opt['i']) {
                uint64_t refcount;
+
                dump_dir(dp->dp_meta_objset);
                if (dump_opt['d'] >= 3) {
                        dump_full_bpobj(&spa->spa_deferred_bpobj,
@@ -3107,17 +3109,20 @@ dump_zpool(spa_t *spa)
                (void) dmu_objset_find(spa_name(spa), dump_one_dir,
                    NULL, DS_FIND_SNAPSHOTS | DS_FIND_CHILDREN);
 
-               (void) feature_get_refcount(spa,
-                   &spa_feature_table[SPA_FEATURE_LARGE_BLOCKS], &refcount);
-               if (num_large_blocks != refcount) {
-                       (void) printf("large_blocks feature refcount mismatch: "
-                           "expected %lld != actual %lld\n",
-                           (longlong_t)num_large_blocks,
-                           (longlong_t)refcount);
-                       rc = 2;
-               } else {
-                       (void) printf("Verified large_blocks feature refcount "
-                           "is correct (%llu)\n", (longlong_t)refcount);
+               if (feature_get_refcount(spa,
+                   &spa_feature_table[SPA_FEATURE_LARGE_BLOCKS],
+                   &refcount) != ENOTSUP) {
+                       if (num_large_blocks != refcount) {
+                               (void) printf("large_blocks feature refcount "
+                                   "mismatch: expected %lld != actual %lld\n",
+                                   (longlong_t)num_large_blocks,
+                                   (longlong_t)refcount);
+                               rc = 2;
+                       } else {
+                               (void) printf("Verified large_blocks feature "
+                                   "refcount is correct (%llu)\n",
+                                   (longlong_t)refcount);
+                       }
                }
        }
        if (rc == 0 && (dump_opt['b'] || dump_opt['c']))