1/**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19#ifndef __GFS2_ONDISK_DOT_H__ 20#define __GFS2_ONDISK_DOT_H__ 21#include <linux/types.h> 22#define GFS2_MAGIC 0x01161970 23#define GFS2_BASIC_BLOCK 512 24#define GFS2_BASIC_BLOCK_SHIFT 9 25#define GFS2_MOUNT_LOCK 0 26#define GFS2_LIVE_LOCK 1 27#define GFS2_FREEZE_LOCK 2 28#define GFS2_RENAME_LOCK 3 29#define GFS2_CONTROL_LOCK 4 30#define GFS2_MOUNTED_LOCK 5 31#define GFS2_FORMAT_NONE 0 32#define GFS2_FORMAT_SB 100 33#define GFS2_FORMAT_RG 200 34#define GFS2_FORMAT_RB 300 35#define GFS2_FORMAT_DI 400 36#define GFS2_FORMAT_IN 500 37#define GFS2_FORMAT_LF 600 38#define GFS2_FORMAT_JD 700 39#define GFS2_FORMAT_LH 800 40#define GFS2_FORMAT_LD 900 41#define GFS2_FORMAT_LB 1000 42#define GFS2_FORMAT_EA 1600 43#define GFS2_FORMAT_ED 1700 44#define GFS2_FORMAT_QC 1400 45#define GFS2_FORMAT_RI 1100 46#define GFS2_FORMAT_DE 1200 47#define GFS2_FORMAT_QU 1500 48#define GFS2_FORMAT_FS 1801 49#define GFS2_FORMAT_MULTI 1900 50struct gfs2_inum { 51 __be64 no_formal_ino; 52 __be64 no_addr; 53}; 54#define GFS2_METATYPE_NONE 0 55#define GFS2_METATYPE_SB 1 56#define GFS2_METATYPE_RG 2 57#define GFS2_METATYPE_RB 3 58#define GFS2_METATYPE_DI 4 59#define GFS2_METATYPE_IN 5 60#define GFS2_METATYPE_LF 6 61#define GFS2_METATYPE_JD 7 62#define GFS2_METATYPE_LH 8 63#define GFS2_METATYPE_LD 9 64#define GFS2_METATYPE_LB 12 65#define GFS2_METATYPE_EA 10 66#define GFS2_METATYPE_ED 11 67#define GFS2_METATYPE_QC 14 68struct gfs2_meta_header { 69 __be32 mh_magic; 70 __be32 mh_type; 71 __be64 __pad0; 72 __be32 mh_format; 73 union { 74 __be32 mh_jid; 75 __be32 __pad1; 76 }; 77}; 78#define GFS2_SB_ADDR 128 79#define GFS2_SB_LOCK 0 80#define GFS2_LOCKNAME_LEN 64 81struct gfs2_sb { 82 struct gfs2_meta_header sb_header; 83 __be32 sb_fs_format; 84 __be32 sb_multihost_format; 85 __u32 __pad0; 86 __be32 sb_bsize; 87 __be32 sb_bsize_shift; 88 __u32 __pad1; 89 struct gfs2_inum sb_master_dir; 90 struct gfs2_inum __pad2; 91 struct gfs2_inum sb_root_dir; 92 char sb_lockproto[GFS2_LOCKNAME_LEN]; 93 char sb_locktable[GFS2_LOCKNAME_LEN]; 94 struct gfs2_inum __pad3; 95 struct gfs2_inum __pad4; 96#define GFS2_HAS_UUID 1 97 __u8 sb_uuid[16]; 98}; 99struct gfs2_rindex { 100 __be64 ri_addr; 101 __be32 ri_length; 102 __u32 __pad; 103 __be64 ri_data0; 104 __be32 ri_data; 105 __be32 ri_bitbytes; 106 __u8 ri_reserved[64]; 107}; 108#define GFS2_NBBY 4 109#define GFS2_BIT_SIZE 2 110#define GFS2_BIT_MASK 0x00000003 111#define GFS2_BLKST_FREE 0 112#define GFS2_BLKST_USED 1 113#define GFS2_BLKST_UNLINKED 2 114#define GFS2_BLKST_DINODE 3 115#define GFS2_RGF_JOURNAL 0x00000001 116#define GFS2_RGF_METAONLY 0x00000002 117#define GFS2_RGF_DATAONLY 0x00000004 118#define GFS2_RGF_NOALLOC 0x00000008 119#define GFS2_RGF_TRIMMED 0x00000010 120struct gfs2_rgrp_lvb { 121 __be32 rl_magic; 122 __be32 rl_flags; 123 __be32 rl_free; 124 __be32 rl_dinodes; 125 __be64 rl_igeneration; 126 __be32 rl_unlinked; 127 __be32 __pad; 128}; 129struct gfs2_rgrp { 130 struct gfs2_meta_header rg_header; 131 __be32 rg_flags; 132 __be32 rg_free; 133 __be32 rg_dinodes; 134 __be32 __pad; 135 __be64 rg_igeneration; 136 __u8 rg_reserved[80]; 137}; 138struct gfs2_quota { 139 __be64 qu_limit; 140 __be64 qu_warn; 141 __be64 qu_value; 142 __u8 qu_reserved[64]; 143}; 144#define GFS2_MAX_META_HEIGHT 10 145#define GFS2_DIR_MAX_DEPTH 17 146#define DT2IF(dt) (((dt) << 12) & S_IFMT) 147#define IF2DT(sif) (((sif) & S_IFMT) >> 12) 148enum { 149 gfs2fl_Jdata = 0, 150 gfs2fl_ExHash = 1, 151 gfs2fl_Unused = 2, 152 gfs2fl_EaIndirect = 3, 153 gfs2fl_Directio = 4, 154 gfs2fl_Immutable = 5, 155 gfs2fl_AppendOnly = 6, 156 gfs2fl_NoAtime = 7, 157 gfs2fl_Sync = 8, 158 gfs2fl_System = 9, 159 gfs2fl_TopLevel = 10, 160 gfs2fl_TruncInProg = 29, 161 gfs2fl_InheritDirectio = 30, 162 gfs2fl_InheritJdata = 31, 163}; 164#define GFS2_DIF_JDATA 0x00000001 165#define GFS2_DIF_EXHASH 0x00000002 166#define GFS2_DIF_UNUSED 0x00000004 167#define GFS2_DIF_EA_INDIRECT 0x00000008 168#define GFS2_DIF_DIRECTIO 0x00000010 169#define GFS2_DIF_IMMUTABLE 0x00000020 170#define GFS2_DIF_APPENDONLY 0x00000040 171#define GFS2_DIF_NOATIME 0x00000080 172#define GFS2_DIF_SYNC 0x00000100 173#define GFS2_DIF_SYSTEM 0x00000200 174#define GFS2_DIF_TOPDIR 0x00000400 175#define GFS2_DIF_TRUNC_IN_PROG 0x20000000 176#define GFS2_DIF_INHERIT_DIRECTIO 0x40000000 177#define GFS2_DIF_INHERIT_JDATA 0x80000000 178struct gfs2_dinode { 179 struct gfs2_meta_header di_header; 180 struct gfs2_inum di_num; 181 __be32 di_mode; 182 __be32 di_uid; 183 __be32 di_gid; 184 __be32 di_nlink; 185 __be64 di_size; 186 __be64 di_blocks; 187 __be64 di_atime; 188 __be64 di_mtime; 189 __be64 di_ctime; 190 __be32 di_major; 191 __be32 di_minor; 192 __be64 di_goal_meta; 193 __be64 di_goal_data; 194 __be64 di_generation; 195 __be32 di_flags; 196 __be32 di_payload_format; 197 __u16 __pad1; 198 __be16 di_height; 199 __u32 __pad2; 200 __u16 __pad3; 201 __be16 di_depth; 202 __be32 di_entries; 203 struct gfs2_inum __pad4; 204 __be64 di_eattr; 205 __be32 di_atime_nsec; 206 __be32 di_mtime_nsec; 207 __be32 di_ctime_nsec; 208 __u8 di_reserved[44]; 209}; 210#define GFS2_FNAMESIZE 255 211#define GFS2_DIRENT_SIZE(name_len) ((sizeof(struct gfs2_dirent) + (name_len) + 7) & ~7) 212#define GFS2_MIN_DIRENT_SIZE (GFS2_DIRENT_SIZE(1)) 213struct gfs2_dirent { 214 struct gfs2_inum de_inum; 215 __be32 de_hash; 216 __be16 de_rec_len; 217 __be16 de_name_len; 218 __be16 de_type; 219 __be16 de_rahead; 220 union { 221 __u8 __pad[12]; 222 struct { 223 __u32 de_cookie; 224 __u8 pad3[8]; 225 }; 226 }; 227}; 228struct gfs2_leaf { 229 struct gfs2_meta_header lf_header; 230 __be16 lf_depth; 231 __be16 lf_entries; 232 __be32 lf_dirent_format; 233 __be64 lf_next; 234 union { 235 __u8 lf_reserved[64]; 236 struct { 237 __be64 lf_inode; 238 __be32 lf_dist; 239 __be32 lf_nsec; 240 __be64 lf_sec; 241 __u8 lf_reserved2[40]; 242 }; 243 }; 244}; 245#define GFS2_EA_MAX_NAME_LEN 255 246#define GFS2_EA_MAX_DATA_LEN 65536 247#define GFS2_EATYPE_UNUSED 0 248#define GFS2_EATYPE_USR 1 249#define GFS2_EATYPE_SYS 2 250#define GFS2_EATYPE_SECURITY 3 251#define GFS2_EATYPE_LAST 3 252#define GFS2_EATYPE_VALID(x) ((x) <= GFS2_EATYPE_LAST) 253#define GFS2_EAFLAG_LAST 0x01 254struct gfs2_ea_header { 255 __be32 ea_rec_len; 256 __be32 ea_data_len; 257 __u8 ea_name_len; 258 __u8 ea_type; 259 __u8 ea_flags; 260 __u8 ea_num_ptrs; 261 __u32 __pad; 262}; 263#define GFS2_LOG_HEAD_UNMOUNT 0x00000001 264struct gfs2_log_header { 265 struct gfs2_meta_header lh_header; 266 __be64 lh_sequence; 267 __be32 lh_flags; 268 __be32 lh_tail; 269 __be32 lh_blkno; 270 __be32 lh_hash; 271}; 272#define GFS2_LOG_DESC_METADATA 300 273#define GFS2_LOG_DESC_REVOKE 301 274#define GFS2_LOG_DESC_JDATA 302 275struct gfs2_log_descriptor { 276 struct gfs2_meta_header ld_header; 277 __be32 ld_type; 278 __be32 ld_length; 279 __be32 ld_data1; 280 __be32 ld_data2; 281 __u8 ld_reserved[32]; 282}; 283#define GFS2_INUM_QUANTUM 1048576 284struct gfs2_inum_range { 285 __be64 ir_start; 286 __be64 ir_length; 287}; 288struct gfs2_statfs_change { 289 __be64 sc_total; 290 __be64 sc_free; 291 __be64 sc_dinodes; 292}; 293#define GFS2_QCF_USER 0x00000001 294struct gfs2_quota_change { 295 __be64 qc_change; 296 __be32 qc_flags; 297 __be32 qc_id; 298}; 299struct gfs2_quota_lvb { 300 __be32 qb_magic; 301 __u32 __pad; 302 __be64 qb_limit; 303 __be64 qb_warn; 304 __be64 qb_value; 305}; 306#endif 307