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