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>


   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright (c) 2012 by Delphix. All rights reserved.
  24  */
  25 
  26 #ifndef _SYS_VDEV_IMPL_H
  27 #define _SYS_VDEV_IMPL_H
  28 
  29 #include <sys/avl.h>
  30 #include <sys/dmu.h>
  31 #include <sys/metaslab.h>
  32 #include <sys/nvpair.h>
  33 #include <sys/space_map.h>
  34 #include <sys/vdev.h>
  35 #include <sys/dkio.h>
  36 #include <sys/uberblock_impl.h>
  37 
  38 #ifdef  __cplusplus
  39 extern "C" {
  40 #endif
  41 
  42 /*
  43  * Virtual device descriptors.


 156         boolean_t       vdev_remove_wanted; /* async remove wanted?     */
 157         boolean_t       vdev_probe_wanted; /* async probe wanted?       */
 158         uint64_t        vdev_removing;  /* device is being removed?     */
 159         list_node_t     vdev_config_dirty_node; /* config dirty list    */
 160         list_node_t     vdev_state_dirty_node; /* state dirty list      */
 161         uint64_t        vdev_deflate_ratio; /* deflation ratio (x512)   */
 162         uint64_t        vdev_islog;     /* is an intent log device      */
 163         uint64_t        vdev_ishole;    /* is a hole in the namespace   */
 164 
 165         /*
 166          * Leaf vdev state.
 167          */
 168         uint64_t        vdev_psize;     /* physical device capacity     */
 169         space_map_obj_t vdev_dtl_smo;   /* dirty time log space map obj */
 170         txg_node_t      vdev_dtl_node;  /* per-txg dirty DTL linkage    */
 171         uint64_t        vdev_wholedisk; /* true if this is a whole disk */
 172         uint64_t        vdev_offline;   /* persistent offline state     */
 173         uint64_t        vdev_faulted;   /* persistent faulted state     */
 174         uint64_t        vdev_degraded;  /* persistent degraded state    */
 175         uint64_t        vdev_removed;   /* persistent removed state     */
 176         uint64_t        vdev_resilvering; /* persistent resilvering state */
 177         uint64_t        vdev_nparity;   /* number of parity devices for raidz */
 178         char            *vdev_path;     /* vdev path (if any)           */
 179         char            *vdev_devid;    /* vdev devid (if any)          */
 180         char            *vdev_physpath; /* vdev device path (if any)    */
 181         char            *vdev_fru;      /* physical FRU location        */
 182         uint64_t        vdev_not_present; /* not present during import  */
 183         uint64_t        vdev_unspare;   /* unspare when resilvering done */
 184         hrtime_t        vdev_last_try;  /* last reopen time             */
 185         boolean_t       vdev_nowritecache; /* true if flushwritecache failed */
 186         boolean_t       vdev_checkremove; /* temporary online test      */
 187         boolean_t       vdev_forcefault; /* force online fault          */
 188         boolean_t       vdev_splitting; /* split or repair in progress  */
 189         boolean_t       vdev_delayed_close; /* delayed device close?    */
 190         uint8_t         vdev_tmpoffline; /* device taken offline temporarily? */
 191         uint8_t         vdev_detached;  /* device detached?             */
 192         uint8_t         vdev_cant_read; /* vdev is failing all reads    */
 193         uint8_t         vdev_cant_write; /* vdev is failing all writes  */
 194         uint64_t        vdev_isspare;   /* was a hot spare              */
 195         uint64_t        vdev_isl2cache; /* was a l2cache device         */
 196         vdev_queue_t    vdev_queue;     /* I/O deadline schedule queue  */




   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 /*
  22  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  23  * Copyright (c) 2013 by Delphix. All rights reserved.
  24  */
  25 
  26 #ifndef _SYS_VDEV_IMPL_H
  27 #define _SYS_VDEV_IMPL_H
  28 
  29 #include <sys/avl.h>
  30 #include <sys/dmu.h>
  31 #include <sys/metaslab.h>
  32 #include <sys/nvpair.h>
  33 #include <sys/space_map.h>
  34 #include <sys/vdev.h>
  35 #include <sys/dkio.h>
  36 #include <sys/uberblock_impl.h>
  37 
  38 #ifdef  __cplusplus
  39 extern "C" {
  40 #endif
  41 
  42 /*
  43  * Virtual device descriptors.


 156         boolean_t       vdev_remove_wanted; /* async remove wanted?     */
 157         boolean_t       vdev_probe_wanted; /* async probe wanted?       */
 158         uint64_t        vdev_removing;  /* device is being removed?     */
 159         list_node_t     vdev_config_dirty_node; /* config dirty list    */
 160         list_node_t     vdev_state_dirty_node; /* state dirty list      */
 161         uint64_t        vdev_deflate_ratio; /* deflation ratio (x512)   */
 162         uint64_t        vdev_islog;     /* is an intent log device      */
 163         uint64_t        vdev_ishole;    /* is a hole in the namespace   */
 164 
 165         /*
 166          * Leaf vdev state.
 167          */
 168         uint64_t        vdev_psize;     /* physical device capacity     */
 169         space_map_obj_t vdev_dtl_smo;   /* dirty time log space map obj */
 170         txg_node_t      vdev_dtl_node;  /* per-txg dirty DTL linkage    */
 171         uint64_t        vdev_wholedisk; /* true if this is a whole disk */
 172         uint64_t        vdev_offline;   /* persistent offline state     */
 173         uint64_t        vdev_faulted;   /* persistent faulted state     */
 174         uint64_t        vdev_degraded;  /* persistent degraded state    */
 175         uint64_t        vdev_removed;   /* persistent removed state     */
 176         uint64_t        vdev_resilver_txg; /* persistent resilvering state */
 177         uint64_t        vdev_nparity;   /* number of parity devices for raidz */
 178         char            *vdev_path;     /* vdev path (if any)           */
 179         char            *vdev_devid;    /* vdev devid (if any)          */
 180         char            *vdev_physpath; /* vdev device path (if any)    */
 181         char            *vdev_fru;      /* physical FRU location        */
 182         uint64_t        vdev_not_present; /* not present during import  */
 183         uint64_t        vdev_unspare;   /* unspare when resilvering done */
 184         hrtime_t        vdev_last_try;  /* last reopen time             */
 185         boolean_t       vdev_nowritecache; /* true if flushwritecache failed */
 186         boolean_t       vdev_checkremove; /* temporary online test      */
 187         boolean_t       vdev_forcefault; /* force online fault          */
 188         boolean_t       vdev_splitting; /* split or repair in progress  */
 189         boolean_t       vdev_delayed_close; /* delayed device close?    */
 190         uint8_t         vdev_tmpoffline; /* device taken offline temporarily? */
 191         uint8_t         vdev_detached;  /* device detached?             */
 192         uint8_t         vdev_cant_read; /* vdev is failing all reads    */
 193         uint8_t         vdev_cant_write; /* vdev is failing all writes  */
 194         uint64_t        vdev_isspare;   /* was a hot spare              */
 195         uint64_t        vdev_isl2cache; /* was a l2cache device         */
 196         vdev_queue_t    vdev_queue;     /* I/O deadline schedule queue  */