Print this page
3956 ::vdev -r should work with pipelines
3957 ztest should update the cachefile before killing itself
3958 multiple scans can lead to partial resilvering
3959 ddt entries are not always resilvered
3960 dsl_scan can skip over dedup-ed blocks if physical birth != logical birth
3961 freed gang blocks are not resilvered and can cause pool to suspend
3962 ztest should print out zfs debug buffer before exiting
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Adam Leventhal <ahl@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/zfs_debug.c
          +++ new/usr/src/uts/common/fs/zfs/zfs_debug.c
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
  23      - * Copyright (c) 2012 by Delphix. All rights reserved.
       23 + * Copyright (c) 2013 by Delphix. All rights reserved.
  24   24   */
  25   25  
  26   26  #include <sys/zfs_context.h>
  27   27  
  28   28  list_t zfs_dbgmsgs;
  29   29  int zfs_dbgmsg_size;
  30   30  kmutex_t zfs_dbgmsgs_lock;
  31   31  int zfs_dbgmsg_maxsize = 1<<20; /* 1MB */
  32   32  
  33   33  void
↓ open down ↓ 53 lines elided ↑ open up ↑
  87   87          list_insert_tail(&zfs_dbgmsgs, zdm);
  88   88          zfs_dbgmsg_size += sizeof (zfs_dbgmsg_t) + size;
  89   89          while (zfs_dbgmsg_size > zfs_dbgmsg_maxsize) {
  90   90                  zdm = list_remove_head(&zfs_dbgmsgs);
  91   91                  size = sizeof (zfs_dbgmsg_t) + strlen(zdm->zdm_msg);
  92   92                  kmem_free(zdm, size);
  93   93                  zfs_dbgmsg_size -= size;
  94   94          }
  95   95          mutex_exit(&zfs_dbgmsgs_lock);
  96   96  }
       97 +
       98 +void
       99 +zfs_dbgmsg_print(const char *tag)
      100 +{
      101 +        zfs_dbgmsg_t *zdm;
      102 +
      103 +        (void) printf("ZFS_DBGMSG(%s):\n", tag);
      104 +        mutex_enter(&zfs_dbgmsgs_lock);
      105 +        for (zdm = list_head(&zfs_dbgmsgs); zdm;
      106 +            zdm = list_next(&zfs_dbgmsgs, zdm))
      107 +                (void) printf("%s\n", zdm->zdm_msg);
      108 +        mutex_exit(&zfs_dbgmsgs_lock);
      109 +}
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX