Lines Matching +full:in +full:- +full:tree

1 .. SPDX-License-Identifier: GPL-2.0
4 ------------------------------
7 storage in ``inode.i_block`` can be used in different ways. In general,
14 The target of a symbolic link will be stored in this field if the target
21 In ext2/3, file block numbers were mapped to logical block numbers by
22 means of an (up to) three level 1-1 block map. To find the logical block
43 Extent Tree
46 In ext4, the file to logical block map has been replaced with an extent
47 tree. Under the old scheme, allocating a contiguous run of 1,000 blocks
51 very large files with a single extent, at a considerable reduction in
52 metadata block use, and some improvement in disk efficiency. The inode
53 must have the extents flag (0x80000) flag set for this feature to be in
56 Extents are arranged as a tree. Each node of the tree begins with a
60 points to a block containing more nodes in the extent tree. If the node
63 point to the file's data blocks. The root node of the extent tree is
64 stored in ``inode.i_block``, which allows for the first four extents to
67 The extent tree header is recorded in ``struct ext4_extent_header``,
70 .. list-table::
72 :header-rows: 1
74 * - Offset
75 - Size
76 - Name
77 - Description
78 * - 0x0
79 - __le16
80 - eh_magic
81 - Magic number, 0xF30A.
82 * - 0x2
83 - __le16
84 - eh_entries
85 - Number of valid entries following the header.
86 * - 0x4
87 - __le16
88 - eh_max
89 - Maximum number of entries that could follow the header.
90 * - 0x6
91 - __le16
92 - eh_depth
93 - Depth of this extent node in the extent tree. 0 = this extent node
95 extent nodes. The extent tree can be at most 5 levels deep: a logical
97 satisfies ``4*(((blocksize - 12)/12)^n) >= 2^32`` is 5.
98 * - 0x8
99 - __le32
100 - eh_generation
101 - Generation of the tree. (Used by Lustre, but not standard ext4).
103 Internal nodes of the extent tree, also known as index nodes, are
106 .. list-table::
108 :header-rows: 1
110 * - Offset
111 - Size
112 - Name
113 - Description
114 * - 0x0
115 - __le32
116 - ei_block
117 - This index node covers file blocks from 'block' onward.
118 * - 0x4
119 - __le32
120 - ei_leaf_lo
121 - Lower 32-bits of the block number of the extent node that is the next
122 level lower in the tree. The tree node pointed to can be either another
124 * - 0x8
125 - __le16
126 - ei_leaf_hi
127 - Upper 16-bits of the previous field.
128 * - 0xA
129 - __u16
130 - ei_unused
131 -
133 Leaf nodes of the extent tree are recorded as ``struct ext4_extent``,
136 .. list-table::
138 :header-rows: 1
140 * - Offset
141 - Size
142 - Name
143 - Description
144 * - 0x0
145 - __le32
146 - ee_block
147 - First file block number that this extent covers.
148 * - 0x4
149 - __le16
150 - ee_len
151 - Number of blocks covered by extent. If the value of this field is <=
153 the extent is uninitialized and the actual extent length is ``ee_len`` -
156 * - 0x6
157 - __le16
158 - ee_start_hi
159 - Upper 16-bits of the block number to which this extent points.
160 * - 0x8
161 - __le32
162 - ee_start_lo
163 - Lower 32-bits of the block number to which this extent points.
167 end of each extent tree data block (because (2^x % 12) >= 4). Therefore,
168 the 32-bit checksum is inserted into this space. The 4 extents in the
176 .. list-table::
178 :header-rows: 1
180 * - Offset
181 - Size
182 - Name
183 - Description
184 * - 0x0
185 - __le32
186 - eb_checksum
187 - Checksum of the extent block, crc32c(uuid+inum+igeneration+extentblock)