18a98ec7cSDarrick J. Wong.. SPDX-License-Identifier: GPL-2.0
28a98ec7cSDarrick J. Wong
38a98ec7cSDarrick J. WongHigh Level Design
48a98ec7cSDarrick J. Wong=================
58a98ec7cSDarrick J. Wong
68a98ec7cSDarrick J. WongAn ext4 file system is split into a series of block groups. To reduce
78a98ec7cSDarrick J. Wongperformance difficulties due to fragmentation, the block allocator tries
88a98ec7cSDarrick J. Wongvery hard to keep each file's blocks within the same group, thereby
98a98ec7cSDarrick J. Wongreducing seek times. The size of a block group is specified in
10*3103084aSWang Jianjian``sb.s_blocks_per_group`` blocks, though it can also calculated as 8 *
118a98ec7cSDarrick J. Wong``block_size_in_bytes``. With the default block size of 4KiB, each group
128a98ec7cSDarrick J. Wongwill contain 32,768 blocks, for a length of 128MiB. The number of block
138a98ec7cSDarrick J. Wonggroups is the size of the device divided by the size of a block group.
148a98ec7cSDarrick J. Wong
158a98ec7cSDarrick J. WongAll fields in ext4 are written to disk in little-endian order. HOWEVER,
168a98ec7cSDarrick J. Wongall fields in jbd2 (the journal) are written to disk in big-endian
178a98ec7cSDarrick J. Wongorder.
188a98ec7cSDarrick J. Wong
198a98ec7cSDarrick J. Wong.. include:: blocks.rst
208a98ec7cSDarrick J. Wong.. include:: blockgroup.rst
218a98ec7cSDarrick J. Wong.. include:: special_inodes.rst
228a98ec7cSDarrick J. Wong.. include:: allocators.rst
238a98ec7cSDarrick J. Wong.. include:: checksums.rst
248a98ec7cSDarrick J. Wong.. include:: bigalloc.rst
258a98ec7cSDarrick J. Wong.. include:: inlinedata.rst
268a98ec7cSDarrick J. Wong.. include:: eainode.rst
2784fb7ca4SEric Biggers.. include:: verity.rst
28