xref: /OK3568_Linux_fs/u-boot/include/zfs/dmu.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  *  GRUB  --  GRand Unified Bootloader
3*4882a593Smuzhiyun  *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun /*
8*4882a593Smuzhiyun  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
9*4882a593Smuzhiyun  * Use is subject to license terms.
10*4882a593Smuzhiyun  */
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #ifndef	_SYS_DMU_H
13*4882a593Smuzhiyun #define	_SYS_DMU_H
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun /*
16*4882a593Smuzhiyun  * This file describes the interface that the DMU provides for its
17*4882a593Smuzhiyun  * consumers.
18*4882a593Smuzhiyun  *
19*4882a593Smuzhiyun  * The DMU also interacts with the SPA.  That interface is described in
20*4882a593Smuzhiyun  * dmu_spa.h.
21*4882a593Smuzhiyun  */
22*4882a593Smuzhiyun typedef enum dmu_object_type {
23*4882a593Smuzhiyun 	DMU_OT_NONE,
24*4882a593Smuzhiyun 	/* general: */
25*4882a593Smuzhiyun 	DMU_OT_OBJECT_DIRECTORY,	/* ZAP */
26*4882a593Smuzhiyun 	DMU_OT_OBJECT_ARRAY,		/* UINT64 */
27*4882a593Smuzhiyun 	DMU_OT_PACKED_NVLIST,		/* UINT8 (XDR by nvlist_pack/unpack) */
28*4882a593Smuzhiyun 	DMU_OT_PACKED_NVLIST_SIZE,	/* UINT64 */
29*4882a593Smuzhiyun 	DMU_OT_BPLIST,			/* UINT64 */
30*4882a593Smuzhiyun 	DMU_OT_BPLIST_HDR,		/* UINT64 */
31*4882a593Smuzhiyun 	/* spa: */
32*4882a593Smuzhiyun 	DMU_OT_SPACE_MAP_HEADER,	/* UINT64 */
33*4882a593Smuzhiyun 	DMU_OT_SPACE_MAP,		/* UINT64 */
34*4882a593Smuzhiyun 	/* zil: */
35*4882a593Smuzhiyun 	DMU_OT_INTENT_LOG,		/* UINT64 */
36*4882a593Smuzhiyun 	/* dmu: */
37*4882a593Smuzhiyun 	DMU_OT_DNODE,			/* DNODE */
38*4882a593Smuzhiyun 	DMU_OT_OBJSET,			/* OBJSET */
39*4882a593Smuzhiyun 	/* dsl: */
40*4882a593Smuzhiyun 	DMU_OT_DSL_DIR,			/* UINT64 */
41*4882a593Smuzhiyun 	DMU_OT_DSL_DIR_CHILD_MAP,	/* ZAP */
42*4882a593Smuzhiyun 	DMU_OT_DSL_DS_SNAP_MAP,		/* ZAP */
43*4882a593Smuzhiyun 	DMU_OT_DSL_PROPS,		/* ZAP */
44*4882a593Smuzhiyun 	DMU_OT_DSL_DATASET,		/* UINT64 */
45*4882a593Smuzhiyun 	/* zpl: */
46*4882a593Smuzhiyun 	DMU_OT_ZNODE,			/* ZNODE */
47*4882a593Smuzhiyun 	DMU_OT_OLDACL,			/* OLD ACL */
48*4882a593Smuzhiyun 	DMU_OT_PLAIN_FILE_CONTENTS,	/* UINT8 */
49*4882a593Smuzhiyun 	DMU_OT_DIRECTORY_CONTENTS,	/* ZAP */
50*4882a593Smuzhiyun 	DMU_OT_MASTER_NODE,		/* ZAP */
51*4882a593Smuzhiyun 	DMU_OT_UNLINKED_SET,		/* ZAP */
52*4882a593Smuzhiyun 	/* zvol: */
53*4882a593Smuzhiyun 	DMU_OT_ZVOL,			/* UINT8 */
54*4882a593Smuzhiyun 	DMU_OT_ZVOL_PROP,		/* ZAP */
55*4882a593Smuzhiyun 	/* other; for testing only! */
56*4882a593Smuzhiyun 	DMU_OT_PLAIN_OTHER,		/* UINT8 */
57*4882a593Smuzhiyun 	DMU_OT_UINT64_OTHER,		/* UINT64 */
58*4882a593Smuzhiyun 	DMU_OT_ZAP_OTHER,		/* ZAP */
59*4882a593Smuzhiyun 	/* new object types: */
60*4882a593Smuzhiyun 	DMU_OT_ERROR_LOG,		/* ZAP */
61*4882a593Smuzhiyun 	DMU_OT_SPA_HISTORY,		/* UINT8 */
62*4882a593Smuzhiyun 	DMU_OT_SPA_HISTORY_OFFSETS,	/* spa_his_phys_t */
63*4882a593Smuzhiyun 	DMU_OT_POOL_PROPS,		/* ZAP */
64*4882a593Smuzhiyun 	DMU_OT_DSL_PERMS,		/* ZAP */
65*4882a593Smuzhiyun 	DMU_OT_ACL,			/* ACL */
66*4882a593Smuzhiyun 	DMU_OT_SYSACL,			/* SYSACL */
67*4882a593Smuzhiyun 	DMU_OT_FUID,			/* FUID table (Packed NVLIST UINT8) */
68*4882a593Smuzhiyun 	DMU_OT_FUID_SIZE,		/* FUID table size UINT64 */
69*4882a593Smuzhiyun 	DMU_OT_NEXT_CLONES,		/* ZAP */
70*4882a593Smuzhiyun 	DMU_OT_SCRUB_QUEUE,		/* ZAP */
71*4882a593Smuzhiyun 	DMU_OT_USERGROUP_USED,		/* ZAP */
72*4882a593Smuzhiyun 	DMU_OT_USERGROUP_QUOTA,		/* ZAP */
73*4882a593Smuzhiyun 	DMU_OT_USERREFS,		/* ZAP */
74*4882a593Smuzhiyun 	DMU_OT_DDT_ZAP,			/* ZAP */
75*4882a593Smuzhiyun 	DMU_OT_DDT_STATS,		/* ZAP */
76*4882a593Smuzhiyun 	DMU_OT_SA,			/* System attr */
77*4882a593Smuzhiyun 	DMU_OT_SA_MASTER_NODE,		/* ZAP */
78*4882a593Smuzhiyun 	DMU_OT_SA_ATTR_REGISTRATION,	/* ZAP */
79*4882a593Smuzhiyun 	DMU_OT_SA_ATTR_LAYOUTS,		/* ZAP */
80*4882a593Smuzhiyun 	DMU_OT_NUMTYPES
81*4882a593Smuzhiyun } dmu_object_type_t;
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun typedef enum dmu_objset_type {
84*4882a593Smuzhiyun 	DMU_OST_NONE,
85*4882a593Smuzhiyun 	DMU_OST_META,
86*4882a593Smuzhiyun 	DMU_OST_ZFS,
87*4882a593Smuzhiyun 	DMU_OST_ZVOL,
88*4882a593Smuzhiyun 	DMU_OST_OTHER,			/* For testing only! */
89*4882a593Smuzhiyun 	DMU_OST_ANY,			/* Be careful! */
90*4882a593Smuzhiyun 	DMU_OST_NUMTYPES
91*4882a593Smuzhiyun } dmu_objset_type_t;
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun /*
94*4882a593Smuzhiyun  * The names of zap entries in the DIRECTORY_OBJECT of the MOS.
95*4882a593Smuzhiyun  */
96*4882a593Smuzhiyun #define	DMU_POOL_DIRECTORY_OBJECT	1
97*4882a593Smuzhiyun #define	DMU_POOL_CONFIG			"config"
98*4882a593Smuzhiyun #define	DMU_POOL_ROOT_DATASET		"root_dataset"
99*4882a593Smuzhiyun #define	DMU_POOL_SYNC_BPLIST		"sync_bplist"
100*4882a593Smuzhiyun #define	DMU_POOL_ERRLOG_SCRUB		"errlog_scrub"
101*4882a593Smuzhiyun #define	DMU_POOL_ERRLOG_LAST		"errlog_last"
102*4882a593Smuzhiyun #define	DMU_POOL_SPARES			"spares"
103*4882a593Smuzhiyun #define	DMU_POOL_DEFLATE		"deflate"
104*4882a593Smuzhiyun #define	DMU_POOL_HISTORY		"history"
105*4882a593Smuzhiyun #define	DMU_POOL_PROPS			"pool_props"
106*4882a593Smuzhiyun #define	DMU_POOL_L2CACHE		"l2cache"
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #endif	/* _SYS_DMU_H */
109