xref: /openbmc/u-boot/include/zfs/dmu.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
24d3c95f5SJorgen Lundman /*
34d3c95f5SJorgen Lundman  *  GRUB  --  GRand Unified Bootloader
44d3c95f5SJorgen Lundman  *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
54d3c95f5SJorgen Lundman  */
64d3c95f5SJorgen Lundman /*
74d3c95f5SJorgen Lundman  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
84d3c95f5SJorgen Lundman  * Use is subject to license terms.
94d3c95f5SJorgen Lundman  */
104d3c95f5SJorgen Lundman 
114d3c95f5SJorgen Lundman #ifndef	_SYS_DMU_H
124d3c95f5SJorgen Lundman #define	_SYS_DMU_H
134d3c95f5SJorgen Lundman 
144d3c95f5SJorgen Lundman /*
154d3c95f5SJorgen Lundman  * This file describes the interface that the DMU provides for its
164d3c95f5SJorgen Lundman  * consumers.
174d3c95f5SJorgen Lundman  *
184d3c95f5SJorgen Lundman  * The DMU also interacts with the SPA.  That interface is described in
194d3c95f5SJorgen Lundman  * dmu_spa.h.
204d3c95f5SJorgen Lundman  */
214d3c95f5SJorgen Lundman typedef enum dmu_object_type {
224d3c95f5SJorgen Lundman 	DMU_OT_NONE,
234d3c95f5SJorgen Lundman 	/* general: */
244d3c95f5SJorgen Lundman 	DMU_OT_OBJECT_DIRECTORY,	/* ZAP */
254d3c95f5SJorgen Lundman 	DMU_OT_OBJECT_ARRAY,		/* UINT64 */
264d3c95f5SJorgen Lundman 	DMU_OT_PACKED_NVLIST,		/* UINT8 (XDR by nvlist_pack/unpack) */
274d3c95f5SJorgen Lundman 	DMU_OT_PACKED_NVLIST_SIZE,	/* UINT64 */
284d3c95f5SJorgen Lundman 	DMU_OT_BPLIST,			/* UINT64 */
294d3c95f5SJorgen Lundman 	DMU_OT_BPLIST_HDR,		/* UINT64 */
304d3c95f5SJorgen Lundman 	/* spa: */
314d3c95f5SJorgen Lundman 	DMU_OT_SPACE_MAP_HEADER,	/* UINT64 */
324d3c95f5SJorgen Lundman 	DMU_OT_SPACE_MAP,		/* UINT64 */
334d3c95f5SJorgen Lundman 	/* zil: */
344d3c95f5SJorgen Lundman 	DMU_OT_INTENT_LOG,		/* UINT64 */
354d3c95f5SJorgen Lundman 	/* dmu: */
364d3c95f5SJorgen Lundman 	DMU_OT_DNODE,			/* DNODE */
374d3c95f5SJorgen Lundman 	DMU_OT_OBJSET,			/* OBJSET */
384d3c95f5SJorgen Lundman 	/* dsl: */
394d3c95f5SJorgen Lundman 	DMU_OT_DSL_DIR,			/* UINT64 */
404d3c95f5SJorgen Lundman 	DMU_OT_DSL_DIR_CHILD_MAP,	/* ZAP */
414d3c95f5SJorgen Lundman 	DMU_OT_DSL_DS_SNAP_MAP,		/* ZAP */
424d3c95f5SJorgen Lundman 	DMU_OT_DSL_PROPS,		/* ZAP */
434d3c95f5SJorgen Lundman 	DMU_OT_DSL_DATASET,		/* UINT64 */
444d3c95f5SJorgen Lundman 	/* zpl: */
454d3c95f5SJorgen Lundman 	DMU_OT_ZNODE,			/* ZNODE */
464d3c95f5SJorgen Lundman 	DMU_OT_OLDACL,			/* OLD ACL */
474d3c95f5SJorgen Lundman 	DMU_OT_PLAIN_FILE_CONTENTS,	/* UINT8 */
484d3c95f5SJorgen Lundman 	DMU_OT_DIRECTORY_CONTENTS,	/* ZAP */
494d3c95f5SJorgen Lundman 	DMU_OT_MASTER_NODE,		/* ZAP */
504d3c95f5SJorgen Lundman 	DMU_OT_UNLINKED_SET,		/* ZAP */
514d3c95f5SJorgen Lundman 	/* zvol: */
524d3c95f5SJorgen Lundman 	DMU_OT_ZVOL,			/* UINT8 */
534d3c95f5SJorgen Lundman 	DMU_OT_ZVOL_PROP,		/* ZAP */
544d3c95f5SJorgen Lundman 	/* other; for testing only! */
554d3c95f5SJorgen Lundman 	DMU_OT_PLAIN_OTHER,		/* UINT8 */
564d3c95f5SJorgen Lundman 	DMU_OT_UINT64_OTHER,		/* UINT64 */
574d3c95f5SJorgen Lundman 	DMU_OT_ZAP_OTHER,		/* ZAP */
584d3c95f5SJorgen Lundman 	/* new object types: */
594d3c95f5SJorgen Lundman 	DMU_OT_ERROR_LOG,		/* ZAP */
604d3c95f5SJorgen Lundman 	DMU_OT_SPA_HISTORY,		/* UINT8 */
614d3c95f5SJorgen Lundman 	DMU_OT_SPA_HISTORY_OFFSETS,	/* spa_his_phys_t */
624d3c95f5SJorgen Lundman 	DMU_OT_POOL_PROPS,		/* ZAP */
634d3c95f5SJorgen Lundman 	DMU_OT_DSL_PERMS,		/* ZAP */
644d3c95f5SJorgen Lundman 	DMU_OT_ACL,			/* ACL */
654d3c95f5SJorgen Lundman 	DMU_OT_SYSACL,			/* SYSACL */
664d3c95f5SJorgen Lundman 	DMU_OT_FUID,			/* FUID table (Packed NVLIST UINT8) */
674d3c95f5SJorgen Lundman 	DMU_OT_FUID_SIZE,		/* FUID table size UINT64 */
684d3c95f5SJorgen Lundman 	DMU_OT_NEXT_CLONES,		/* ZAP */
694d3c95f5SJorgen Lundman 	DMU_OT_SCRUB_QUEUE,		/* ZAP */
704d3c95f5SJorgen Lundman 	DMU_OT_USERGROUP_USED,		/* ZAP */
714d3c95f5SJorgen Lundman 	DMU_OT_USERGROUP_QUOTA,		/* ZAP */
724d3c95f5SJorgen Lundman 	DMU_OT_USERREFS,		/* ZAP */
734d3c95f5SJorgen Lundman 	DMU_OT_DDT_ZAP,			/* ZAP */
744d3c95f5SJorgen Lundman 	DMU_OT_DDT_STATS,		/* ZAP */
754d3c95f5SJorgen Lundman 	DMU_OT_SA,			/* System attr */
764d3c95f5SJorgen Lundman 	DMU_OT_SA_MASTER_NODE,		/* ZAP */
774d3c95f5SJorgen Lundman 	DMU_OT_SA_ATTR_REGISTRATION,	/* ZAP */
784d3c95f5SJorgen Lundman 	DMU_OT_SA_ATTR_LAYOUTS,		/* ZAP */
794d3c95f5SJorgen Lundman 	DMU_OT_NUMTYPES
804d3c95f5SJorgen Lundman } dmu_object_type_t;
814d3c95f5SJorgen Lundman 
824d3c95f5SJorgen Lundman typedef enum dmu_objset_type {
834d3c95f5SJorgen Lundman 	DMU_OST_NONE,
844d3c95f5SJorgen Lundman 	DMU_OST_META,
854d3c95f5SJorgen Lundman 	DMU_OST_ZFS,
864d3c95f5SJorgen Lundman 	DMU_OST_ZVOL,
874d3c95f5SJorgen Lundman 	DMU_OST_OTHER,			/* For testing only! */
884d3c95f5SJorgen Lundman 	DMU_OST_ANY,			/* Be careful! */
894d3c95f5SJorgen Lundman 	DMU_OST_NUMTYPES
904d3c95f5SJorgen Lundman } dmu_objset_type_t;
914d3c95f5SJorgen Lundman 
924d3c95f5SJorgen Lundman /*
934d3c95f5SJorgen Lundman  * The names of zap entries in the DIRECTORY_OBJECT of the MOS.
944d3c95f5SJorgen Lundman  */
954d3c95f5SJorgen Lundman #define	DMU_POOL_DIRECTORY_OBJECT	1
964d3c95f5SJorgen Lundman #define	DMU_POOL_CONFIG			"config"
974d3c95f5SJorgen Lundman #define	DMU_POOL_ROOT_DATASET		"root_dataset"
984d3c95f5SJorgen Lundman #define	DMU_POOL_SYNC_BPLIST		"sync_bplist"
994d3c95f5SJorgen Lundman #define	DMU_POOL_ERRLOG_SCRUB		"errlog_scrub"
1004d3c95f5SJorgen Lundman #define	DMU_POOL_ERRLOG_LAST		"errlog_last"
1014d3c95f5SJorgen Lundman #define	DMU_POOL_SPARES			"spares"
1024d3c95f5SJorgen Lundman #define	DMU_POOL_DEFLATE		"deflate"
1034d3c95f5SJorgen Lundman #define	DMU_POOL_HISTORY		"history"
1044d3c95f5SJorgen Lundman #define	DMU_POOL_PROPS			"pool_props"
1054d3c95f5SJorgen Lundman #define	DMU_POOL_L2CACHE		"l2cache"
1064d3c95f5SJorgen Lundman 
1074d3c95f5SJorgen Lundman #endif	/* _SYS_DMU_H */
108