Rev 5363 | Rev 9888 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5363 | Rev 7736 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ;; ;; |
2 | ;; ;; |
3 | ;; Copyright (C) KolibriOS team 2013-2015. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2013-2020. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
8 | $Revision: 5363 $ |
- | |
9 | - | ||
10 | - | ||
11 | ; from stat.h |
- | |
12 | ; distinguish file types |
- | |
13 | S_IFMT = 0170000o ; These bits determine file type. |
- | |
14 | S_IFDIR = 0040000o ; Directory. |
- | |
15 | S_IFCHR = 0020000o ; Character device. |
- | |
16 | S_IFBLK = 0060000o ; Block device. |
- | |
17 | S_IFREG = 0100000o ; Regular file. |
- | |
18 | S_IFIFO = 0010000o ; FIFO. |
- | |
19 | S_IFLNK = 0120000o ; Symbolic link. |
- | |
20 | S_IFSOCK = 0140000o ; Socket. |
- | |
Line -... | Line 8... | ||
- | 8 | $Revision: 7736 $ |
|
- | 9 | ||
- | 10 | ; file types from stat.h |
|
- | 11 | S_IFMT = 0170000o ; These bits determine file type |
|
- | 12 | S_IFDIR = 0040000o ; Directory |
|
- | 13 | S_IFCHR = 0020000o ; Character device |
|
- | 14 | S_IFBLK = 0060000o ; Block device |
|
- | 15 | S_IFREG = 0100000o ; Regular file |
|
- | 16 | S_IFIFO = 0010000o ; FIFO |
|
Line 21... | Line 17... | ||
21 | ; end stat.h |
17 | S_IFLNK = 0120000o ; Symbolic link |
22 | 18 | S_IFSOCK = 0140000o ; Socket |
|
Line 23... | Line -... | ||
23 | - | ||
24 | ; XFS null constant: empty fields must be all ones, not zeros! |
- | |
25 | XFS_NULL = -1 |
19 | |
26 | - | ||
27 | - | ||
28 | ; static sector numbers |
- | |
29 | XFS_SECT_SB = 0 |
- | |
Line 30... | Line 20... | ||
30 | XFS_SECT_AGF = 1 |
20 | ; XFS null constant: empty fields must be all ones, not zeros! |
31 | XFS_SECT_AGI = 2 |
- | |
32 | XFS_SECT_AGFL = 3 |
- | |
33 | 21 | XFS_NULL = -1 |
|
34 | - | ||
35 | ; signatures of file system structures |
- | |
36 | ; 'string' numbers are treated by fasm as big endian |
- | |
37 | XFS_SB_MAGIC = 'XFSB' |
- | |
38 | XFS_AGF_MAGIC = 'XAGF' |
22 | |
39 | XFS_AGI_MAGIC = 'XAGI' |
23 | XFS_SECT_SB = 0 |
40 | XFS_ABTB_MAGIC = 'ABTB' |
24 | |
41 | XFS_ABTC_MAGIC = 'ABTC' |
- | |
42 | XFS_IBT_MAGIC = 'IABT' |
25 | ; signatures of file system structures |
43 | XFS_DINODE_MAGIC = 'IN' |
26 | XFS_AGF_MAGIC = 'XAGF' |
44 | XFS_BMAP_MAGIC = 'BMAP' |
27 | XFS_DINODE_MAGIC = 'IN' |
45 | XFS_DA_NODE_MAGIC = 0xbefe ; those are little endian here |
28 | XFS_BMAP_MAGIC = 'BMAP' |
46 | XFS_ATTR_LEAF_MAGIC = 0xeefb ; but big endian in docs |
- | |
47 | XFS_DIR2_LEAF1_MAGIC = 0xf1d2 ; pay attention! |
- | |
Line -... | Line 29... | ||
- | 29 | XFS_DA_NODE_MAGIC = 0xbefe |
|
- | 30 | XFS_DIR2_LEAF1_MAGIC = 0xf1d2 |
|
- | 31 | XFS_DIR2_LEAFN_MAGIC = 0xffd2 |
|
- | 32 | XFS_DIR2_BLOCK_MAGIC = 'XD2B' |
|
- | 33 | XFS_DIR2_DATA_MAGIC = 'XD2D' |
|
- | 34 | ||
- | 35 | XFS_BMAP3_MAGIC = 'BMA3' |
|
- | 36 | XFS_DA3_NODE_MAGIC = 0xbe3e ; non-leaf blocks |
|
- | 37 | XFS_DIR3_LEAF1_MAGIC = 0xf13d ; v3 dir single blks |
|
- | 38 | XFS_DIR3_LEAFN_MAGIC = 0xff3d ; v3 dir multi blks |
|
- | 39 | XFS_DIR3_BLOCK_MAGIC = 'XDB3' ; single block dirs |
|
- | 40 | XFS_DIR3_DATA_MAGIC = 'XDD3' ; multiblock dirs |
|
- | 41 | ||
- | 42 | XFS_SB_MAGIC = 'XFSB' |
|
- | 43 | XFS_SB_VERSION_NUMBITS = 0x000f |
|
- | 44 | XFS_SB_VERSION_ALLFBITS = 0xfff0 |
|
- | 45 | XFS_SB_VERSION_REALFBITS = 0x0ff0 |
|
- | 46 | XFS_SB_VERSION_ATTRBIT = 0x0010 |
|
- | 47 | XFS_SB_VERSION_NLINKBIT = 0x0020 |
|
- | 48 | XFS_SB_VERSION_QUOTABIT = 0x0040 |
|
- | 49 | XFS_SB_VERSION_ALIGNBIT = 0x0080 |
|
- | 50 | XFS_SB_VERSION_DALIGNBIT = 0x0100 |
|
- | 51 | XFS_SB_VERSION_SHAREDBIT = 0x0200 |
|
- | 52 | XFS_SB_VERSION_LOGV2BIT = 0x0400 |
|
- | 53 | XFS_SB_VERSION_SECTORBIT = 0x0800 |
|
- | 54 | XFS_SB_VERSION_EXTFLGBIT = 0x1000 |
|
- | 55 | XFS_SB_VERSION_DIRV2BIT = 0x2000 |
|
- | 56 | XFS_SB_VERSION_BORGBIT = 0x4000 ; ASCII only case-insensitive |
|
- | 57 | XFS_SB_VERSION_MOREBITSBIT = 0x8000 |
|
- | 58 | ||
- | 59 | XFS_SB_VERSION_SUPPORTED = XFS_SB_VERSION_NUMBITS OR \ |
|
- | 60 | XFS_SB_VERSION_ATTRBIT OR \ |
|
- | 61 | XFS_SB_VERSION_NLINKBIT OR \ |
|
- | 62 | XFS_SB_VERSION_QUOTABIT OR \ |
|
- | 63 | XFS_SB_VERSION_ALIGNBIT OR \ |
|
- | 64 | XFS_SB_VERSION_LOGV2BIT OR \ |
|
- | 65 | XFS_SB_VERSION_SECTORBIT OR \ |
|
- | 66 | XFS_SB_VERSION_EXTFLGBIT OR \ |
|
- | 67 | XFS_SB_VERSION_DIRV2BIT OR \ |
|
- | 68 | XFS_SB_VERSION_MOREBITSBIT |
|
- | 69 | ||
- | 70 | XFS_SB_VERSION2_RESERVED1BIT = 0x00000001 |
|
- | 71 | XFS_SB_VERSION2_LAZYSBCOUNTBIT = 0x00000002 ; Superblk counters |
|
- | 72 | XFS_SB_VERSION2_RESERVED4BIT = 0x00000004 |
|
- | 73 | XFS_SB_VERSION2_ATTR2BIT = 0x00000008 ; Inline attr rework |
|
- | 74 | XFS_SB_VERSION2_PARENTBIT = 0x00000010 ; parent pointers in xattr |
|
- | 75 | XFS_SB_VERSION2_PROJID32BIT = 0x00000080 ; 32 bit project id |
|
- | 76 | XFS_SB_VERSION2_CRCBIT = 0x00000100 ; metadata CRCs |
|
- | 77 | XFS_SB_VERSION2_FTYPE = 0x00000200 ; inode type in dir |
|
- | 78 | ||
- | 79 | XFS_SB_VERSION2_SUPPORTED = XFS_SB_VERSION2_LAZYSBCOUNTBIT OR \ |
|
- | 80 | XFS_SB_VERSION2_ATTR2BIT OR \ |
|
- | 81 | XFS_SB_VERSION2_PARENTBIT OR \ |
|
- | 82 | XFS_SB_VERSION2_PROJID32BIT OR \ |
|
- | 83 | XFS_SB_VERSION2_CRCBIT OR \ |
|
- | 84 | XFS_SB_VERSION2_FTYPE |
|
- | 85 | ||
Line 48... | Line 86... | ||
48 | XFS_DIR2_LEAFN_MAGIC = 0xffd2 ; |
86 | XFS_SB_FEAT_INCOMPAT_FTYPE = 1 ; filetype in dirent |
49 | XFS_DIR2_BLOCK_MAGIC = 'XD2B' |
87 | XFS_SB_FEAT_INCOMPAT_SPINODES = 2 ; sparse inode chunks |
50 | XFS_DIR2_DATA_MAGIC = 'XD2D' |
88 | XFS_SB_FEAT_INCOMPAT_META_UUID = 4 ; metadata UUID |
51 | XFS_DIR2_FREE_MAGIC = 'XD2F' |
89 | XFS_SB_FEAT_INCOMPAT_SUPPORTED = XFS_SB_FEAT_INCOMPAT_FTYPE OR \ |
52 | XFS_DQUOT_MAGIC = 'DQ' |
90 | XFS_SB_FEAT_INCOMPAT_SPINODES OR \ |
53 | 91 | XFS_SB_FEAT_INCOMPAT_META_UUID |
|
Line 54... | Line -... | ||
54 | - | ||
55 | ; bitfield lengths for packed extent |
- | |
56 | ; MSB to LSB / left to right |
- | |
57 | BMBT_EXNTFLAG_BITLEN = 1 |
- | |
58 | BMBT_STARTOFF_BITLEN = 54 |
92 | |
59 | BMBT_STARTBLOCK_BITLEN = 52 |
93 | ; bitfield lengths for packed extent |
60 | BMBT_BLOCKCOUNT_BITLEN = 21 |
- | |
61 | - | ||
62 | 94 | ; MSB to LSB / left to right |
|
- | 95 | BMBT_EXNTFLAG_BITLEN = 1 |
|
- | 96 | BMBT_STARTOFF_BITLEN = 54 |
|
63 | ; those constants are taken from linux source (xfs_dir2_leaf.h) |
97 | BMBT_STARTBLOCK_BITLEN = 52 |
64 | ; they are magic infile offsets for directories |
- | |
Line 65... | Line 98... | ||
65 | XFS_DIR2_DATA_ALIGN_LOG = 3 ; i.e., 8 bytes |
98 | BMBT_BLOCKCOUNT_BITLEN = 21 |
66 | XFS_DIR2_LEAF_SPACE = 1 |
99 | |
67 | XFS_DIR2_SPACE_SIZE = (1 SHL (32 + XFS_DIR2_DATA_ALIGN_LOG)) |
- | |
68 | XFS_DIR2_LEAF_OFFSET = (XFS_DIR2_LEAF_SPACE * XFS_DIR2_SPACE_SIZE) |
- | |
Line 69... | Line 100... | ||
69 | XFS_DIR2_FREE_SPACE = 2 |
100 | XFS_DIR2_DATA_ALIGN_LOG = 3 |
70 | XFS_DIR2_SPACE_SIZE = (1 SHL (32 + XFS_DIR2_DATA_ALIGN_LOG)) |
101 | XFS_DIR2_DATA_ALIGN = 1 SHL XFS_DIR2_DATA_ALIGN_LOG |
71 | XFS_DIR2_FREE_OFFSET = (XFS_DIR2_FREE_SPACE * XFS_DIR2_SPACE_SIZE) |
102 | XFS_DIR2_SPACE_SIZE = (1 SHL (32 + XFS_DIR2_DATA_ALIGN_LOG)) |
72 | 103 | XFS_DIR2_DATA_OFFSET = 0*XFS_DIR2_SPACE_SIZE |
|
73 | 104 | XFS_DIR2_LEAF_OFFSET = 1*XFS_DIR2_SPACE_SIZE |
|
74 | ; data section magic constants for directories (xfs_dir2_data.h) |
105 | XFS_DIR2_FREE_OFFSET = 2*XFS_DIR2_SPACE_SIZE |
75 | XFS_DIR2_DATA_FD_COUNT = 3 |
106 | |
76 | XFS_DIR2_DATA_FREE_TAG = 0xffff |
- | |
Line 77... | Line 107... | ||
77 | 107 | ; data section magic constants for directories (xfs_dir2_data.h) |
|
78 | 108 | XFS_DIR2_DATA_FD_COUNT = 3 |
|
Line 79... | Line -... | ||
79 | ; valid inode formats |
- | |
80 | ; enum xfs_dinode_fmt (xfs_dinode.h) |
109 | |
81 | XFS_DINODE_FMT_DEV = 0 ; xfs_dev_t |
110 | ; valid inode formats |
82 | XFS_DINODE_FMT_LOCAL = 1 ; one inode is enough (shortdir) |
111 | ; enum xfs_dinode_fmt (xfs_dinode.h) |
83 | XFS_DINODE_FMT_EXTENTS = 2 ; one or more extents (leafdir, nodedir, regular files) |
112 | XFS_DINODE_FMT_DEV = 0 |
84 | XFS_DINODE_FMT_BTREE = 3 ; highly fragmented files or really huge directories |
113 | XFS_DINODE_FMT_LOCAL = 1 |
85 | XFS_DINODE_FMT_UUID = 4 ; uuid_t |
114 | XFS_DINODE_FMT_EXTENTS = 2 |
Line 86... | Line -... | ||
86 | - | ||
87 | 115 | XFS_DINODE_FMT_BTREE = 3 |
|
88 | ; size of the unlinked inode hash table in the agi |
116 | XFS_DINODE_FMT_UUID = 4 |
89 | XFS_AGI_UNLINKED_BUCKETS = 64 |
117 | |
90 | 118 | ; size of the unlinked inode hash table in the agi |
|
91 | - | ||
92 | ; possible extent states |
- | |
93 | ; enum xfs_exntst_t (xfs_bmap_btree.h) |
- | |
94 | XFS_EXT_NORM = 0 |
- | |
95 | XFS_EXT_UNWRITTEN = 1 |
119 | XFS_AGI_UNLINKED_BUCKETS = 64 |
96 | XFS_EXT_DMAPI_OFFLINE = 2 |
- | |
97 | XFS_EXT_INVALID = 3 |
- | |
98 | - | ||
99 | - | ||
100 | ; values for inode core flags / di_flags (xfs_dinode.h) |
- | |
101 | XFS_DIFLAG_REALTIME_BIT = 0 ; file's blocks come from rt area |
- | |
102 | XFS_DIFLAG_PREALLOC_BIT = 1 ; file space has been preallocated |
- | |
103 | XFS_DIFLAG_NEWRTBM_BIT = 2 ; for rtbitmap inode, new format |
120 | |
104 | XFS_DIFLAG_IMMUTABLE_BIT = 3 ; inode is immutable |
121 | ; possible extent states |
105 | XFS_DIFLAG_APPEND_BIT = 4 ; inode is append-only |
122 | ; enum xfs_exntst_t (xfs_bmap_btree.h) |
106 | XFS_DIFLAG_SYNC_BIT = 5 ; inode is written synchronously |
- | |
107 | XFS_DIFLAG_NOATIME_BIT = 6 ; do not update atime |
- | |
108 | XFS_DIFLAG_NODUMP_BIT = 7 ; do not dump |
- | |
109 | XFS_DIFLAG_RTINHERIT_BIT = 8 ; create with realtime bit set |
- | |
110 | XFS_DIFLAG_PROJINHERIT_BIT = 9 ; create with parents projid |
123 | XFS_EXT_NORM = 0 |
111 | XFS_DIFLAG_NOSYMLINKS_BIT = 10 ; disallow symlink creation |
- | |
112 | XFS_DIFLAG_EXTSIZE_BIT = 11 ; inode extent size allocator hint |
- | |
113 | XFS_DIFLAG_EXTSZINHERIT_BIT = 12 ; inherit inode extent size |
- | |
114 | XFS_DIFLAG_NODEFRAG_BIT = 13 ; do not reorganize/defragment |
- | |
115 | XFS_DIFLAG_FILESTREAM_BIT = 14 ; use filestream allocator |
- | |
116 | XFS_DIFLAG_REALTIME = (1 SHL XFS_DIFLAG_REALTIME_BIT) |
- | |
117 | XFS_DIFLAG_PREALLOC = (1 SHL XFS_DIFLAG_PREALLOC_BIT) |
- | |
118 | XFS_DIFLAG_NEWRTBM = (1 SHL XFS_DIFLAG_NEWRTBM_BIT) |
- | |
Line 119... | Line 124... | ||
119 | XFS_DIFLAG_IMMUTABLE = (1 SHL XFS_DIFLAG_IMMUTABLE_BIT) |
124 | XFS_EXT_UNWRITTEN = 1 |
120 | XFS_DIFLAG_APPEND = (1 SHL XFS_DIFLAG_APPEND_BIT) |
125 | XFS_EXT_DMAPI_OFFLINE = 2 |
121 | XFS_DIFLAG_SYNC = (1 SHL XFS_DIFLAG_SYNC_BIT) |
126 | XFS_EXT_INVALID = 3 |
122 | XFS_DIFLAG_NOATIME = (1 SHL XFS_DIFLAG_NOATIME_BIT) |
127 | |
123 | XFS_DIFLAG_NODUMP = (1 SHL XFS_DIFLAG_NODUMP_BIT) |
128 | ; values for inode core flags / di_flags (xfs_dinode.h) |
124 | XFS_DIFLAG_RTINHERIT = (1 SHL XFS_DIFLAG_RTINHERIT_BIT) |
129 | XFS_DIFLAG_REALTIME_BIT = 0 ; file's blocks come from rt area |
125 | XFS_DIFLAG_PROJINHERIT = (1 SHL XFS_DIFLAG_PROJINHERIT_BIT) |
130 | XFS_DIFLAG_PREALLOC_BIT = 1 ; file space has been preallocated |
126 | XFS_DIFLAG_NOSYMLINKS = (1 SHL XFS_DIFLAG_NOSYMLINKS_BIT) |
131 | XFS_DIFLAG_NEWRTBM_BIT = 2 ; for rtbitmap inode, new format |
127 | XFS_DIFLAG_EXTSIZE = (1 SHL XFS_DIFLAG_EXTSIZE_BIT) |
132 | XFS_DIFLAG_NODUMP_BIT = 7 ; do not dump |
128 | XFS_DIFLAG_EXTSZINHERIT = (1 SHL XFS_DIFLAG_EXTSZINHERIT_BIT) |
133 | XFS_DIFLAG_REALTIME = (1 SHL XFS_DIFLAG_REALTIME_BIT) |
129 | XFS_DIFLAG_NODEFRAG = (1 SHL XFS_DIFLAG_NODEFRAG_BIT) |
134 | XFS_DIFLAG_PREALLOC = (1 SHL XFS_DIFLAG_PREALLOC_BIT) |
130 | XFS_DIFLAG_FILESTREAM = (1 SHL XFS_DIFLAG_FILESTREAM_BIT) |
135 | XFS_DIFLAG_NEWRTBM = (1 SHL XFS_DIFLAG_NEWRTBM_BIT) |
131 | 136 | XFS_DIFLAG_NODUMP = (1 SHL XFS_DIFLAG_NODUMP_BIT) |
|
132 | 137 | ||
133 | ; superblock _ondisk_ structure (xfs_sb.h) |
138 | ; superblock _ondisk_ structure (xfs_sb.h) |
134 | ; this is _not_ the partition structure |
139 | ; this is _not_ the partition structure |
135 | ; for XFS partition structure see XFS below |
140 | ; for XFS partition structure see XFS below |
136 | struct xfs_sb |
141 | struct xfs_sb |
137 | sb_magicnum dd ? ; signature, must be XFS_SB_MAGIC |
142 | sb_magicnum dd ? ; signature, must be XFS_SB_MAGIC |
138 | sb_blocksize dd ? ; block is the minimal file system unit, in bytes |
143 | sb_blocksize dd ? ; block is the minimal file system unit, in bytes |
139 | sb_dblocks dq ? ; number of data blocks |
144 | sb_dblocks DQ ? ; number of data blocks |
140 | sb_rblocks dq ? ; number of realtime blocks (not supported yet!) |
145 | sb_rblocks DQ ? ; number of realtime blocks |
141 | sb_rextents dq ? ; number of realtime extents (not supported yet!) |
146 | sb_rextents DQ ? ; number of realtime extents |
142 | sb_uuid rb 16 ; file system unique identifier |
147 | sb_uuid rb 16 ; file system unique identifier |
143 | sb_logstart dq ? ; starting block of log (for internal journal; journals on separate devices are not supported!) |
148 | sb_logstart DQ ? ; starting block of log (for internal journal) |
144 | sb_rootino dq ? ; root inode number |
149 | sb_rootino DQ ? ; root inode number |
Line 161... | Line 166... | ||
161 | sb_agblklog db ? ; log2 of sb_agblocks (rounded up!) |
166 | sb_agblklog db ? ; log2 of sb_agblocks (rounded up!) |
162 | sb_rextslog db ? ; log2 of sb_rextents |
167 | sb_rextslog db ? ; log2 of sb_rextents |
163 | sb_inprogress db ? ; mkfs is in progress, don't mount |
168 | sb_inprogress db ? ; mkfs is in progress, don't mount |
164 | sb_imax_pct db ? ; max % of fs for inode space |
169 | sb_imax_pct db ? ; max % of fs for inode space |
165 | ; statistics |
170 | ; statistics |
166 | sb_icount dq ? ; allocated inodes |
171 | sb_icount DQ ? ; allocated inodes |
167 | sb_ifree dq ? ; free inodes |
172 | sb_ifree DQ ? ; free inodes |
168 | sb_fdblocks dq ? ; free data blocks |
173 | sb_fdblocks DQ ? ; free data blocks |
169 | sb_frextents dq ? ; free realtime extents |
174 | sb_frextents DQ ? ; free realtime extents |
Line 170... | Line 175... | ||
170 | 175 | ||
171 | sb_uquotino dq ? ; user quota inode |
176 | sb_uquotino DQ ? ; user quota inode |
172 | sb_gquotino dq ? ; group quota inode |
177 | sb_gquotino DQ ? ; group quota inode |
173 | sb_qflags dw ? ; quota flags |
178 | sb_qflags dw ? ; quota flags |
174 | sb_flags db ? ; misc. flags |
179 | sb_flags db ? ; misc. flags |
175 | sb_shared_vn db ? ; shared version number |
180 | sb_shared_vn db ? ; shared version number |
176 | sb_inoalignmt dd ? ; inode chunk alignment, fsblocks |
181 | sb_inoalignmt dd ? ; inode chunk alignment, fsblocks |
Line 179... | Line 184... | ||
179 | sb_dirblklog db ? ; log2 of dir block size (fsbs) |
184 | sb_dirblklog db ? ; log2 of dir block size (fsbs) |
180 | sb_logsectlog db ? ; log2 of the log sector size |
185 | sb_logsectlog db ? ; log2 of the log sector size |
181 | sb_logsectsize dw ? ; sector size for the log, bytes |
186 | sb_logsectsize dw ? ; sector size for the log, bytes |
182 | sb_logsunit dd ? ; stripe unit size for the log |
187 | sb_logsunit dd ? ; stripe unit size for the log |
183 | sb_features2 dd ? ; additional feature bits |
188 | sb_features2 dd ? ; additional feature bits |
- | 189 | sb_bad_features2 dd ? |
|
- | 190 | sb_features_compat dd ? |
|
- | 191 | sb_features_ro_compat dd ? |
|
- | 192 | sb_features_incompat dd ? |
|
- | 193 | sb_features_log_incompat dd ? |
|
- | 194 | sb_crc dd ? ; superblock crc |
|
- | 195 | sb_spino_align dd ? ; sparse inode chunk alignment |
|
- | 196 | sb_pquotino DQ ? ; project quota inode |
|
- | 197 | sb_lsn DQ ? ; last write sequence |
|
- | 198 | sb_meta_uuid rb 16 ; metadata file system unique id |
|
184 | ends |
199 | ends |
Line 185... | Line -... | ||
185 | - | ||
186 | - | ||
187 | ; allocation group inode (xfs_ag.h) |
- | |
188 | struct xfs_agi |
- | |
189 | agi_magicnum dd ? ; magic number == XFS_AGI_MAGIC |
- | |
190 | agi_versionnum dd ? ; header version == XFS_AGI_VERSION |
- | |
191 | agi_seqno dd ? ; sequence number starting from 0 |
- | |
192 | agi_length dd ? ; size in blocks of a.g. |
- | |
193 | agi_count dd ? ; count of allocated inodes |
- | |
194 | agi_root dd ? ; root of inode btree |
- | |
195 | agi_level dd ? ; levels in inode btree |
- | |
196 | agi_freecount dd ? ; number of free inodes |
- | |
197 | agi_newino dd ? ; new inode just allocated |
- | |
198 | agi_dirino dd ? ; last directory inode chunk |
- | |
199 | agi_unlinked rd XFS_AGI_UNLINKED_BUCKETS ; Hash table of inodes which have been unlinked but are still being referenced |
- | |
200 | ends |
- | |
201 | - | ||
202 | - | ||
203 | ; superblock structure of b+tree node/leaf (same structure, bb_level matters) |
- | |
204 | struct xfs_btree_sblock |
- | |
205 | bb_magic dd ? |
- | |
206 | bb_level dw ? ; distinguishes nodeds and leaves |
- | |
207 | bb_numrecs dw ? |
- | |
208 | bb_leftsib dd ? |
- | |
209 | bb_rightsib dd ? |
- | |
210 | ends |
- | |
211 | - | ||
212 | - | ||
213 | ; record of b+tree inode |
- | |
214 | struct xfs_inobt_rec |
- | |
215 | ir_startino dd ? |
- | |
216 | ir_freecount dd ? |
- | |
217 | ir_free dq ? |
- | |
218 | ends |
- | |
219 | - | ||
220 | 200 | ||
221 | ; structure to store create, access and modification time in inode core |
201 | ; structure to store create, access and modification time in inode core |
222 | struct xfs_timestamp |
202 | struct xfs_timestamp |
223 | t_sec dd ? |
203 | t_sec dd ? |
224 | t_nsec dd ? ; nanoseconds |
204 | t_nsec dd ? ; nanoseconds |
Line 225... | Line -... | ||
225 | ends |
- | |
226 | 205 | ends |
|
227 | 206 | ||
228 | ; inode core structure: basic information about file |
207 | ; inode core structure: basic information about file |
229 | struct xfs_dinode_core |
208 | struct xfs_dinode_core |
230 | di_magic dw ? ; inode magic = XFS_DINODE_MAGIC |
209 | di_magic dw ? ; inode magic = XFS_DINODE_MAGIC |
Line 239... | Line 218... | ||
239 | di_pad rb 8 ; unused, zeroed space |
218 | di_pad rb 8 ; unused, zeroed space |
240 | di_flushiter dw ? ; incremented on flush |
219 | di_flushiter dw ? ; incremented on flush |
241 | di_atime xfs_timestamp ; time last accessed |
220 | di_atime xfs_timestamp ; time last accessed |
242 | di_mtime xfs_timestamp ; time last modified |
221 | di_mtime xfs_timestamp ; time last modified |
243 | di_ctime xfs_timestamp ; time created/inode modified |
222 | di_ctime xfs_timestamp ; time created/inode modified |
244 | di_size dq ? ; number of bytes in file |
223 | di_size DQ ? ; number of bytes in file |
245 | di_nblocks dq ? ; number of direct & btree blocks used |
224 | di_nblocks DQ ? ; number of direct & btree blocks used |
246 | di_extsize dd ? ; basic/minimum extent size for file |
225 | di_extsize dd ? ; basic/minimum extent size for file |
247 | di_nextents dd ? ; number of extents in data fork |
226 | di_nextents dd ? ; number of extents in data fork |
248 | di_anextents dw ? ; number of extents in attribute fork |
227 | di_anextents dw ? ; number of extents in attribute fork |
249 | di_forkoff db ? ; attr fork offs, <<3 for 64b align |
228 | di_forkoff db ? ; attr fork offs, <<3 for 64b align |
250 | di_aformat db ? ; format of attr fork's data |
229 | di_aformat db ? ; format of attr fork's data |
251 | di_dmevmask dd ? ; DMIG event mask |
230 | di_dmevmask dd ? ; DMIG event mask |
252 | di_dmstate dw ? ; DMIG state info |
231 | di_dmstate dw ? ; DMIG state info |
253 | di_flags dw ? ; random flags, XFS_DIFLAG_... |
232 | di_flags dw ? ; random flags, XFS_DIFLAG_... |
254 | di_gen dd ? ; generation number |
233 | di_gen dd ? ; generation number |
- | 234 | di_next_unlinked dd ? ; unlinked but still used inode (if any, XFS_NULL otherwise) |
|
- | 235 | ends |
|
- | 236 | ||
- | 237 | struct xfs_dinode3_core xfs_dinode_core |
|
- | 238 | di_crc dd ? ; CRC of the inode |
|
- | 239 | di_changecount DQ ? ; number of attribute changes |
|
- | 240 | di_lsn DQ ? ; flush sequence |
|
- | 241 | di_flags2 DQ ? ; more random flags |
|
- | 242 | di_cowextsize dd ? ; basic cow extent size for file |
|
- | 243 | di_pad2 rb 12 ; more padding for future expansion |
|
- | 244 | ||
- | 245 | ; fields only written to during inode creation |
|
- | 246 | di_crtime xfs_timestamp ; time created |
|
- | 247 | di_ino DQ ? ; inode number |
|
- | 248 | di_uuid rb 16 ; UUID of the filesystem |
|
255 | ends |
249 | ends |
Line 256... | Line -... | ||
256 | - | ||
257 | 250 | ||
258 | ; shortform dir header |
251 | |
259 | struct xfs_dir2_sf_hdr |
252 | struct xfs_dir2_sf_hdr |
260 | count db ? ; the number of directory entries, used only if each inode number fits 4 bytes; zero otherwise |
253 | count db ? |
261 | i8count db ? ; the number of directory entries, used only when count is zero |
254 | i8count db ? |
Line 262... | Line -... | ||
262 | parent dq ? ; parent inode number: xfs_dir2_inou_t (4 or 8 bytes) |
- | |
263 | ends |
- | |
264 | 255 | parent DQ ? ; parent inode number, 4 or 8 bytes |
|
265 | 256 | ends |
|
266 | ; shortform dir entry |
257 | |
267 | struct xfs_dir2_sf_entry |
258 | struct xfs_dir2_sf_entry |
268 | namelen db ? ; actual name length (ASCII) |
259 | namelen db ? ; actual name length (ASCII) |
269 | offset rb 2 ; saved offset |
260 | offset rb 2 ; saved offset |
Line -... | Line 261... | ||
- | 261 | name db ? ; name, variable size |
|
- | 262 | inumber DQ ? ; 4 or 8 bytes |
|
- | 263 | ends |
|
- | 264 | ||
Line 270... | Line 265... | ||
270 | name db ? ; name, variable size |
265 | struct xfs_dir2_sf |
271 | ; inumber dq ? ; xfs_dir2_inou_t |
266 | hdr xfs_dir2_sf_hdr |
272 | ends |
267 | entries xfs_dir2_sf_entry |
273 | 268 | ends |
|
274 | 269 | ||
275 | ; active entry in a data block |
270 | ; active entry in a data block |
276 | ; aligned to 8 bytes |
271 | ; aligned to 8 bytes |
277 | ; tag appears as the last 2 bytes |
272 | ; tag appears as the last 2 bytes |
278 | struct xfs_dir2_data_entry |
273 | struct xfs_dir2_data_entry |
Line 279... | Line -... | ||
279 | inumber dq ? ; inode number |
- | |
280 | namelen db ? ; name length |
274 | inumber DQ ? |
281 | name db ? ; name bytes, no null |
- | |
282 | ; tag dw ? ; starting offset of us |
- | |
283 | ends |
275 | namelen db ? |
284 | 276 | name db ? ; name bytes array without terminator |
|
285 | 277 | ; tag dw ? ; starting offset of the entry |
|
286 | ; unused entry in a data block |
278 | ends |
287 | ; aligned to 8 bytes |
279 | |
Line 288... | Line -... | ||
288 | ; tag appears as the last 2 bytes |
- | |
289 | struct xfs_dir2_data_unused |
280 | ; unused entry in a data block |
290 | freetag dw ? ; XFS_DIR2_DATA_FREE_TAG |
281 | struct xfs_dir2_data_unused |
291 | length dw ? ; total free length |
282 | freetag dw ? ; XFS_DIR2_DATA_FREE_TAG aka XFS_NULL |
292 | ; tag dw ? ; starting offset of us |
283 | length dw ? ; total free length |
293 | ends |
284 | ; tag dw ? ; starting offset of the entry |
294 | 285 | ends |
|
295 | 286 | ||
Line 296... | Line -... | ||
296 | ; generic data entry |
- | |
297 | struct xfs_dir2_data_union |
287 | ; generic data entry |
298 | union |
288 | struct xfs_dir2_data_union |
299 | xentry xfs_dir2_data_entry |
289 | union |
300 | unused xfs_dir2_data_unused |
290 | xentry xfs_dir2_data_entry |
301 | ends |
291 | unused xfs_dir2_data_unused |
302 | ends |
292 | ends |
Line 303... | Line -... | ||
303 | - | ||
304 | 293 | ends |
|
305 | ; describe a free area in the data block |
294 | |
306 | ; the freespace will be formatted as a xfs_dir2_data_unused_t |
295 | ; describe a free area in the data block |
307 | struct xfs_dir2_data_free |
296 | ; the freespace will be formatted as a xfs_dir2_data_unused_t |
308 | offset dw ? ; start of freespace |
297 | struct xfs_dir2_data_free |
309 | length dw ? ; length of freespace |
298 | offset dw ? ; start of freespace |
310 | ends |
299 | length dw ? ; length of freespace |
311 | 300 | ends |
|
312 | 301 | ||
Line -... | Line 302... | ||
- | 302 | ; header for the data blocks |
|
- | 303 | ; always at the beginning of a directory-sized block |
|
- | 304 | ; the code knows that XFS_DIR2_DATA_FD_COUNT is 3 |
|
- | 305 | struct xfs_dir2_data_hdr |
|
- | 306 | magic dd ? ; XFS_DIR2_DATA_MAGIC or XFS_DIR2_BLOCK_MAGIC |
|
- | 307 | bestfree xfs_dir2_data_free |
|
- | 308 | bestfree2 xfs_dir2_data_free |
|
- | 309 | bestfree3 xfs_dir2_data_free |
|
Line 313... | Line 310... | ||
313 | ; header for the data blocks |
310 | ends |
314 | ; always at the beginning of a directory-sized block |
311 | |
315 | ; the code knows that XFS_DIR2_DATA_FD_COUNT is 3 |
312 | struct xfs_dir3_data_hdr xfs_dir2_data_hdr |
316 | struct xfs_dir2_data_hdr |
313 | magic3 dd ? |
317 | magic dd ? ; XFS_DIR2_DATA_MAGIC or XFS_DIR2_BLOCK_MAGIC |
314 | crc dd ? |
Line 318... | Line -... | ||
318 | bestfree xfs_dir2_data_free |
- | |
319 | bestfree2 xfs_dir2_data_free |
315 | blkno DQ ? |
320 | bestfree3 xfs_dir2_data_free |
316 | lsn DQ ? |
321 | ends |
317 | uuid rb 16 |
322 | 318 | owner DQ ? |
|
323 | 319 | ends |
|
Line 324... | Line -... | ||
324 | ; leaf block entry |
- | |
325 | struct xfs_dir2_leaf_entry |
320 | |
326 | hashval dd ? ; hash value of name |
321 | ; leaf block entry |
327 | address dd ? ; address of data entry |
322 | struct xfs_dir2_leaf_entry |
328 | ends |
323 | hashval dd ? ; hash value of name |
329 | 324 | address dd ? ; address of data entry |
|
330 | 325 | ends |
|
331 | ; the tail of directory block |
326 | |
Line 332... | Line -... | ||
332 | struct xfs_dir2_block_tail |
- | |
333 | count dd ? ; count of leaf entries |
- | |
334 | stale dd ? ; count of stale leaf entries |
- | |
335 | ends |
- | |
336 | - | ||
337 | - | ||
338 | ; generic single-block structure, for xfs_db |
- | |
339 | struct xfs_dir2_block |
- | |
340 | hdr xfs_dir2_data_hdr |
- | |
341 | u xfs_dir2_data_union |
327 | ; the tail of directory block |
342 | ; leaf xfs_dir2_leaf_entry |
328 | struct xfs_dir2_block_tail |
343 | ; tail xfs_dir2_block_tail |
329 | count dd ? ; count of leaf entries |
344 | ends |
330 | stale dd ? ; count of stale leaf entries |
345 | 331 | ends |
|
346 | 332 | ||
Line 347... | Line -... | ||
347 | ; |
- | |
348 | struct xfs_dir2_data |
- | |
349 | hdr xfs_dir2_data_hdr ; magic XFS_DIR2_DATA_MAGIC |
333 | ; generic single-block structure, for xfs_db |
350 | u xfs_dir2_data_union |
334 | struct xfs_dir2_block |
351 | ends |
335 | hdr xfs_dir2_data_hdr ; magic XFS_DIR2_DATA_MAGIC |
352 | 336 | u xfs_dir2_data_union |
|
353 | 337 | ; leaf xfs_dir2_leaf_entry |
|
Line 354... | Line -... | ||
354 | ; |
- | |
355 | struct xfs_da_blkinfo |
- | |
356 | forw dd ? ; previous block in list |
338 | ; tail xfs_dir2_block_tail |
357 | back dd ? ; following block in list |
339 | ends |
- | 340 | ||
- | 341 | struct xfs_da_blkinfo |
|
- | 342 | forw dd ? ; previous block in list |
|
- | 343 | back dd ? ; following block in list |
|
358 | magic dw ? ; validity check on block |
344 | magic dw ? ; validity check on block |
Line -... | Line 345... | ||
- | 345 | pad dw ? ; unused |
|
- | 346 | ends |
|
- | 347 | ||
- | 348 | struct xfs_dir2_leaf_hdr |
|
- | 349 | info xfs_da_blkinfo |
|
- | 350 | count dw ? |
|
Line 359... | Line -... | ||
359 | pad dw ? ; unused |
- | |
360 | ends |
351 | stale dw ? |
361 | 352 | ends |
|
362 | 353 | ||
363 | ; leaf block header |
354 | struct xfs_da3_blkinfo xfs_da_blkinfo |
364 | struct xfs_dir2_leaf_hdr |
355 | crc dd ? ; CRC of block |
365 | info xfs_da_blkinfo ; header for da routines |
356 | blkno DQ ? ; first block of the buffer |
366 | count dw ? ; count of entries |
357 | lsn DQ ? ; sequence number of last write |
367 | stale dw ? ; count of stale entries |
358 | uuid rb 16 ; filesystem we belong to |
Line -... | Line 359... | ||
- | 359 | owner DQ ? ; inode that owns the block |
|
- | 360 | ends |
|
- | 361 | ||
- | 362 | struct xfs_dir3_leaf_hdr |
|
- | 363 | info xfs_da3_blkinfo |
|
- | 364 | count dw ? |
|
Line 368... | Line -... | ||
368 | ends |
- | |
369 | 365 | stale dw ? |
|
370 | 366 | pad dd ? |
|
371 | ; leaf block tail |
367 | ends |
372 | struct xfs_dir2_leaf_tail |
368 | |
373 | bestcount dd ? |
369 | ; bests and tail are at the end of the block for single-leaf only |
374 | ends |
370 | ; (magic = XFS_DIR2_LEAF1_MAGIC not XFS_DIR2_LEAFN_MAGIC) |
Line 375... | Line -... | ||
375 | - | ||
376 | - | ||
377 | ; leaf block |
- | |
378 | ; bests and tail are at the end of the block for single-leaf only |
- | |
379 | ; (magic = XFS_DIR2_LEAF1_MAGIC not XFS_DIR2_LEAFN_MAGIC) |
- | |
380 | struct xfs_dir2_leaf |
- | |
381 | hdr xfs_dir2_leaf_hdr ; leaf header |
- | |
382 | ents xfs_dir2_leaf_entry ; entries |
- | |
383 | ; bests dw ? ; best free counts |
- | |
384 | ; tail xfs_dir2_leaf_tail ; leaf tail |
- | |
385 | ends |
371 | struct xfs_dir2_leaf |
386 | 372 | hdr xfs_dir2_leaf_hdr |
|
387 | 373 | ents xfs_dir2_leaf_entry |
|
388 | ; header of 'free' block part |
374 | ; bests dw ? |
389 | struct xfs_dir2_free_hdr |
375 | ; tail xfs_dir2_leaf_tail |
Line 390... | Line -... | ||
390 | magic dd ? ; XFS_DIR2_FREE_MAGIC |
- | |
391 | firstdb dd ? ; db of first entry |
- | |
392 | nvalid dd ? ; count of valid entries |
376 | ends |
393 | nused dd ? ; count of used entries |
377 | |
394 | ends |
378 | struct xfs_dir3_leaf |
395 | 379 | hdr xfs_dir3_leaf_hdr |
|
Line 396... | Line -... | ||
396 | - | ||
397 | ; 'free' part of directiry block |
- | |
398 | struct xfs_dir2_free |
380 | ents xfs_dir2_leaf_entry |
399 | hdr xfs_dir2_free_hdr ; block header |
381 | ; bests |
400 | bests dw ? ; best free counts |
382 | ; tail |
401 | ; unused entries are -1 (XFS_NULL) |
383 | ends |
Line -... | Line 384... | ||
- | 384 | ||
- | 385 | struct xfs_dir2_free_hdr |
|
- | 386 | magic dd ? ; XFS_DIR2_FREE_MAGIC |
|
- | 387 | firstdb dd ? ; db of first entry |
|
- | 388 | nvalid dd ? ; count of valid entries |
|
- | 389 | nused dd ? ; count of used entries |
|
- | 390 | ends |
|
- | 391 | ||
- | 392 | struct xfs_da_node_hdr |
|
- | 393 | info xfs_da_blkinfo |
|
- | 394 | count dw ? |
|
Line 402... | Line 395... | ||
402 | ends |
395 | level dw ? |
403 | 396 | ends |
|
404 | 397 | ||
405 | ; b+tree node header |
398 | struct xfs_da_node_entry |
406 | struct xfs_da_node_hdr |
399 | hashval dd ? ; hash value for this descendant |
Line 407... | Line -... | ||
407 | info xfs_da_blkinfo |
- | |
408 | count dw ? |
400 | before dd ? ; Btree block before this key |
409 | level dw ? |
401 | ends |
410 | ends |
402 | |
411 | 403 | struct xfs_da_intnode |
|
412 | 404 | hdr xfs_da_node_hdr |
|
413 | ; b+tree node |
405 | btree xfs_da_node_entry |
414 | struct xfs_da_node_entry |
406 | ends |
Line -... | Line 407... | ||
- | 407 | ||
- | 408 | struct xfs_da3_node_hdr |
|
- | 409 | info xfs_da3_blkinfo |
|
Line 415... | Line 410... | ||
415 | hashval dd ? ; hash value for this descendant |
410 | count dw ? |
416 | before dd ? ; Btree block before this key |
411 | level dw ? |
417 | ends |
412 | pad dd ? |
418 | 413 | ends |
|
419 | 414 | ||
Line 420... | Line -... | ||
420 | ; |
- | |
421 | struct xfs_da_intnode |
415 | struct xfs_da3_intnode |
422 | hdr xfs_da_node_hdr |
416 | hdr xfs_da3_node_hdr |
423 | btree xfs_da_node_entry |
417 | btree xfs_da_node_entry |
424 | ends |
418 | ends |
Line -... | Line 419... | ||
- | 419 | ||
- | 420 | ; packet extent |
|
Line 425... | Line 421... | ||
425 | 421 | struct xfs_bmbt_rec |
|
426 | - | ||
427 | ; packet extent |
422 | l0 DQ ? |
Line 428... | Line 423... | ||
428 | struct xfs_bmbt_rec |
423 | l1 DQ ? |
429 | l0 dq ? |
424 | ends |
430 | l1 dq ? |
425 | |
431 | ends |
426 | ; unpacked extent |
432 | 427 | struct xfs_bmbt_irec |
|
433 | 428 | br_startoff DQ ? |
|
434 | ; unpacked extent |
429 | br_startblock DQ ? |
435 | struct xfs_bmbt_irec |
430 | br_blockcount dd ? |
436 | br_startoff dq ? ; starting file offset |
431 | br_state dd ? |
Line -... | Line 432... | ||
- | 432 | ends |
|
- | 433 | ||
- | 434 | struct xfs_dir2_bmx |
|
- | 435 | bmx xfs_bmbt_rec |
|
- | 436 | ends |
|
- | 437 | ||
- | 438 | ; bmap root header |
|
- | 439 | struct xfs_bmdr_block |
|
Line 437... | Line -... | ||
437 | br_startblock dq ? ; starting block number |
- | |
438 | br_blockcount dd ? ; number of blocks |
440 | bb_level dw ? ; 0 is a leaf |
439 | br_state dd ? ; extent state |
441 | bb_numrecs dw ? ; current number of data records |
440 | ends |
442 | ends |
441 | 443 | ||
- | 444 | ; key structure for non-leaf levels of the tree |
|
- | 445 | struct xfs_bmbt_key |
|
- | 446 | br_startoff DQ ? ; starting file offset |
|
442 | 447 | ends |
|
443 | ; bmap root header, on-disk form only |
448 | |
Line -... | Line 449... | ||
- | 449 | struct xfs_bmdr_ptr DQ |
|
- | 450 | ends |
|
- | 451 | ||
- | 452 | struct xfs_bmbt_ptr DQ |
|
- | 453 | ends |
|
- | 454 | ||
- | 455 | ; long form header: bmap btrees |
|
- | 456 | ; xfs_btree_lblock is xfs_bmbt_block (xfs_btree.h) |
|
- | 457 | struct xfs_bmbt_block |
|
- | 458 | bb_magic dd ? ; magic number for block type |
|
- | 459 | bb_level dw ? ; 0 is a leaf |
|
- | 460 | bb_numrecs dw ? ; current number of data records |
|
Line 444... | Line 461... | ||
444 | struct xfs_bmdr_block |
461 | bb_leftsib DQ ? ; left sibling block or NULLDFSBNO |
445 | bb_level dw ? ; 0 is a leaf |
462 | bb_rightsib DQ ? ; right sibling block or NULLDFSBNO |
446 | bb_numrecs dw ? ; current number of data records |
463 | ends |
447 | ends |
464 | |
448 | 465 | struct xfs_bmbt3_block xfs_bmbt_block |
|
449 | - | ||
450 | ; key structure for non-leaf levels of the tree |
466 | bb_blkno DQ ? |
- | 467 | bb_lsn DQ ? |
|
451 | struct xfs_bmbt_key |
468 | bb_uuid rb 16 |
452 | br_startoff dq ? ; starting file offset |
- | |
453 | ends |
- | |
454 | 469 | bb_owner DQ ? |
|
455 | - | ||
456 | sizeof.xfs_bmbt_ptr = 8 ; workaround |
- | |
457 | sizeof.xfs_bmdr_ptr = 8 ; workaround |
470 | bb_crc dd ? |
458 | 471 | bb_pad dd ? |
|
- | 472 | ends |
|
459 | 473 | ||
460 | ; long form header: bmap btrees |
- | |
461 | ; xfs_btree_lblock is xfs_bmbt_block (xfs_btree.h) |
474 | struct xfs_inode |
- | 475 | di_core xfs_dinode_core ; main info, aka core |
|
462 | struct xfs_bmbt_block |
476 | union |
463 | bb_magic dd ? ; magic number for block type |
477 | di_u db ? ; data fork inode part |
464 | bb_level dw ? ; 0 is a leaf |
478 | dir2_sf xfs_dir2_sf |
465 | bb_numrecs dw ? ; current number of data records |
479 | bmx xfs_dir2_bmx |
466 | bb_leftsib dq ? ; left sibling block or NULLDFSBNO |
480 | ends |
467 | bb_rightsib dq ? ; right sibling block or NULLDFSBNO |
481 | ; di_a db ? ; data attribute |
468 | ends |
- | |
469 | 482 | ends |
|
470 | 483 | ||
471 | ; high level inode structure |
484 | struct xfs_agf |
- | 485 | agf_magicnum dd ? ; magic number == XFS_AGF_MAGIC |
|
- | 486 | agf_versionnum dd ? ; header version == XFS_AGF_VERSION |
|
- | 487 | agf_seqno dd ? ; sequence # starting from 0 |
|
- | 488 | agf_length dd ? ; size in blocks of AG |
|
- | 489 | agf_roots dd ? |
|
- | 490 | agf_levels dd ? |
|
- | 491 | agf_flfirst dd ? |
|
- | 492 | agf_fllast dd ? |
|
- | 493 | agf_flcount dd ? |
|
- | 494 | agf_freeblks dd ? ; free blocks in AG |
|
- | 495 | ends |
|
- | 496 | ||
- | 497 | ; internal data for every XFS partition |
|
- | 498 | ; this _is_ XFS partition structure |
|
- | 499 | ; most fields are unpacked or bswap'ed values of the superblock, see xfs_sb structure above |
|
- | 500 | struct XFS PARTITION |
|
- | 501 | Lock MUTEX ? ; access mutex |
|
- | 502 | sectsize dd ? |
|
- | 503 | blocksize dd ? |
|
472 | struct xfs_inode |
504 | dirblocksize dd ? |
- | 505 | inodesize dd ? |
|
473 | di_core xfs_dinode_core ; main info, aka core |
506 | rootino DQ ? |
- | 507 | versionnum dd ? |
|
- | 508 | version dd ? |
|
- | 509 | features2 dd ? |
|
- | 510 | inopblock dd ? |
|
- | 511 | blkpdirblk dd ? |
|
474 | di_next_unlinked dd ? ; unlinked but still used inode (if any, XFS_NULL otherwise) |
512 | blocklog dd ? |
475 | di_u db ? ; data fork inode part |
- | |
476 | ; di_a db ? ; data attribute |
- | |
477 | ends |
513 | sectlog dd ? |
478 | 514 | inodelog dd ? |
|
- | 515 | inopblog dd ? |
|
- | 516 | agblklog dd ? |
|
- | 517 | sectpblog dd ? |
|
479 | 518 | dirblklog dd ? ; in fsblocks |
|
- | 519 | sectpblock dd ? |
|
480 | ; internal data for every XFS partition |
520 | agblocks dd ? |
- | 521 | dir2_leaf_offset_blocks DQ ? |
|
- | 522 | dir2_free_offset_blocks DQ ? |
|
- | 523 | agblockmask DQ ? |
|
481 | ; this _is_ XFS partition structure |
524 | inode_core_size dd ? |
482 | ; most fields are unpacked or bswap'ed values from the superblock, so see xfs_sb structure above |
- | |
483 | struct XFS PARTITION |
- | |
484 | Lock MUTEX ? ; access mutex |
- | |
485 | blocksize dd ? |
525 | features_incompat dd ? |
486 | sectsize dd ? |
526 | ftype_size dd ? |
487 | dirblocksize dd ? |
527 | dir_block_magic dd ? |
488 | rootino dq ? |
528 | dir_data_magic dd ? |
489 | cur_block dd ? |
529 | dir_leaf1_magic dw ? |
- | 530 | dir_leafn_magic dw ? |
|
490 | cur_inode dd ? |
531 | da_node_magic dw ? |
491 | cur_sect dd ? |
532 | bmap_magic dd ? |
- | 533 | bmbt_block_size dd ? |
|
- | 534 | dir_block_size dd ? |
|
- | 535 | dir_data_size dd ? |
|
- | 536 | dir_leaf1_size dd ? |
|
- | 537 | dir_leafn_size dd ? |
|
- | 538 | da_node_size dd ? |
|
- | 539 | da_blkinfo_size dd ? |
|
- | 540 | ; helpers, temporary vars, etc |
|
- | 541 | ; should go to file descriptor and local vars? |
|
- | 542 | cur_block dd ? |
|
- | 543 | cur_block_data dd ? |
|
- | 544 | cur_inode dd ? |
|
- | 545 | cur_sect dd ? |
|
- | 546 | cur_dirblock dd ? |
|
- | 547 | tmp_inode dd ? |
|
- | 548 | extent xfs_bmbt_irec |
|
- | 549 | bytes_to_read dd ? |
|
- | 550 | bytes_read dd ? |
|
- | 551 | bytes_left_in_file DQ ? |
|
- | 552 | file_offset DQ ? |
|
- | 553 | file_buffer dd ? |
|
- | 554 | entries_read dd ? |
|
- | 555 | requested_cnt dd ? |
|
- | 556 | dir_sf_self_done dd ? |
|
- | 557 | dir_sf_parent_done dd ? |
|
- | 558 | entries_left_in_dir dd ? |
|
- | 559 | entries_to_skip dd ? |
|
- | 560 | max_dirblockaddr dd ? |
|
- | 561 | cur_inode_save dd ? |
|
- | 562 | shortform_inodelen dd ? |
|
- | 563 | bdfe_nameenc dd ? |
|
- | 564 | bdfe_len dd ? |
|
- | 565 | bdfe_process dd ? |
|
- | 566 | inode_self DQ ? |
|
- | 567 | bdfe_buf dd ? |
|
- | 568 | eof dd ? |
|
- | 569 | offset_begin DQ ? |
|
- | 570 | offset_end DQ ? |
|
- | 571 | ends |
|
- | 572 | ||
- | 573 | struct f70s0arg |
|
- | 574 | sf dd ? |
|
- | 575 | offset DQ ? |
|
- | 576 | count dd ? |
|
- | 577 | buf dd ? |
|
- | 578 | zero db ? |
|
- | 579 | path dd ? |
|
- | 580 | ends |
|
- | 581 | ||
- | 582 | struct f70s1arg |
|
- | 583 | sf dd ? |
|
- | 584 | start_idx dd ? |
|
- | 585 | encoding dd ? |
|
492 | cur_dirblock dd ? |
586 | count dd ? |