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>
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/fs/zfs/sys/dsl_scan.h
          +++ new/usr/src/uts/common/fs/zfs/sys/dsl_scan.h
   1    1  /*
   2    2   * CDDL HEADER START
   3    3   *
   4    4   * The contents of this file are subject to the terms of the
   5    5   * Common Development and Distribution License (the "License").
   6    6   * You may not use this file except in compliance with the License.
   7    7   *
   8    8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9    9   * or http://www.opensolaris.org/os/licensing.
  10   10   * See the License for the specific language governing permissions
  11   11   * and limitations under the License.
  12   12   *
  
    | 
      ↓ 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   24   */
  24   25  
  25   26  #ifndef _SYS_DSL_SCAN_H
  26   27  #define _SYS_DSL_SCAN_H
  27   28  
  28   29  #include <sys/zfs_context.h>
  29   30  #include <sys/zio.h>
  30   31  #include <sys/ddt.h>
  31   32  #include <sys/bplist.h>
  32   33  
  33   34  #ifdef  __cplusplus
  34   35  extern "C" {
  35   36  #endif
  36   37  
  37   38  struct objset;
  38   39  struct dsl_dir;
  39   40  struct dsl_dataset;
  40   41  struct dsl_pool;
  41   42  struct dmu_tx;
  42   43  
  43   44  /*
  44   45   * All members of this structure must be uint64_t, for byteswap
  45   46   * purposes.
  46   47   */
  47   48  typedef struct dsl_scan_phys {
  48   49          uint64_t scn_func; /* pool_scan_func_t */
  49   50          uint64_t scn_state; /* dsl_scan_state_t */
  50   51          uint64_t scn_queue_obj;
  51   52          uint64_t scn_min_txg;
  52   53          uint64_t scn_max_txg;
  53   54          uint64_t scn_cur_min_txg;
  54   55          uint64_t scn_cur_max_txg;
  55   56          uint64_t scn_start_time;
  56   57          uint64_t scn_end_time;
  57   58          uint64_t scn_to_examine; /* total bytes to be scanned */
  58   59          uint64_t scn_examined; /* bytes scanned so far */
  59   60          uint64_t scn_to_process;
  60   61          uint64_t scn_processed;
  61   62          uint64_t scn_errors;    /* scan I/O error count */
  62   63          uint64_t scn_ddt_class_max;
  63   64          ddt_bookmark_t scn_ddt_bookmark;
  64   65          zbookmark_t scn_bookmark;
  65   66          uint64_t scn_flags; /* dsl_scan_flags_t */
  66   67  } dsl_scan_phys_t;
  67   68  
  68   69  #define SCAN_PHYS_NUMINTS (sizeof (dsl_scan_phys_t) / sizeof (uint64_t))
  69   70  
  70   71  typedef enum dsl_scan_flags {
  71   72          DSF_VISIT_DS_AGAIN = 1<<0,
  
    | 
      ↓ open down ↓ | 
    39 lines elided | 
    
      ↑ open up ↑ | 
  
  72   73  } dsl_scan_flags_t;
  73   74  
  74   75  typedef struct dsl_scan {
  75   76          struct dsl_pool *scn_dp;
  76   77  
  77   78          boolean_t scn_pausing;
  78   79          uint64_t scn_restart_txg;
  79   80          uint64_t scn_sync_start_time;
  80   81          zio_t *scn_zio_root;
  81   82  
       83 +        /* for freeing blocks */
       84 +        boolean_t scn_is_bptree;
       85 +
  82   86          /* for debugging / information */
  83   87          uint64_t scn_visited_this_txg;
  84   88  
  85   89          dsl_scan_phys_t scn_phys;
  86   90  } dsl_scan_t;
  87   91  
  88   92  int dsl_scan_init(struct dsl_pool *dp, uint64_t txg);
  89   93  void dsl_scan_fini(struct dsl_pool *dp);
  90   94  void dsl_scan_sync(struct dsl_pool *, dmu_tx_t *);
  91   95  int dsl_scan_cancel(struct dsl_pool *);
  92   96  int dsl_scan(struct dsl_pool *, pool_scan_func_t);
  93   97  void dsl_resilver_restart(struct dsl_pool *, uint64_t txg);
  94   98  boolean_t dsl_scan_resilvering(struct dsl_pool *dp);
  95   99  boolean_t dsl_dataset_unstable(struct dsl_dataset *ds);
  96  100  void dsl_scan_ddt_entry(dsl_scan_t *scn, enum zio_checksum checksum,
  97  101      ddt_entry_t *dde, dmu_tx_t *tx);
  98  102  void dsl_scan_ds_destroyed(struct dsl_dataset *ds, struct dmu_tx *tx);
  99  103  void dsl_scan_ds_snapshotted(struct dsl_dataset *ds, struct dmu_tx *tx);
 100  104  void dsl_scan_ds_clone_swapped(struct dsl_dataset *ds1, struct dsl_dataset *ds2,
 101  105      struct dmu_tx *tx);
 102  106  boolean_t dsl_scan_active(dsl_scan_t *scn);
 103  107  
 104  108  #ifdef  __cplusplus
 105  109  }
 106  110  #endif
 107  111  
 108  112  #endif /* _SYS_DSL_SCAN_H */
  
    | 
      ↓ open down ↓ | 
    17 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX