xref: /rk3399_rockchip-uboot/include/zfs/dmu.h (revision 4d3c95f5ea7c737a21cd6b9c59435ee693b3f127)
1*4d3c95f5SJorgen Lundman /*
2*4d3c95f5SJorgen Lundman  *  GRUB  --  GRand Unified Bootloader
3*4d3c95f5SJorgen Lundman  *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
4*4d3c95f5SJorgen Lundman  *
5*4d3c95f5SJorgen Lundman  *  This program is free software; you can redistribute it and/or modify
6*4d3c95f5SJorgen Lundman  *  it under the terms of the GNU General Public License as published by
7*4d3c95f5SJorgen Lundman  *  the Free Software Foundation; either version 2 of the License, or
8*4d3c95f5SJorgen Lundman  *  (at your option) any later version.
9*4d3c95f5SJorgen Lundman  *
10*4d3c95f5SJorgen Lundman  *  This program is distributed in the hope that it will be useful,
11*4d3c95f5SJorgen Lundman  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12*4d3c95f5SJorgen Lundman  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*4d3c95f5SJorgen Lundman  *  GNU General Public License for more details.
14*4d3c95f5SJorgen Lundman  *
15*4d3c95f5SJorgen Lundman  *  You should have received a copy of the GNU General Public License
16*4d3c95f5SJorgen Lundman  *  along with this program; if not, write to the Free Software
17*4d3c95f5SJorgen Lundman  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*4d3c95f5SJorgen Lundman  */
19*4d3c95f5SJorgen Lundman /*
20*4d3c95f5SJorgen Lundman  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
21*4d3c95f5SJorgen Lundman  * Use is subject to license terms.
22*4d3c95f5SJorgen Lundman  */
23*4d3c95f5SJorgen Lundman 
24*4d3c95f5SJorgen Lundman #ifndef	_SYS_DMU_H
25*4d3c95f5SJorgen Lundman #define	_SYS_DMU_H
26*4d3c95f5SJorgen Lundman 
27*4d3c95f5SJorgen Lundman /*
28*4d3c95f5SJorgen Lundman  * This file describes the interface that the DMU provides for its
29*4d3c95f5SJorgen Lundman  * consumers.
30*4d3c95f5SJorgen Lundman  *
31*4d3c95f5SJorgen Lundman  * The DMU also interacts with the SPA.  That interface is described in
32*4d3c95f5SJorgen Lundman  * dmu_spa.h.
33*4d3c95f5SJorgen Lundman  */
34*4d3c95f5SJorgen Lundman typedef enum dmu_object_type {
35*4d3c95f5SJorgen Lundman 	DMU_OT_NONE,
36*4d3c95f5SJorgen Lundman 	/* general: */
37*4d3c95f5SJorgen Lundman 	DMU_OT_OBJECT_DIRECTORY,	/* ZAP */
38*4d3c95f5SJorgen Lundman 	DMU_OT_OBJECT_ARRAY,		/* UINT64 */
39*4d3c95f5SJorgen Lundman 	DMU_OT_PACKED_NVLIST,		/* UINT8 (XDR by nvlist_pack/unpack) */
40*4d3c95f5SJorgen Lundman 	DMU_OT_PACKED_NVLIST_SIZE,	/* UINT64 */
41*4d3c95f5SJorgen Lundman 	DMU_OT_BPLIST,			/* UINT64 */
42*4d3c95f5SJorgen Lundman 	DMU_OT_BPLIST_HDR,		/* UINT64 */
43*4d3c95f5SJorgen Lundman 	/* spa: */
44*4d3c95f5SJorgen Lundman 	DMU_OT_SPACE_MAP_HEADER,	/* UINT64 */
45*4d3c95f5SJorgen Lundman 	DMU_OT_SPACE_MAP,		/* UINT64 */
46*4d3c95f5SJorgen Lundman 	/* zil: */
47*4d3c95f5SJorgen Lundman 	DMU_OT_INTENT_LOG,		/* UINT64 */
48*4d3c95f5SJorgen Lundman 	/* dmu: */
49*4d3c95f5SJorgen Lundman 	DMU_OT_DNODE,			/* DNODE */
50*4d3c95f5SJorgen Lundman 	DMU_OT_OBJSET,			/* OBJSET */
51*4d3c95f5SJorgen Lundman 	/* dsl: */
52*4d3c95f5SJorgen Lundman 	DMU_OT_DSL_DIR,			/* UINT64 */
53*4d3c95f5SJorgen Lundman 	DMU_OT_DSL_DIR_CHILD_MAP,	/* ZAP */
54*4d3c95f5SJorgen Lundman 	DMU_OT_DSL_DS_SNAP_MAP,		/* ZAP */
55*4d3c95f5SJorgen Lundman 	DMU_OT_DSL_PROPS,		/* ZAP */
56*4d3c95f5SJorgen Lundman 	DMU_OT_DSL_DATASET,		/* UINT64 */
57*4d3c95f5SJorgen Lundman 	/* zpl: */
58*4d3c95f5SJorgen Lundman 	DMU_OT_ZNODE,			/* ZNODE */
59*4d3c95f5SJorgen Lundman 	DMU_OT_OLDACL,			/* OLD ACL */
60*4d3c95f5SJorgen Lundman 	DMU_OT_PLAIN_FILE_CONTENTS,	/* UINT8 */
61*4d3c95f5SJorgen Lundman 	DMU_OT_DIRECTORY_CONTENTS,	/* ZAP */
62*4d3c95f5SJorgen Lundman 	DMU_OT_MASTER_NODE,		/* ZAP */
63*4d3c95f5SJorgen Lundman 	DMU_OT_UNLINKED_SET,		/* ZAP */
64*4d3c95f5SJorgen Lundman 	/* zvol: */
65*4d3c95f5SJorgen Lundman 	DMU_OT_ZVOL,			/* UINT8 */
66*4d3c95f5SJorgen Lundman 	DMU_OT_ZVOL_PROP,		/* ZAP */
67*4d3c95f5SJorgen Lundman 	/* other; for testing only! */
68*4d3c95f5SJorgen Lundman 	DMU_OT_PLAIN_OTHER,		/* UINT8 */
69*4d3c95f5SJorgen Lundman 	DMU_OT_UINT64_OTHER,		/* UINT64 */
70*4d3c95f5SJorgen Lundman 	DMU_OT_ZAP_OTHER,		/* ZAP */
71*4d3c95f5SJorgen Lundman 	/* new object types: */
72*4d3c95f5SJorgen Lundman 	DMU_OT_ERROR_LOG,		/* ZAP */
73*4d3c95f5SJorgen Lundman 	DMU_OT_SPA_HISTORY,		/* UINT8 */
74*4d3c95f5SJorgen Lundman 	DMU_OT_SPA_HISTORY_OFFSETS,	/* spa_his_phys_t */
75*4d3c95f5SJorgen Lundman 	DMU_OT_POOL_PROPS,		/* ZAP */
76*4d3c95f5SJorgen Lundman 	DMU_OT_DSL_PERMS,		/* ZAP */
77*4d3c95f5SJorgen Lundman 	DMU_OT_ACL,			/* ACL */
78*4d3c95f5SJorgen Lundman 	DMU_OT_SYSACL,			/* SYSACL */
79*4d3c95f5SJorgen Lundman 	DMU_OT_FUID,			/* FUID table (Packed NVLIST UINT8) */
80*4d3c95f5SJorgen Lundman 	DMU_OT_FUID_SIZE,		/* FUID table size UINT64 */
81*4d3c95f5SJorgen Lundman 	DMU_OT_NEXT_CLONES,		/* ZAP */
82*4d3c95f5SJorgen Lundman 	DMU_OT_SCRUB_QUEUE,		/* ZAP */
83*4d3c95f5SJorgen Lundman 	DMU_OT_USERGROUP_USED,		/* ZAP */
84*4d3c95f5SJorgen Lundman 	DMU_OT_USERGROUP_QUOTA,		/* ZAP */
85*4d3c95f5SJorgen Lundman 	DMU_OT_USERREFS,		/* ZAP */
86*4d3c95f5SJorgen Lundman 	DMU_OT_DDT_ZAP,			/* ZAP */
87*4d3c95f5SJorgen Lundman 	DMU_OT_DDT_STATS,		/* ZAP */
88*4d3c95f5SJorgen Lundman 	DMU_OT_SA,			/* System attr */
89*4d3c95f5SJorgen Lundman 	DMU_OT_SA_MASTER_NODE,		/* ZAP */
90*4d3c95f5SJorgen Lundman 	DMU_OT_SA_ATTR_REGISTRATION,	/* ZAP */
91*4d3c95f5SJorgen Lundman 	DMU_OT_SA_ATTR_LAYOUTS,		/* ZAP */
92*4d3c95f5SJorgen Lundman 	DMU_OT_NUMTYPES
93*4d3c95f5SJorgen Lundman } dmu_object_type_t;
94*4d3c95f5SJorgen Lundman 
95*4d3c95f5SJorgen Lundman typedef enum dmu_objset_type {
96*4d3c95f5SJorgen Lundman 	DMU_OST_NONE,
97*4d3c95f5SJorgen Lundman 	DMU_OST_META,
98*4d3c95f5SJorgen Lundman 	DMU_OST_ZFS,
99*4d3c95f5SJorgen Lundman 	DMU_OST_ZVOL,
100*4d3c95f5SJorgen Lundman 	DMU_OST_OTHER,			/* For testing only! */
101*4d3c95f5SJorgen Lundman 	DMU_OST_ANY,			/* Be careful! */
102*4d3c95f5SJorgen Lundman 	DMU_OST_NUMTYPES
103*4d3c95f5SJorgen Lundman } dmu_objset_type_t;
104*4d3c95f5SJorgen Lundman 
105*4d3c95f5SJorgen Lundman /*
106*4d3c95f5SJorgen Lundman  * The names of zap entries in the DIRECTORY_OBJECT of the MOS.
107*4d3c95f5SJorgen Lundman  */
108*4d3c95f5SJorgen Lundman #define	DMU_POOL_DIRECTORY_OBJECT	1
109*4d3c95f5SJorgen Lundman #define	DMU_POOL_CONFIG			"config"
110*4d3c95f5SJorgen Lundman #define	DMU_POOL_ROOT_DATASET		"root_dataset"
111*4d3c95f5SJorgen Lundman #define	DMU_POOL_SYNC_BPLIST		"sync_bplist"
112*4d3c95f5SJorgen Lundman #define	DMU_POOL_ERRLOG_SCRUB		"errlog_scrub"
113*4d3c95f5SJorgen Lundman #define	DMU_POOL_ERRLOG_LAST		"errlog_last"
114*4d3c95f5SJorgen Lundman #define	DMU_POOL_SPARES			"spares"
115*4d3c95f5SJorgen Lundman #define	DMU_POOL_DEFLATE		"deflate"
116*4d3c95f5SJorgen Lundman #define	DMU_POOL_HISTORY		"history"
117*4d3c95f5SJorgen Lundman #define	DMU_POOL_PROPS			"pool_props"
118*4d3c95f5SJorgen Lundman #define	DMU_POOL_L2CACHE		"l2cache"
119*4d3c95f5SJorgen Lundman 
120*4d3c95f5SJorgen Lundman #endif	/* _SYS_DMU_H */
121