83d290c56f
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <trini@konsulko.com>
110 lines
3.8 KiB
C
110 lines
3.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* GRUB -- GRand Unified Bootloader
|
|
* Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
|
|
*/
|
|
/*
|
|
* Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
|
|
*/
|
|
|
|
#ifndef GRUB_ZFS_HEADER
|
|
#define GRUB_ZFS_HEADER 1
|
|
|
|
|
|
/*
|
|
* On-disk version number.
|
|
*/
|
|
#define SPA_VERSION 28ULL
|
|
|
|
/*
|
|
* The following are configuration names used in the nvlist describing a pool's
|
|
* configuration.
|
|
*/
|
|
#define ZPOOL_CONFIG_VERSION "version"
|
|
#define ZPOOL_CONFIG_POOL_NAME "name"
|
|
#define ZPOOL_CONFIG_POOL_STATE "state"
|
|
#define ZPOOL_CONFIG_POOL_TXG "txg"
|
|
#define ZPOOL_CONFIG_POOL_GUID "pool_guid"
|
|
#define ZPOOL_CONFIG_CREATE_TXG "create_txg"
|
|
#define ZPOOL_CONFIG_TOP_GUID "top_guid"
|
|
#define ZPOOL_CONFIG_VDEV_TREE "vdev_tree"
|
|
#define ZPOOL_CONFIG_TYPE "type"
|
|
#define ZPOOL_CONFIG_CHILDREN "children"
|
|
#define ZPOOL_CONFIG_ID "id"
|
|
#define ZPOOL_CONFIG_GUID "guid"
|
|
#define ZPOOL_CONFIG_PATH "path"
|
|
#define ZPOOL_CONFIG_DEVID "devid"
|
|
#define ZPOOL_CONFIG_METASLAB_ARRAY "metaslab_array"
|
|
#define ZPOOL_CONFIG_METASLAB_SHIFT "metaslab_shift"
|
|
#define ZPOOL_CONFIG_ASHIFT "ashift"
|
|
#define ZPOOL_CONFIG_ASIZE "asize"
|
|
#define ZPOOL_CONFIG_DTL "DTL"
|
|
#define ZPOOL_CONFIG_STATS "stats"
|
|
#define ZPOOL_CONFIG_WHOLE_DISK "whole_disk"
|
|
#define ZPOOL_CONFIG_ERRCOUNT "error_count"
|
|
#define ZPOOL_CONFIG_NOT_PRESENT "not_present"
|
|
#define ZPOOL_CONFIG_SPARES "spares"
|
|
#define ZPOOL_CONFIG_IS_SPARE "is_spare"
|
|
#define ZPOOL_CONFIG_NPARITY "nparity"
|
|
#define ZPOOL_CONFIG_PHYS_PATH "phys_path"
|
|
#define ZPOOL_CONFIG_L2CACHE "l2cache"
|
|
#define ZPOOL_CONFIG_HOLE_ARRAY "hole_array"
|
|
#define ZPOOL_CONFIG_VDEV_CHILDREN "vdev_children"
|
|
#define ZPOOL_CONFIG_IS_HOLE "is_hole"
|
|
#define ZPOOL_CONFIG_DDT_HISTOGRAM "ddt_histogram"
|
|
#define ZPOOL_CONFIG_DDT_OBJ_STATS "ddt_object_stats"
|
|
#define ZPOOL_CONFIG_DDT_STATS "ddt_stats"
|
|
/*
|
|
* The persistent vdev state is stored as separate values rather than a single
|
|
* 'vdev_state' entry. This is because a device can be in multiple states, such
|
|
* as offline and degraded.
|
|
*/
|
|
#define ZPOOL_CONFIG_OFFLINE "offline"
|
|
#define ZPOOL_CONFIG_FAULTED "faulted"
|
|
#define ZPOOL_CONFIG_DEGRADED "degraded"
|
|
#define ZPOOL_CONFIG_REMOVED "removed"
|
|
|
|
#define VDEV_TYPE_ROOT "root"
|
|
#define VDEV_TYPE_MIRROR "mirror"
|
|
#define VDEV_TYPE_REPLACING "replacing"
|
|
#define VDEV_TYPE_RAIDZ "raidz"
|
|
#define VDEV_TYPE_DISK "disk"
|
|
#define VDEV_TYPE_FILE "file"
|
|
#define VDEV_TYPE_MISSING "missing"
|
|
#define VDEV_TYPE_HOLE "hole"
|
|
#define VDEV_TYPE_SPARE "spare"
|
|
#define VDEV_TYPE_L2CACHE "l2cache"
|
|
|
|
/*
|
|
* pool state. The following states are written to disk as part of the normal
|
|
* SPA lifecycle: ACTIVE, EXPORTED, DESTROYED, SPARE, L2CACHE. The remaining
|
|
* states are software abstractions used at various levels to communicate pool
|
|
* state.
|
|
*/
|
|
typedef enum pool_state {
|
|
POOL_STATE_ACTIVE = 0, /* In active use */
|
|
POOL_STATE_EXPORTED, /* Explicitly exported */
|
|
POOL_STATE_DESTROYED, /* Explicitly destroyed */
|
|
POOL_STATE_SPARE, /* Reserved for hot spare use */
|
|
POOL_STATE_L2CACHE, /* Level 2 ARC device */
|
|
POOL_STATE_UNINITIALIZED, /* Internal spa_t state */
|
|
POOL_STATE_UNAVAIL, /* Internal libzfs state */
|
|
POOL_STATE_POTENTIALLY_ACTIVE /* Internal libzfs state */
|
|
} pool_state_t;
|
|
|
|
struct zfs_data;
|
|
|
|
int zfs_fetch_nvlist(device_t dev, char **nvlist);
|
|
int zfs_getmdnobj(device_t dev, const char *fsfilename,
|
|
uint64_t *mdnobj);
|
|
|
|
char *zfs_nvlist_lookup_string(char *nvlist, char *name);
|
|
char *zfs_nvlist_lookup_nvlist(char *nvlist, char *name);
|
|
int zfs_nvlist_lookup_uint64(char *nvlist, char *name,
|
|
uint64_t *out);
|
|
char *zfs_nvlist_lookup_nvlist_array(char *nvlist, char *name,
|
|
size_t index);
|
|
int zfs_nvlist_lookup_nvlist_array_get_nelm(char *nvlist, char *name);
|
|
|
|
#endif /* ! GRUB_ZFS_HEADER */
|