Blame view

bootloader/u-boot_2015_04/include/zfs/zfs.h 3.76 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  /*
   *  GRUB  --  GRand Unified Bootloader
   *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
   *
   * SPDX-License-Identifier:	GPL-2.0+
   */
  /*
   * 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 */