usr/src/grub/grub-0.97/stage2/zfs-include/zfs.h
author Christopher Siden <chris.siden@delphix.com>
Mon, 21 May 2012 12:11:39 -0700
changeset 13700 2889e2596bd6
parent 13049 2511753a6599
permissions -rw-r--r--
2619 asynchronous destruction of ZFS file systems 2747 SPA versioning with zfs feature flags Reviewed by: Matt Ahrens <[email protected]> Reviewed by: George Wilson <[email protected]> Reviewed by: Richard Lowe <[email protected]> Reviewed by: Dan Kruchinin <[email protected]> Approved by: Eric Schrock <[email protected]>
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     1
/*
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     2
 *  GRUB  --  GRand Unified Bootloader
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     3
 *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     4
 *
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     5
 *  This program is free software; you can redistribute it and/or modify
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     6
 *  it under the terms of the GNU General Public License as published by
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     7
 *  the Free Software Foundation; either version 2 of the License, or
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     8
 *  (at your option) any later version.
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
     9
 *
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    10
 *  This program is distributed in the hope that it will be useful,
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    13
 *  GNU General Public License for more details.
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    14
 *
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    15
 *  You should have received a copy of the GNU General Public License
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    16
 *  along with this program; if not, write to the Free Software
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    17
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    18
 */
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    19
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    20
/*
12296
7cf402a7f374 6675946 'zpool status' should show the progress of resilvering for individual disk.
Lin Ling <Lin.Ling@Sun.COM>
parents: 11935
diff changeset
    21
 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    22
 * Copyright (c) 2012 by Delphix. All rights reserved.
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    23
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    24
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    25
#ifndef	_SYS_FS_ZFS_H
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    26
#define	_SYS_FS_ZFS_H
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    27
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    28
/*
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    29
 * On-disk version number.
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    30
 */
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    31
#define	SPA_VERSION_INITIAL		1ULL
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    32
#define	SPA_VERSION_BEFORE_FEATURES	28ULL
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    33
#define	SPA_VERSION			5000ULL
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    34
#define	SPA_VERSION_FEATURES		5000ULL
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    35
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    36
#define	SPA_VERSION_IS_SUPPORTED(v) \
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    37
	(((v) >= SPA_VERSION_INITIAL && (v) <= SPA_VERSION_BEFORE_FEATURES) || \
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    38
	((v) >= SPA_VERSION_FEATURES && (v) <= SPA_VERSION))
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    39
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    40
/*
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    41
 * The following are configuration names used in the nvlist describing a pool's
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    42
 * configuration.
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    43
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    44
#define	ZPOOL_CONFIG_VERSION		"version"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    45
#define	ZPOOL_CONFIG_POOL_NAME		"name"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    46
#define	ZPOOL_CONFIG_POOL_STATE		"state"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    47
#define	ZPOOL_CONFIG_POOL_TXG		"txg"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    48
#define	ZPOOL_CONFIG_POOL_GUID		"pool_guid"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    49
#define	ZPOOL_CONFIG_CREATE_TXG		"create_txg"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    50
#define	ZPOOL_CONFIG_TOP_GUID		"top_guid"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    51
#define	ZPOOL_CONFIG_VDEV_TREE		"vdev_tree"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    52
#define	ZPOOL_CONFIG_TYPE		"type"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    53
#define	ZPOOL_CONFIG_CHILDREN		"children"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    54
#define	ZPOOL_CONFIG_ID			"id"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    55
#define	ZPOOL_CONFIG_GUID		"guid"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    56
#define	ZPOOL_CONFIG_PATH		"path"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    57
#define	ZPOOL_CONFIG_DEVID		"devid"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    58
#define	ZPOOL_CONFIG_METASLAB_ARRAY	"metaslab_array"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    59
#define	ZPOOL_CONFIG_METASLAB_SHIFT	"metaslab_shift"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    60
#define	ZPOOL_CONFIG_ASHIFT		"ashift"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    61
#define	ZPOOL_CONFIG_ASIZE		"asize"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    62
#define	ZPOOL_CONFIG_DTL		"DTL"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    63
#define	ZPOOL_CONFIG_STATS		"stats"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    64
#define	ZPOOL_CONFIG_WHOLE_DISK		"whole_disk"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    65
#define	ZPOOL_CONFIG_ERRCOUNT		"error_count"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    66
#define	ZPOOL_CONFIG_NOT_PRESENT	"not_present"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    67
#define	ZPOOL_CONFIG_SPARES		"spares"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    68
#define	ZPOOL_CONFIG_IS_SPARE		"is_spare"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    69
#define	ZPOOL_CONFIG_NPARITY		"nparity"
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    70
#define	ZPOOL_CONFIG_PHYS_PATH		"phys_path"
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5331
diff changeset
    71
#define	ZPOOL_CONFIG_L2CACHE		"l2cache"
10594
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10242
diff changeset
    72
#define	ZPOOL_CONFIG_HOLE_ARRAY		"hole_array"
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10242
diff changeset
    73
#define	ZPOOL_CONFIG_VDEV_CHILDREN	"vdev_children"
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10242
diff changeset
    74
#define	ZPOOL_CONFIG_IS_HOLE		"is_hole"
11149
8bad7424e2c2 6903731 need userland dedup stats
George Wilson <George.Wilson@Sun.COM>
parents: 11022
diff changeset
    75
#define	ZPOOL_CONFIG_DDT_HISTOGRAM	"ddt_histogram"
8bad7424e2c2 6903731 need userland dedup stats
George Wilson <George.Wilson@Sun.COM>
parents: 11022
diff changeset
    76
#define	ZPOOL_CONFIG_DDT_OBJ_STATS	"ddt_object_stats"
8bad7424e2c2 6903731 need userland dedup stats
George Wilson <George.Wilson@Sun.COM>
parents: 11022
diff changeset
    77
#define	ZPOOL_CONFIG_DDT_STATS		"ddt_stats"
13700
2889e2596bd6 2619 asynchronous destruction of ZFS file systems
Christopher Siden <chris.siden@delphix.com>
parents: 13049
diff changeset
    78
#define	ZPOOL_CONFIG_FEATURES_FOR_READ	"features_for_read"
6423
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    79
/*
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    80
 * The persistent vdev state is stored as separate values rather than a single
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    81
 * 'vdev_state' entry.  This is because a device can be in multiple states, such
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    82
 * as offline and degraded.
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    83
 */
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    84
#define	ZPOOL_CONFIG_OFFLINE		"offline"
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    85
#define	ZPOOL_CONFIG_FAULTED		"faulted"
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    86
#define	ZPOOL_CONFIG_DEGRADED		"degraded"
437422a29d3a PSARC 2006/370 ZFS Boot Support
gw25295
parents: 5450
diff changeset
    87
#define	ZPOOL_CONFIG_REMOVED		"removed"
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    88
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    89
#define	VDEV_TYPE_ROOT			"root"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    90
#define	VDEV_TYPE_MIRROR		"mirror"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    91
#define	VDEV_TYPE_REPLACING		"replacing"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    92
#define	VDEV_TYPE_RAIDZ			"raidz"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    93
#define	VDEV_TYPE_DISK			"disk"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    94
#define	VDEV_TYPE_FILE			"file"
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    95
#define	VDEV_TYPE_MISSING		"missing"
10594
986cb68d2347 6574286 removing a slog doesn't work
George Wilson <George.Wilson@Sun.COM>
parents: 10242
diff changeset
    96
#define	VDEV_TYPE_HOLE			"hole"
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    97
#define	VDEV_TYPE_SPARE			"spare"
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5331
diff changeset
    98
#define	VDEV_TYPE_L2CACHE		"l2cache"
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
    99
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   100
/*
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   101
 * pool state.  The following states are written to disk as part of the normal
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5331
diff changeset
   102
 * SPA lifecycle: ACTIVE, EXPORTED, DESTROYED, SPARE, L2CACHE.  The remaining
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5331
diff changeset
   103
 * states are software abstractions used at various levels to communicate pool
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5331
diff changeset
   104
 * state.
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   105
 */
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   106
typedef enum pool_state {
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   107
	POOL_STATE_ACTIVE = 0,		/* In active use		*/
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   108
	POOL_STATE_EXPORTED,		/* Explicitly exported		*/
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   109
	POOL_STATE_DESTROYED,		/* Explicitly destroyed		*/
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   110
	POOL_STATE_SPARE,		/* Reserved for hot spare use	*/
5450
b25030891c44 PSARC 2007/618 ZFS L2ARC
brendan
parents: 5331
diff changeset
   111
	POOL_STATE_L2CACHE,		/* Level 2 ARC device		*/
3912
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   112
	POOL_STATE_UNINITIALIZED,	/* Internal spa_t state		*/
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   113
	POOL_STATE_UNAVAIL,		/* Internal libzfs state	*/
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   114
	POOL_STATE_POTENTIALLY_ACTIVE	/* Internal libzfs state	*/
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   115
} pool_state_t;
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   116
f6891a60bd72 PSARC 2007/083 ZFS bootable datasets
lling
parents:
diff changeset
   117
#endif	/* _SYS_FS_ZFS_H */