Print this page
2619 asynchronous destruction of ZFS file systems
2747 SPA versioning with zfs feature flags
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <gwilson@delphix.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Reviewed by: Dan Kruchinin <dan.kruchinin@gmail.com>
Approved by: Dan McDonald <danmcd@nexenta.com>
        
*** 19,28 ****
--- 19,29 ----
   * CDDL HEADER END
   */
  /*
   * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
   * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+  * Copyright (c) 2012 by Delphix. All rights reserved.
   */
  
  /* Portions Copyright 2010 Robert Milkowski */
  
  #include <mdb/mdb_ctf.h>
*** 1235,1244 ****
--- 1236,1248 ----
                          aux = "VERS_NEWER";
                          break;
                  case VDEV_AUX_VERSION_OLDER:
                          aux = "VERS_OLDER";
                          break;
+                 case VDEV_AUX_UNSUP_FEAT:
+                         aux = "UNSUP_FEAT";
+                         break;
                  case VDEV_AUX_SPARED:
                          aux = "SPARED";
                          break;
                  case VDEV_AUX_ERR_EXCEEDED:
                          aux = "ERR_EXCEEDED";
*** 2180,2190 ****
                  mdb_warn("failed to read data at %p;", addr);
                  mdb_printf("maybe no stats? run \"zpool scrub\" first.");
                  return (DCMD_ERR);
          }
  
!         tzb = &stats.zab_type[DN_MAX_LEVELS][DMU_OT_NUMTYPES];
          if (tzb->zb_gangs != 0) {
                  mdb_printf("Ganged blocks: %llu\n",
                      (longlong_t)tzb->zb_gangs);
          }
  
--- 2184,2194 ----
                  mdb_warn("failed to read data at %p;", addr);
                  mdb_printf("maybe no stats? run \"zpool scrub\" first.");
                  return (DCMD_ERR);
          }
  
!         tzb = &stats.zab_type[DN_MAX_LEVELS][DMU_OT_TOTAL];
          if (tzb->zb_gangs != 0) {
                  mdb_printf("Ganged blocks: %llu\n",
                      (longlong_t)tzb->zb_gangs);
          }
  
*** 2196,2206 ****
          }
  
          mdb_printf("\nBlocks\tLSIZE\tPSIZE\tASIZE"
              "\t  avg\t comp\t%%Total\tType\n");
  
!         for (t = 0; t <= DMU_OT_NUMTYPES; t++) {
                  char csize[NICENUM_BUFLEN], lsize[NICENUM_BUFLEN];
                  char psize[NICENUM_BUFLEN], asize[NICENUM_BUFLEN];
                  char avg[NICENUM_BUFLEN];
                  char comp[NICENUM_BUFLEN], pct[NICENUM_BUFLEN];
                  char typename[64];
--- 2200,2210 ----
          }
  
          mdb_printf("\nBlocks\tLSIZE\tPSIZE\tASIZE"
              "\t  avg\t comp\t%%Total\tType\n");
  
!         for (t = 0; t <= DMU_OT_TOTAL; t++) {
                  char csize[NICENUM_BUFLEN], lsize[NICENUM_BUFLEN];
                  char psize[NICENUM_BUFLEN], asize[NICENUM_BUFLEN];
                  char avg[NICENUM_BUFLEN];
                  char comp[NICENUM_BUFLEN], pct[NICENUM_BUFLEN];
                  char typename[64];
*** 2207,2216 ****
--- 2211,2222 ----
                  int l;
  
  
                  if (t == DMU_OT_DEFERRED)
                          strcpy(typename, "deferred free");
+                 else if (t == DMU_OT_OTHER)
+                         strcpy(typename, "other");
                  else if (t == DMU_OT_TOTAL)
                          strcpy(typename, "Total");
                  else if (mdb_readstr(typename, sizeof (typename),
                      (uintptr_t)dmu_ot[t].ot_name) == -1) {
                          mdb_warn("failed to read type name");