Print this page
    
4370 avoid transmitting holes during zfs send
4371 DMU code clean up
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Approved by: Garrett D'Amore <garrett@damore.org>
Issue #9: Support for persistent CoS/vdev attributes with feature flags
          Support for feature flags for special tier
          Contributors: Daniil Lunev, Boris Protopopov
    
      
        | Split | 
	Close | 
      
      | Expand all | 
      | Collapse all | 
    
    
          --- old/usr/src/uts/common/fs/zfs/sys/zfeature.h
          +++ new/usr/src/uts/common/fs/zfs/sys/zfeature.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   *
  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  /*
  23   23   * Copyright (c) 2013 by Delphix. All rights reserved.
  24   24   */
  25   25  
  26   26  #ifndef _SYS_ZFEATURE_H
  27   27  #define _SYS_ZFEATURE_H
  28   28  
  29   29  #include <sys/nvpair.h>
  30   30  #include <sys/txg.h>
  31   31  #include "zfeature_common.h"
  32   32  
  33   33  #ifdef  __cplusplus
  34   34  extern "C" {
  
    | 
      ↓ open down ↓ | 
    34 lines elided | 
    
      ↑ open up ↑ | 
  
  35   35  #endif
  36   36  
  37   37  #define VALID_FEATURE_FID(fid)  ((fid) >= 0 && (fid) < SPA_FEATURES)
  38   38  #define VALID_FEATURE_OR_NONE(fid)      ((fid) == SPA_FEATURE_NONE ||   \
  39   39      VALID_FEATURE_FID(fid))
  40   40  
  41   41  struct spa;
  42   42  struct dmu_tx;
  43   43  struct objset;
  44   44  
       45 +#define FEATURE_META_DEVICES "feature@meta_devices"
       46 +
       47 +extern boolean_t feature_is_supported(struct objset *os, uint64_t obj,
       48 +    uint64_t desc_obj, nvlist_t *unsup_feat, nvlist_t *enabled_feat);
       49 +
  45   50  extern void spa_feature_create_zap_objects(struct spa *, struct dmu_tx *);
  46   51  extern void spa_feature_enable(struct spa *, spa_feature_t,
  47   52      struct dmu_tx *);
  48   53  extern void spa_feature_incr(struct spa *, spa_feature_t, struct dmu_tx *);
  49   54  extern void spa_feature_decr(struct spa *, spa_feature_t, struct dmu_tx *);
  50   55  extern boolean_t spa_feature_is_enabled(struct spa *, spa_feature_t);
  51   56  extern boolean_t spa_feature_is_active(struct spa *, spa_feature_t);
  52   57  extern boolean_t spa_feature_enabled_txg(spa_t *spa, spa_feature_t fid,
  53   58      uint64_t *txg);
  54   59  extern uint64_t spa_feature_refcount(spa_t *, spa_feature_t, uint64_t);
  55   60  extern boolean_t spa_features_check(spa_t *, boolean_t, nvlist_t *, nvlist_t *);
  56   61  
  57   62  /*
  58   63   * These functions are only exported for zhack and zdb; normal callers should
  59   64   * use the above interfaces.
  60   65   */
  61   66  extern int feature_get_refcount(struct spa *, zfeature_info_t *, uint64_t *);
  62   67  extern int feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature,
  63   68      uint64_t *res);
  64   69  extern void feature_enable_sync(struct spa *, zfeature_info_t *,
  65   70      struct dmu_tx *);
  66   71  extern void feature_sync(struct spa *, zfeature_info_t *, uint64_t,
  67   72      struct dmu_tx *);
  68   73  
  69   74  #ifdef  __cplusplus
  70   75  }
  71   76  #endif
  72   77  
  73   78  #endif /* _SYS_ZFEATURE_H */
  
    | 
      ↓ open down ↓ | 
    19 lines elided | 
    
      ↑ open up ↑ | 
  
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX