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


  25 
  26 #ifndef _SYS_ZFEATURE_H
  27 #define _SYS_ZFEATURE_H
  28 
  29 #include <sys/nvpair.h>
  30 #include <sys/txg.h>
  31 #include "zfeature_common.h"
  32 
  33 #ifdef  __cplusplus
  34 extern "C" {
  35 #endif
  36 
  37 #define VALID_FEATURE_FID(fid)  ((fid) >= 0 && (fid) < SPA_FEATURES)
  38 #define VALID_FEATURE_OR_NONE(fid)      ((fid) == SPA_FEATURE_NONE ||   \
  39     VALID_FEATURE_FID(fid))
  40 
  41 struct spa;
  42 struct dmu_tx;
  43 struct objset;
  44 





  45 extern void spa_feature_create_zap_objects(struct spa *, struct dmu_tx *);
  46 extern void spa_feature_enable(struct spa *, spa_feature_t,
  47     struct dmu_tx *);
  48 extern void spa_feature_incr(struct spa *, spa_feature_t, struct dmu_tx *);
  49 extern void spa_feature_decr(struct spa *, spa_feature_t, struct dmu_tx *);
  50 extern boolean_t spa_feature_is_enabled(struct spa *, spa_feature_t);
  51 extern boolean_t spa_feature_is_active(struct spa *, spa_feature_t);
  52 extern boolean_t spa_feature_enabled_txg(spa_t *spa, spa_feature_t fid,
  53     uint64_t *txg);
  54 extern uint64_t spa_feature_refcount(spa_t *, spa_feature_t, uint64_t);
  55 extern boolean_t spa_features_check(spa_t *, boolean_t, nvlist_t *, nvlist_t *);
  56 
  57 /*
  58  * These functions are only exported for zhack and zdb; normal callers should
  59  * use the above interfaces.
  60  */
  61 extern int feature_get_refcount(struct spa *, zfeature_info_t *, uint64_t *);
  62 extern int feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature,
  63     uint64_t *res);
  64 extern void feature_enable_sync(struct spa *, zfeature_info_t *,


  25 
  26 #ifndef _SYS_ZFEATURE_H
  27 #define _SYS_ZFEATURE_H
  28 
  29 #include <sys/nvpair.h>
  30 #include <sys/txg.h>
  31 #include "zfeature_common.h"
  32 
  33 #ifdef  __cplusplus
  34 extern "C" {
  35 #endif
  36 
  37 #define VALID_FEATURE_FID(fid)  ((fid) >= 0 && (fid) < SPA_FEATURES)
  38 #define VALID_FEATURE_OR_NONE(fid)      ((fid) == SPA_FEATURE_NONE ||   \
  39     VALID_FEATURE_FID(fid))
  40 
  41 struct spa;
  42 struct dmu_tx;
  43 struct objset;
  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 
  50 extern void spa_feature_create_zap_objects(struct spa *, struct dmu_tx *);
  51 extern void spa_feature_enable(struct spa *, spa_feature_t,
  52     struct dmu_tx *);
  53 extern void spa_feature_incr(struct spa *, spa_feature_t, struct dmu_tx *);
  54 extern void spa_feature_decr(struct spa *, spa_feature_t, struct dmu_tx *);
  55 extern boolean_t spa_feature_is_enabled(struct spa *, spa_feature_t);
  56 extern boolean_t spa_feature_is_active(struct spa *, spa_feature_t);
  57 extern boolean_t spa_feature_enabled_txg(spa_t *spa, spa_feature_t fid,
  58     uint64_t *txg);
  59 extern uint64_t spa_feature_refcount(spa_t *, spa_feature_t, uint64_t);
  60 extern boolean_t spa_features_check(spa_t *, boolean_t, nvlist_t *, nvlist_t *);
  61 
  62 /*
  63  * These functions are only exported for zhack and zdb; normal callers should
  64  * use the above interfaces.
  65  */
  66 extern int feature_get_refcount(struct spa *, zfeature_info_t *, uint64_t *);
  67 extern int feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature,
  68     uint64_t *res);
  69 extern void feature_enable_sync(struct spa *, zfeature_info_t *,