The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/include/zfs_prop.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 /*
   22  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
   23  * Use is subject to license terms.
   24  */
   25 
   26 #ifndef _ZFS_PROP_H
   27 #define _ZFS_PROP_H extern __attribute__((visibility("default")))
   28 
   29 #include <sys/fs/zfs.h>
   30 #include <sys/types.h>
   31 #include <sys/zfs_sysfs.h>
   32 
   33 #ifdef  __cplusplus
   34 extern "C" {
   35 #endif
   36 
   37 /*
   38  * For index types (e.g. compression and checksum), we want the numeric value
   39  * in the kernel, but the string value in userland.
   40  */
   41 typedef enum {
   42         PROP_TYPE_NUMBER,       /* numeric value */
   43         PROP_TYPE_STRING,       /* string value */
   44         PROP_TYPE_INDEX         /* numeric value indexed by string */
   45 } zprop_type_t;
   46 
   47 typedef enum {
   48         PROP_DEFAULT,
   49         PROP_READONLY,
   50         PROP_INHERIT,
   51         /*
   52          * ONETIME properties are a sort of conglomeration of READONLY
   53          * and INHERIT.  They can be set only during object creation,
   54          * after that they are READONLY.  If not explicitly set during
   55          * creation, they can be inherited. ONETIME_DEFAULT properties
   56          * work the same way, but they will default instead of
   57          * inheriting a value.
   58          */
   59         PROP_ONETIME,
   60         PROP_ONETIME_DEFAULT
   61 } zprop_attr_t;
   62 
   63 typedef struct zfs_index {
   64         const char *pi_name;
   65         uint64_t pi_value;
   66 } zprop_index_t;
   67 
   68 typedef struct {
   69         const char *pd_name;            /* human-readable property name */
   70         int pd_propnum;                 /* property number */
   71         zprop_type_t pd_proptype;       /* string, boolean, index, number */
   72         const char *pd_strdefault;      /* default for strings */
   73         uint64_t pd_numdefault;         /* for boolean / index / number */
   74         zprop_attr_t pd_attr;           /* default, readonly, inherit */
   75         int pd_types;                   /* bitfield of valid dataset types */
   76                                         /* fs | vol | snap; or pool */
   77         const char *pd_values;          /* string telling acceptable values */
   78         const char *pd_colname;         /* column header for "zfs list" */
   79         boolean_t pd_rightalign: 1;     /* column alignment for "zfs list" */
   80         boolean_t pd_visible: 1;        /* do we list this property with the */
   81                                         /* "zfs get" help message */
   82         boolean_t pd_zfs_mod_supported: 1; /* supported by running zfs module */
   83         boolean_t pd_always_flex: 1;    /* never fixed-width */
   84         const zprop_index_t *pd_table;  /* for index properties, a table */
   85                                         /* defining the possible values */
   86         size_t pd_table_size;           /* number of entries in pd_table[] */
   87 } zprop_desc_t;
   88 
   89 /*
   90  * zfs dataset property functions
   91  */
   92 _ZFS_PROP_H void zfs_prop_init(void);
   93 _ZFS_PROP_H zprop_type_t zfs_prop_get_type(zfs_prop_t);
   94 _ZFS_PROP_H boolean_t zfs_prop_delegatable(zfs_prop_t prop);
   95 _ZFS_PROP_H zprop_desc_t *zfs_prop_get_table(void);
   96 
   97 /*
   98  * zpool property functions
   99  */
  100 _ZFS_PROP_H void zpool_prop_init(void);
  101 _ZFS_PROP_H zprop_type_t zpool_prop_get_type(zpool_prop_t);
  102 _ZFS_PROP_H zprop_desc_t *zpool_prop_get_table(void);
  103 
  104 /*
  105  * vdev property functions
  106  */
  107 _ZFS_PROP_H void vdev_prop_init(void);
  108 _ZFS_PROP_H zprop_type_t vdev_prop_get_type(vdev_prop_t prop);
  109 _ZFS_PROP_H zprop_desc_t *vdev_prop_get_table(void);
  110 
  111 /*
  112  * Common routines to initialize property tables
  113  */
  114 _ZFS_PROP_H void zprop_register_impl(int, const char *, zprop_type_t, uint64_t,
  115     const char *, zprop_attr_t, int, const char *, const char *,
  116     boolean_t, boolean_t, boolean_t, const zprop_index_t *,
  117     const struct zfs_mod_supported_features *);
  118 _ZFS_PROP_H void zprop_register_string(int, const char *, const char *,
  119     zprop_attr_t attr, int, const char *, const char *,
  120     const struct zfs_mod_supported_features *);
  121 _ZFS_PROP_H void zprop_register_number(int, const char *, uint64_t,
  122     zprop_attr_t, int, const char *, const char *, boolean_t,
  123     const struct zfs_mod_supported_features *);
  124 _ZFS_PROP_H void zprop_register_index(int, const char *, uint64_t, zprop_attr_t,
  125     int, const char *, const char *, const zprop_index_t *,
  126     const struct zfs_mod_supported_features *);
  127 _ZFS_PROP_H void zprop_register_hidden(int, const char *, zprop_type_t,
  128     zprop_attr_t, int, const char *, boolean_t,
  129     const struct zfs_mod_supported_features *);
  130 
  131 /*
  132  * Common routines for zfs and zpool property management
  133  */
  134 _ZFS_PROP_H int zprop_iter_common(zprop_func, void *, boolean_t, boolean_t,
  135     zfs_type_t);
  136 _ZFS_PROP_H int zprop_name_to_prop(const char *, zfs_type_t);
  137 _ZFS_PROP_H int zprop_string_to_index(int, const char *, uint64_t *,
  138     zfs_type_t);
  139 _ZFS_PROP_H int zprop_index_to_string(int, uint64_t, const char **,
  140     zfs_type_t);
  141 _ZFS_PROP_H uint64_t zprop_random_value(int, uint64_t, zfs_type_t);
  142 _ZFS_PROP_H const char *zprop_values(int, zfs_type_t);
  143 _ZFS_PROP_H size_t zprop_width(int, boolean_t *, zfs_type_t);
  144 _ZFS_PROP_H boolean_t zprop_valid_for_type(int, zfs_type_t, boolean_t);
  145 _ZFS_PROP_H int zprop_valid_char(char c);
  146 
  147 #ifdef  __cplusplus
  148 }
  149 #endif
  150 
  151 #endif  /* _ZFS_PROP_H */

Cache object: b65d3aaebccd5217073696f97b99be2d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.