]> git.proxmox.com Git - mirror_zfs.git/blobdiff - include/zfeature_common.h
Add contrib/pyzfs/setup.py to .gitignore
[mirror_zfs.git] / include / zfeature_common.h
index 13670c8e51233246298ee4e1be4559d0fd89773a..089a7e29d11bbe166671d56b0faabb293aaf6b58 100644 (file)
  */
 
 /*
- * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2018 by Delphix. All rights reserved.
  * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2017, Intel Corporation.
  */
 
 #ifndef _ZFEATURE_COMMON_H
@@ -61,6 +62,10 @@ typedef enum spa_feature {
        SPA_FEATURE_PROJECT_QUOTA,
        SPA_FEATURE_DEVICE_REMOVAL,
        SPA_FEATURE_OBSOLETE_COUNTS,
+       SPA_FEATURE_POOL_CHECKPOINT,
+       SPA_FEATURE_SPACEMAP_V2,
+       SPA_FEATURE_ALLOCATION_CLASSES,
+       SPA_FEATURE_RESILVER_DEFER,
        SPA_FEATURES
 } spa_feature_t;
 
@@ -69,7 +74,10 @@ typedef enum spa_feature {
 typedef enum zfeature_flags {
        /* Can open pool readonly even if this feature is not supported. */
        ZFEATURE_FLAG_READONLY_COMPAT =         (1 << 0),
-       /* Is this feature necessary to read the MOS? */
+       /*
+        * Is this feature necessary to load the pool? i.e. do we need this
+        * feature to read the full feature list out of the MOS?
+        */
        ZFEATURE_FLAG_MOS =                     (1 << 1),
        /* Activate this feature at the same time it is enabled. */
        ZFEATURE_FLAG_ACTIVATE_ON_ENABLE =      (1 << 2),
@@ -77,12 +85,20 @@ typedef enum zfeature_flags {
        ZFEATURE_FLAG_PER_DATASET =             (1 << 3)
 } zfeature_flags_t;
 
+typedef enum zfeature_type {
+       ZFEATURE_TYPE_BOOLEAN,
+       ZFEATURE_TYPE_UINT64_ARRAY,
+       ZFEATURE_NUM_TYPES
+} zfeature_type_t;
+
 typedef struct zfeature_info {
        spa_feature_t fi_feature;
        const char *fi_uname;   /* User-facing feature name */
        const char *fi_guid;    /* On-disk feature identifier */
        const char *fi_desc;    /* Feature description */
        zfeature_flags_t fi_flags;
+       boolean_t fi_zfs_mod_supported; /* supported by running zfs module */
+       zfeature_type_t fi_type; /* Only relevant for PER_DATASET features */
        /* array of dependencies, terminated by SPA_FEATURE_NONE */
        const spa_feature_t *fi_depends;
 } zfeature_info_t;
@@ -96,6 +112,7 @@ extern zfeature_info_t spa_feature_table[SPA_FEATURES];
 extern boolean_t zfeature_is_valid_guid(const char *);
 
 extern boolean_t zfeature_is_supported(const char *);
+extern int zfeature_lookup_guid(const char *, spa_feature_t *);
 extern int zfeature_lookup_name(const char *, spa_feature_t *);
 extern boolean_t zfeature_depends_on(spa_feature_t, spa_feature_t);