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>


  62                 { "continue",   ZIO_FAILURE_MODE_CONTINUE },
  63                 { "panic",      ZIO_FAILURE_MODE_PANIC },
  64                 { NULL }
  65         };
  66 
  67         /* string properties */
  68         zprop_register_string(ZPOOL_PROP_ALTROOT, "altroot", NULL, PROP_DEFAULT,
  69             ZFS_TYPE_POOL, "<path>", "ALTROOT");
  70         zprop_register_string(ZPOOL_PROP_BOOTFS, "bootfs", NULL, PROP_DEFAULT,
  71             ZFS_TYPE_POOL, "<filesystem>", "BOOTFS");
  72         zprop_register_string(ZPOOL_PROP_CACHEFILE, "cachefile", NULL,
  73             PROP_DEFAULT, ZFS_TYPE_POOL, "<file> | none", "CACHEFILE");
  74         zprop_register_string(ZPOOL_PROP_COMMENT, "comment", NULL,
  75             PROP_DEFAULT, ZFS_TYPE_POOL, "<comment-string>", "COMMENT");
  76 
  77         /* readonly number properties */
  78         zprop_register_number(ZPOOL_PROP_SIZE, "size", 0, PROP_READONLY,
  79             ZFS_TYPE_POOL, "<size>", "SIZE");
  80         zprop_register_number(ZPOOL_PROP_FREE, "free", 0, PROP_READONLY,
  81             ZFS_TYPE_POOL, "<size>", "FREE");


  82         zprop_register_number(ZPOOL_PROP_ALLOCATED, "allocated", 0,
  83             PROP_READONLY, ZFS_TYPE_POOL, "<size>", "ALLOC");
  84         zprop_register_number(ZPOOL_PROP_EXPANDSZ, "expandsize", 0,
  85             PROP_READONLY, ZFS_TYPE_POOL, "<size>", "EXPANDSZ");
  86         zprop_register_number(ZPOOL_PROP_CAPACITY, "capacity", 0, PROP_READONLY,
  87             ZFS_TYPE_POOL, "<size>", "CAP");
  88         zprop_register_number(ZPOOL_PROP_GUID, "guid", 0, PROP_READONLY,
  89             ZFS_TYPE_POOL, "<guid>", "GUID");
  90         zprop_register_number(ZPOOL_PROP_HEALTH, "health", 0, PROP_READONLY,
  91             ZFS_TYPE_POOL, "<state>", "HEALTH");
  92         zprop_register_number(ZPOOL_PROP_DEDUPRATIO, "dedupratio", 0,
  93             PROP_READONLY, ZFS_TYPE_POOL, "<1.00x or higher if deduped>",
  94             "DEDUP");
  95 
  96         /* default number properties */
  97         zprop_register_number(ZPOOL_PROP_VERSION, "version", SPA_VERSION,
  98             PROP_DEFAULT, ZFS_TYPE_POOL, "<version>", "VERSION");
  99         zprop_register_number(ZPOOL_PROP_DEDUPDITTO, "dedupditto", 0,
 100             PROP_DEFAULT, ZFS_TYPE_POOL, "<threshold (min 100)>", "DEDUPDITTO");
 101 


 149 }
 150 
 151 boolean_t
 152 zpool_prop_readonly(zpool_prop_t prop)
 153 {
 154         return (zpool_prop_table[prop].pd_attr == PROP_READONLY);
 155 }
 156 
 157 const char *
 158 zpool_prop_default_string(zpool_prop_t prop)
 159 {
 160         return (zpool_prop_table[prop].pd_strdefault);
 161 }
 162 
 163 uint64_t
 164 zpool_prop_default_numeric(zpool_prop_t prop)
 165 {
 166         return (zpool_prop_table[prop].pd_numdefault);
 167 }
 168 




















 169 int
 170 zpool_prop_string_to_index(zpool_prop_t prop, const char *string,
 171     uint64_t *index)
 172 {
 173         return (zprop_string_to_index(prop, string, index, ZFS_TYPE_POOL));
 174 }
 175 
 176 int
 177 zpool_prop_index_to_string(zpool_prop_t prop, uint64_t index,
 178     const char **string)
 179 {
 180         return (zprop_index_to_string(prop, index, string, ZFS_TYPE_POOL));
 181 }
 182 
 183 uint64_t
 184 zpool_prop_random_value(zpool_prop_t prop, uint64_t seed)
 185 {
 186         return (zprop_random_value(prop, seed, ZFS_TYPE_POOL));
 187 }
 188 


  62                 { "continue",   ZIO_FAILURE_MODE_CONTINUE },
  63                 { "panic",      ZIO_FAILURE_MODE_PANIC },
  64                 { NULL }
  65         };
  66 
  67         /* string properties */
  68         zprop_register_string(ZPOOL_PROP_ALTROOT, "altroot", NULL, PROP_DEFAULT,
  69             ZFS_TYPE_POOL, "<path>", "ALTROOT");
  70         zprop_register_string(ZPOOL_PROP_BOOTFS, "bootfs", NULL, PROP_DEFAULT,
  71             ZFS_TYPE_POOL, "<filesystem>", "BOOTFS");
  72         zprop_register_string(ZPOOL_PROP_CACHEFILE, "cachefile", NULL,
  73             PROP_DEFAULT, ZFS_TYPE_POOL, "<file> | none", "CACHEFILE");
  74         zprop_register_string(ZPOOL_PROP_COMMENT, "comment", NULL,
  75             PROP_DEFAULT, ZFS_TYPE_POOL, "<comment-string>", "COMMENT");
  76 
  77         /* readonly number properties */
  78         zprop_register_number(ZPOOL_PROP_SIZE, "size", 0, PROP_READONLY,
  79             ZFS_TYPE_POOL, "<size>", "SIZE");
  80         zprop_register_number(ZPOOL_PROP_FREE, "free", 0, PROP_READONLY,
  81             ZFS_TYPE_POOL, "<size>", "FREE");
  82         zprop_register_number(ZPOOL_PROP_FREEING, "freeing", 0, PROP_READONLY,
  83             ZFS_TYPE_POOL, "<size>", "FREEING");
  84         zprop_register_number(ZPOOL_PROP_ALLOCATED, "allocated", 0,
  85             PROP_READONLY, ZFS_TYPE_POOL, "<size>", "ALLOC");
  86         zprop_register_number(ZPOOL_PROP_EXPANDSZ, "expandsize", 0,
  87             PROP_READONLY, ZFS_TYPE_POOL, "<size>", "EXPANDSZ");
  88         zprop_register_number(ZPOOL_PROP_CAPACITY, "capacity", 0, PROP_READONLY,
  89             ZFS_TYPE_POOL, "<size>", "CAP");
  90         zprop_register_number(ZPOOL_PROP_GUID, "guid", 0, PROP_READONLY,
  91             ZFS_TYPE_POOL, "<guid>", "GUID");
  92         zprop_register_number(ZPOOL_PROP_HEALTH, "health", 0, PROP_READONLY,
  93             ZFS_TYPE_POOL, "<state>", "HEALTH");
  94         zprop_register_number(ZPOOL_PROP_DEDUPRATIO, "dedupratio", 0,
  95             PROP_READONLY, ZFS_TYPE_POOL, "<1.00x or higher if deduped>",
  96             "DEDUP");
  97 
  98         /* default number properties */
  99         zprop_register_number(ZPOOL_PROP_VERSION, "version", SPA_VERSION,
 100             PROP_DEFAULT, ZFS_TYPE_POOL, "<version>", "VERSION");
 101         zprop_register_number(ZPOOL_PROP_DEDUPDITTO, "dedupditto", 0,
 102             PROP_DEFAULT, ZFS_TYPE_POOL, "<threshold (min 100)>", "DEDUPDITTO");
 103 


 151 }
 152 
 153 boolean_t
 154 zpool_prop_readonly(zpool_prop_t prop)
 155 {
 156         return (zpool_prop_table[prop].pd_attr == PROP_READONLY);
 157 }
 158 
 159 const char *
 160 zpool_prop_default_string(zpool_prop_t prop)
 161 {
 162         return (zpool_prop_table[prop].pd_strdefault);
 163 }
 164 
 165 uint64_t
 166 zpool_prop_default_numeric(zpool_prop_t prop)
 167 {
 168         return (zpool_prop_table[prop].pd_numdefault);
 169 }
 170 
 171 /*
 172  * Returns true if this is a valid feature@ property.
 173  */
 174 boolean_t
 175 zpool_prop_feature(const char *name)
 176 {
 177         static const char *prefix = "feature@";
 178         return (strncmp(name, prefix, strlen(prefix)) == 0);
 179 }
 180 
 181 /*
 182  * Returns true if this is a valid unsupported@ property.
 183  */
 184 boolean_t
 185 zpool_prop_unsupported(const char *name)
 186 {
 187         static const char *prefix = "unsupported@";
 188         return (strncmp(name, prefix, strlen(prefix)) == 0);
 189 }
 190 
 191 int
 192 zpool_prop_string_to_index(zpool_prop_t prop, const char *string,
 193     uint64_t *index)
 194 {
 195         return (zprop_string_to_index(prop, string, index, ZFS_TYPE_POOL));
 196 }
 197 
 198 int
 199 zpool_prop_index_to_string(zpool_prop_t prop, uint64_t index,
 200     const char **string)
 201 {
 202         return (zprop_index_to_string(prop, index, string, ZFS_TYPE_POOL));
 203 }
 204 
 205 uint64_t
 206 zpool_prop_random_value(zpool_prop_t prop, uint64_t seed)
 207 {
 208         return (zprop_random_value(prop, seed, ZFS_TYPE_POOL));
 209 }
 210