zfs.h revision 9adfa60d484ce2435f5af77cc99dcd4e692b6660
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CDDL HEADER START
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The contents of this file are subject to the terms of the
441d80aa4f613b6298fc8bd3151f4be02dbf84fclling * Common Development and Distribution License (the "License").
441d80aa4f613b6298fc8bd3151f4be02dbf84fclling * You may not use this file except in compliance with the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fa9e4066f08beec538e775443c5be79dd423fcabahrens * See the License for the specific language governing permissions
fa9e4066f08beec538e775443c5be79dd423fcabahrens * and limitations under the License.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * When distributing Covered Code, include this CDDL HEADER in each
fa9e4066f08beec538e775443c5be79dd423fcabahrens * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * If applicable, add the following below this CDDL HEADER, with the
fa9e4066f08beec538e775443c5be79dd423fcabahrens * fields enclosed by brackets "[]" replaced with your own identifying
fa9e4066f08beec538e775443c5be79dd423fcabahrens * information: Portions Copyright [yyyy] [name of copyright owner]
fa9e4066f08beec538e775443c5be79dd423fcabahrens * CDDL HEADER END
27dd1e87cd3d939264769dd4af7e6a529cde001fMark Shellenbaum * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
edf345e6b8342e8627ec20ce821a977a62cee19dMatthew Ahrens * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
e9103aaee0c546d4644791198c54abb03c89969eGarrett D'Amore * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
a2afb611b30628fb74ad9eade4ae465f9031e262Jerry Jelinek * Copyright (c) 2013, Joyent, Inc. All rights reserved.
c3d26abc9ee97b4f60233556aadeb57e0bd30bb9Matthew Ahrens * Copyright (c) 2014 Integros [integros.com]
55da60b91d96984f12de050ce428373ea25c7f35Mark J Musante/* Portions Copyright 2010 Robert Milkowski */
fa9e4066f08beec538e775443c5be79dd423fcabahrensextern "C" {
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Types and constants shared between userland and the kernel.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Each dataset can be one of the following types. These constants can be
fa9e4066f08beec538e775443c5be79dd423fcabahrens * combined into masks that can be passed to various functions.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum {
26455f9efcf9b1e44937d4d86d1ce37b006f25a9Andriy Gapon * NB: lzc_dataset_type should be updated whenever a new objset type is added,
26455f9efcf9b1e44937d4d86d1ce37b006f25a9Andriy Gapon * if it represents a real type of a dataset that can be created from userland.
fa9e4066f08beec538e775443c5be79dd423fcabahrens (ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME | ZFS_TYPE_SNAPSHOT)
9adfa60d484ce2435f5af77cc99dcd4e692b6660Matthew Ahrens * All of these include the terminating NUL byte.
990b4856d0eaada6f8140335733a1b1771ed2746lling * Dataset properties are identified by these constants and must be added to
990b4856d0eaada6f8140335733a1b1771ed2746lling * the end of this list to ensure that external consumers are not affected
990b4856d0eaada6f8140335733a1b1771ed2746lling * by the change. If you make any changes to this list, be sure to update
66e2aacc02a4625d105fb249ad16c27e79604ff2gw * the property table in usr/src/common/zfs/zfs_prop.c.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum {
148434217c040ea38dc844384f6ba68d9b325906Matthew Ahrens ZFS_PROP_USERACCOUNTING, /* not exposed to the user */
478ed9ada0b6efe1318150a700986aa47e6a926dEric Taylor ZFS_PROP_STMF_SHAREINFO, /* not exposed to the user */
1d7132005da8d75994a6ad204e6ec05ef5ffaa4bEric Schrock ZFS_PROP_OBJSETID, /* not exposed to the user */
ca48f36f20f6098ceb19d5b084b6b3d4b8eca9faKeith M Wesolowski ZFS_PROP_INCONSISTENT, /* not exposed to the user */
148434217c040ea38dc844384f6ba68d9b325906Matthew Ahrenstypedef enum {
148434217c040ea38dc844384f6ba68d9b325906Matthew Ahrensextern const char *zfs_userquota_prop_prefixes[ZFS_NUM_USERQUOTA_PROPS];
990b4856d0eaada6f8140335733a1b1771ed2746lling * Pool properties are identified by these constants and must be added to the
b87f3af36bb994656da117319f5129ddfd05ed21perrin * end of this list to ensure that external consumers are not affected
990b4856d0eaada6f8140335733a1b1771ed2746lling * by the change. If you make any changes to this list, be sure to update
990b4856d0eaada6f8140335733a1b1771ed2746lling * the property table in usr/src/common/zfs/zpool_prop.c.
990b4856d0eaada6f8140335733a1b1771ed2746llingtypedef enum {
8704186e373c9ed74daa395ff3f7fd745396df9eDan McDonald/* Small enough to not hog a whole line of printout in zpool(1M). */
b1b8ab34de515a5e83206da22c3d7e563241b021llingtypedef enum {
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson * Dataset flag implemented as a special entry in the props zap object
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson * indicating that the dataset has received properties on or after
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson * SPA_VERSION_RECVD_PROPS. The first such receive blows away local properties
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson * just as it did in earlier versions, and thereafter, local properties are
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson * preserved.
92241e0b80813d0b83c08e730a29b9d1831794fcTom Ericksontypedef enum {
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson ZPROP_ERR_NOCLEAR = 0x1, /* failure to clear existing props */
92241e0b80813d0b83c08e730a29b9d1831794fcTom Erickson ZPROP_ERR_NORESTORE = 0x2 /* failure to restore props on error */
990b4856d0eaada6f8140335733a1b1771ed2746llingtypedef int (*zprop_func)(int, void *);
0a48a24e663a04e34e2ed4e55390ad96f178dbeatimh * Properties to be set on the root file system of a new pool
0a48a24e663a04e34e2ed4e55390ad96f178dbeatimh * are stuffed into their own nvlist, which is then included in
0a48a24e663a04e34e2ed4e55390ad96f178dbeatimh * the properties nvlist with the pool properties.
990b4856d0eaada6f8140335733a1b1771ed2746lling * Dataset property functions shared between libzfs and kernel.
990b4856d0eaada6f8140335733a1b1771ed2746llingint zfs_prop_index_to_string(zfs_prop_t, uint64_t, const char **);
990b4856d0eaada6f8140335733a1b1771ed2746llingint zfs_prop_string_to_index(zfs_prop_t, const char *, uint64_t *);
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickuint64_t zfs_prop_random_value(zfs_prop_t, uint64_t seed);
990b4856d0eaada6f8140335733a1b1771ed2746lling * Pool property functions shared between libzfs and kernel.
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Sidenboolean_t zpool_prop_feature(const char *);
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Sidenboolean_t zpool_prop_unsupported(const char *name);
990b4856d0eaada6f8140335733a1b1771ed2746llingint zpool_prop_index_to_string(zpool_prop_t, uint64_t, const char **);
990b4856d0eaada6f8140335733a1b1771ed2746llingint zpool_prop_string_to_index(zpool_prop_t, const char *, uint64_t *);
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwickuint64_t zpool_prop_random_value(zpool_prop_t, uint64_t seed);
990b4856d0eaada6f8140335733a1b1771ed2746lling * Definitions for the Delegation.
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarkstypedef enum {
ecd6cf800b63704be73fb264c3f5b6e0dafc068dmarkstypedef enum {
a227b7f4f323ad89c40a86c430a5e891504a8e8bhstypedef enum {
e09fa4dacfb671e707d50a55ae9b5cc191e1b8cbNeil Perrintypedef enum {
da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0amwtypedef enum zfs_share_op {
3baa08fc5b6bea08a475b0cfe3ad161d74c5864bektypedef enum zfs_cache_type {
55da60b91d96984f12de050ce428373ea25c7f35Mark J Musantetypedef enum {
edf345e6b8342e8627ec20ce821a977a62cee19dMatthew Ahrenstypedef enum {
99653d4ee642c6528e88224f12409a5f23060994eschrock * On-disk version number.
e7cbe64f7a72dae5cb44f100db60ca88f3313c65gw * When bumping up SPA_VERSION, make sure GRUB ZFS understands the on-disk
478ed9ada0b6efe1318150a700986aa47e6a926dEric Taylor * format change. Go to usr/src/grub/grub-0.97/stage2/{zfs-include/, fsys_zfs*},
148434217c040ea38dc844384f6ba68d9b325906Matthew Ahrens * and do the appropriate changes. Also bump the version number in
e7437265dc2a4920c197ed4337665539d358b22cahrens * Symbolic names for the changes that caused a SPA_VERSION switch.
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * Used in the code when checking for presence or absence of a feature.
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * Feel free to define multiple symbolic names for each version if there
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * were multiple changes to on-disk structures during that version.
e7437265dc2a4920c197ed4337665539d358b22cahrens * NOTE: When checking the current SPA_VERSION in your code, be sure
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * to use spa_version() since it reports the version of the
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * last synced uberblock. Checking the in-flight version can
44cd46cadd9aab751dae6a4023c1cb5bf316d274billm * be dangerous in some cases.
cde58dbc6a23d4d38db7c8866312be83221c765fMatthew Ahrens#define SPA_VERSION_BPOBJ_ACCOUNT SPA_VERSION_3
74e7dc986c89efca1f2e4451c7a572e05e4a6e4fMatthew Ahrens#define SPA_VERSION_USED_BREAKDOWN SPA_VERSION_13
d0f3f37e7f24f68fdbd85386c60e576883622762Mark Shellenbaum#define SPA_VERSION_PASSTHROUGH_X SPA_VERSION_14
b24ab6762772a3f6a89393947930c7fa61306783Jeff Bonwick#define SPA_VERSION_ZLE_COMPRESSION SPA_VERSION_20
cb04b8739c50e3e6d12e89b790fa7b8d0d899865Mark J Musante#define SPA_VERSION_MULTI_REPLACE SPA_VERSION_28
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define SPA_VERSION_BEFORE_FEATURES SPA_VERSION_28
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define SPA_VERSION_FEATURES SPA_VERSION_5000
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden (((v) >= SPA_VERSION_INITIAL && (v) <= SPA_VERSION_BEFORE_FEATURES) || \
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden ((v) >= SPA_VERSION_FEATURES && (v) <= SPA_VERSION))
e7437265dc2a4920c197ed4337665539d358b22cahrens * ZPL version - rev'd whenever an incompatible on-disk format change
e7437265dc2a4920c197ed4337665539d358b22cahrens * occurs. This is independent of SPA/DMU/ZAP versioning. You must
e7437265dc2a4920c197ed4337665539d358b22cahrens * also update the version_table[] and help message in zfs_prop.c.
e7437265dc2a4920c197ed4337665539d358b22cahrens * When changing, be sure to teach GRUB how to read the new format!
478ed9ada0b6efe1318150a700986aa47e6a926dEric Taylor * See usr/src/grub/grub-0.97/stage2/{zfs-include/,fsys_zfs*}
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley/* Rewind request information */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_NO_REWIND 1 /* No policy - default behavior */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_NEVER_REWIND 2 /* Do not search for best txg or rewind */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_TRY_REWIND 4 /* Search for best txg, but do not rewind */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_DO_REWIND 8 /* Rewind to best txg w/in deferred frees */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_EXTREME_REWIND 16 /* Allow extreme measures to find best txg */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_REWIND_MASK 28 /* All the possible rewind bits */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin#define ZPOOL_REWIND_POLICIES 31 /* All the possible policy bits */
468c413a79615e77179e8d98f22a7e513a8135bdTim Haleytypedef struct zpool_rewind_policy {
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley uint32_t zrp_request; /* rewind behavior requested */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin uint64_t zrp_maxmeta; /* max acceptable meta-data errors */
c8ee1847e300c992c76cf25d6c165e6ccf64a113Victor Latushkin uint64_t zrp_maxdata; /* max acceptable data errors */
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The following are configuration names used in the nvlist describing a pool's
fa9e4066f08beec538e775443c5be79dd423fcabahrens * configuration.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define ZPOOL_CONFIG_SCAN_STATS "scan_stats" /* not stored on disk */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define ZPOOL_CONFIG_VDEV_STATS "vdev_stats" /* not stored on disk */
11027bc778dc4f44eabf0c8bc54260ea890b0a15Tim Haley#define ZPOOL_CONFIG_LOADED_TIME "initial_load_time"
88ecc943b4eb72f7c4fbbd8435997b85ef171fc3George Wilson#define ZPOOL_CONFIG_VDEV_CHILDREN "vdev_children"
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson#define ZPOOL_CONFIG_DDT_HISTOGRAM "ddt_histogram"
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson#define ZPOOL_CONFIG_DDT_OBJ_STATS "ddt_object_stats"
b4952e17e8858d3225793b28788278de9fe6038dGeorge Wilson#define ZPOOL_CONFIG_RESILVER_TXG "resilver_txg"
e14bb3258d05c1b1077e2db7cf77088924e56919Jeff Bonwick#define ZPOOL_CONFIG_SUSPENDED "suspended" /* not stored on disk */
e7cbe64f7a72dae5cb44f100db60ca88f3313c65gw#define ZPOOL_CONFIG_TIMESTAMP "timestamp" /* not stored on disk */
e7cbe64f7a72dae5cb44f100db60ca88f3313c65gw#define ZPOOL_CONFIG_BOOTFS "bootfs" /* not stored on disk */
4b964ada391d44b89d97e7e930e6a9a136e0a2f4George Wilson#define ZPOOL_CONFIG_MISSING_DEVICES "missing_vdevs" /* not stored on disk */
4b964ada391d44b89d97e7e930e6a9a136e0a2f4George Wilson#define ZPOOL_CONFIG_LOAD_INFO "load_info" /* not stored on disk */
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define ZPOOL_CONFIG_REWIND_INFO "rewind_info" /* not stored on disk */
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define ZPOOL_CONFIG_UNSUP_FEAT "unsup_feat" /* not stored on disk */
57221772c3fc05faba04bf48ddff45abf2bbf2bdChristopher Siden#define ZPOOL_CONFIG_ENABLED_FEAT "enabled_feat" /* not stored on disk */
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define ZPOOL_CONFIG_CAN_RDONLY "can_rdonly" /* not stored on disk */
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define ZPOOL_CONFIG_FEATURES_FOR_READ "features_for_read"
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define ZPOOL_CONFIG_FEATURE_STATS "feature_stats" /* not stored on disk */
215198a6ad15cf4832370e2f19247abeb36b951aJoe Stein#define ZPOOL_CONFIG_VDEV_TOP_ZAP "com.delphix:vdev_zap_top"
215198a6ad15cf4832370e2f19247abeb36b951aJoe Stein#define ZPOOL_CONFIG_VDEV_LEAF_ZAP "com.delphix:vdev_zap_leaf"
215198a6ad15cf4832370e2f19247abeb36b951aJoe Stein#define ZPOOL_CONFIG_HAS_PER_VDEV_ZAPS "com.delphix:has_per_vdev_zaps"
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * The persistent vdev state is stored as separate values rather than a single
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * 'vdev_state' entry. This is because a device can be in multiple states, such
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * as offline and degraded.
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley/* Rewind policy parameters */
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley#define ZPOOL_REWIND_REQUEST_TXG "rewind-request-txg"
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley#define ZPOOL_REWIND_META_THRESH "rewind-meta-thresh"
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley#define ZPOOL_REWIND_DATA_THRESH "rewind-data-thresh"
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley/* Rewind data discovered */
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley#define ZPOOL_CONFIG_LOAD_DATA_ERRORS "verify_data_errors"
468c413a79615e77179e8d98f22a7e513a8135bdTim Haley#define ZPOOL_CONFIG_REWIND_TIME "seconds_of_rewind"
fa9e4066f08beec538e775443c5be79dd423fcabahrens * This is needed in userland to report the minimum necessary device size.
2e4c998613148111f2fc5371085331ffb39122ffGeorge Wilson * Set if the fragmentation has not yet been calculated. This can happen
2e4c998613148111f2fc5371085331ffb39122ffGeorge Wilson * because the space maps have not been upgraded or the histogram feature
2e4c998613148111f2fc5371085331ffb39122ffGeorge Wilson * is not enabled.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * The location of the pool configuration repository, shared between kernel and
fa9e4066f08beec538e775443c5be79dd423fcabahrens * userland.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * vdev states are ordered from least to most healthy.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * A vdev that's CANT_OPEN or below is considered unusable.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum vdev_state {
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock VDEV_STATE_REMOVED, /* Explicitly removed from system */
fa9e4066f08beec538e775443c5be79dd423fcabahrens VDEV_STATE_CANT_OPEN, /* Tried to open, but failed */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock VDEV_STATE_FAULTED, /* External request to fault device */
fa9e4066f08beec538e775443c5be79dd423fcabahrens VDEV_STATE_DEGRADED, /* Replicated vdev with unhealthy kids */
fa9e4066f08beec538e775443c5be79dd423fcabahrens * vdev aux states. When a vdev is in the CANT_OPEN state, the aux field
fa9e4066f08beec538e775443c5be79dd423fcabahrens * of the vdev stats structure uses these constants to distinguish why.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum vdev_aux {
fa9e4066f08beec538e775443c5be79dd423fcabahrens VDEV_AUX_OPEN_FAILED, /* ldi_open_*() or vn_open() failed */
fa9e4066f08beec538e775443c5be79dd423fcabahrens VDEV_AUX_CORRUPT_DATA, /* bad label or disk contents */
fa9e4066f08beec538e775443c5be79dd423fcabahrens VDEV_AUX_NO_REPLICAS, /* insufficient number of replicas */
fa9e4066f08beec538e775443c5be79dd423fcabahrens VDEV_AUX_BAD_GUID_SUM, /* vdev guid sum doesn't match */
eaca9bbd5f5d1e4e554da4c7108e8a03c8c33481eschrock VDEV_AUX_BAD_LABEL, /* the label is OK but invalid */
eaca9bbd5f5d1e4e554da4c7108e8a03c8c33481eschrock VDEV_AUX_VERSION_NEWER, /* on-disk version is too new */
99653d4ee642c6528e88224f12409a5f23060994eschrock VDEV_AUX_VERSION_OLDER, /* on-disk version is too old */
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden VDEV_AUX_UNSUP_FEAT, /* unsupported features */
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock VDEV_AUX_SPARED, /* hot spare used in another pool */
069f55e237020c4a4907b235fc38fafc6442ce94Eric Schrock VDEV_AUX_BAD_LOG, /* cannot read log chain(s) */
1195e687f1c03c8d57417b5999578922e20a3554Mark J Musante VDEV_AUX_SPLIT_POOL /* vdev was split off into another pool */
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock * pool state. The following states are written to disk as part of the normal
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan * SPA lifecycle: ACTIVE, EXPORTED, DESTROYED, SPARE, L2CACHE. The remaining
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan * states are software abstractions used at various levels to communicate
fa94a07fd0519b8abfd871ad8fe60e6bebe1e2bbbrendan * pool state.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum pool_state {
46a2abf27af40eda17a3f97e79eda1aef4e3c3c8eschrock POOL_STATE_POTENTIALLY_ACTIVE /* Internal libzfs state */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * Scan Functions.
fa9e4066f08beec538e775443c5be79dd423fcabahrens * ZIO types. Needed to interpret vdev statistics below.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum zio_type {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * Pool statistics. Note: all fields should be 64-bit because this
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * is passed between kernel and userland as an nvlist uint64 array.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingtypedef struct pool_scan_stat {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling /* values stored on disk */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling uint64_t pss_to_process; /* total bytes to process */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling uint64_t pss_processed; /* total processed bytes */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling /* values not stored on disk */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling uint64_t pss_pass_exam; /* examined bytes per scan pass */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling uint64_t pss_pass_start; /* start time of a scan pass */
fa9e4066f08beec538e775443c5be79dd423fcabahrens * Vdev statistics. Note: all fields should be 64-bit because this
fa9e4066f08beec538e775443c5be79dd423fcabahrens * is passed between kernel and userland as an nvlist uint64 array.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef struct vdev_stat {
fa9e4066f08beec538e775443c5be79dd423fcabahrens uint64_t vs_bytes[ZIO_TYPES]; /* bytes read/written */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling uint64_t vs_scan_processed; /* scan processed bytes */
2e4c998613148111f2fc5371085331ffb39122ffGeorge Wilson uint64_t vs_fragmentation; /* device fragmentation */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson * DDT statistics. Note: all fields should be 64-bit because this
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson * is passed between kernel and userland as an nvlist uint64 array.
9eb19f4d61679ca0382def038665019234458eddGeorge Wilsontypedef struct ddt_object {
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t ddo_count; /* number of elments in ddt */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t ddo_dspace; /* size of ddt on disk */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t ddo_mspace; /* size of ddt in-core */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilsontypedef struct ddt_stat {
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t dds_dsize; /* deflated allocated size */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t dds_ref_blocks; /* referenced blocks */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t dds_ref_lsize; /* referenced lsize * refcnt */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t dds_ref_psize; /* referenced psize * refcnt */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson uint64_t dds_ref_dsize; /* referenced dsize * refcnt */
9eb19f4d61679ca0382def038665019234458eddGeorge Wilsontypedef struct ddt_histogram {
9eb19f4d61679ca0382def038665019234458eddGeorge Wilson ddt_stat_t ddh_stat[64]; /* power-of-two histogram buckets */
681d9761e8516a7dc5ab6589e2dfe717777e1123Eric Taylor/* general zvol path */
681d9761e8516a7dc5ab6589e2dfe717777e1123Eric Taylor/* expansion */
573ca77e53dd31dcaebef023e7eb41969e6896c1George Wilson#define ZVOL_PSEUDO_DEV "/devices/pseudo/zfs@0:"
681d9761e8516a7dc5ab6589e2dfe717777e1123Eric Taylor/* for dump and swap */
fa9e4066f08beec538e775443c5be79dd423fcabahrens * /dev/zfs ioctl numbers.
fa9e4066f08beec538e775443c5be79dd423fcabahrenstypedef enum zfs_ioc {
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrock * Internal SPA load state. Used by FMA diagnosis engine.
ea8dc4b6d2251b437950c0056bc626b311c73c27eschrocktypedef enum {
e9dbad6f263d5570ed7ff5443ec5b958af8c24d7eschrock * Bookmark name values.
06eeb2ad640ce72d394ac521094bed7681044408ek * The following are names used in the nvlist describing
06eeb2ad640ce72d394ac521094bed7681044408ek * the pool's history log.
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Flags for ZFS_IOC_VDEV_SET_STATE
4b964ada391d44b89d97e7e930e6a9a136e0a2f4George Wilson * Flags for ZFS_IOC_POOL_IMPORT
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * Sysevent payload members. ZFS will generate the following sysevents with the
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * given payloads:
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ESC_ZFS_RESILVER_START
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ESC_ZFS_RESILVER_END
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ESC_ZFS_POOL_DESTROY
e9103aaee0c546d4644791198c54abb03c89969eGarrett D'Amore * ESC_ZFS_POOL_REGUID
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ZFS_EV_POOL_NAME DATA_TYPE_STRING
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ZFS_EV_POOL_GUID DATA_TYPE_UINT64
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ESC_ZFS_VDEV_REMOVE
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ESC_ZFS_VDEV_CLEAR
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ESC_ZFS_VDEV_CHECK
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ZFS_EV_POOL_NAME DATA_TYPE_STRING
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ZFS_EV_POOL_GUID DATA_TYPE_UINT64
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ZFS_EV_VDEV_PATH DATA_TYPE_STRING (optional)
3d7072f8bd27709dba14f6fe336f149d25d9e207eschrock * ZFS_EV_VDEV_GUID DATA_TYPE_UINT64
fa9e4066f08beec538e775443c5be79dd423fcabahrens#endif /* _SYS_FS_ZFS_H */