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