The Linux Kernel
5.17.0
The Linux kernel user’s and administrator’s guide
Kernel Build System
The Linux kernel firmware guide
Open Firmware and Devicetree
The Linux kernel user-space API guide
Working with the kernel development community
Development tools for the kernel
How to write kernel documentation
Kernel Hacking Guides
Linux Tracing Technologies
Kernel Maintainer Handbook
fault-injection
Kernel Livepatching
The Linux driver implementer’s API guide
Core API Documentation
locking
Accounting
Block
cdrom
Linux CPUFreq - CPU frequency and voltage scaling code in the Linux(TM) kernel
Integrated Drive Electronics (IDE)
Frame Buffer
fpga
Human Interface Devices (HID)
I2C/SMBus Subsystem
Industrial I/O
ISDN
InfiniBand
LEDs
NetLabel
Linux Networking Documentation
pcmcia
Power Management
TCM Virtual Device
timers
Serial Peripheral Interface (SPI)
1-Wire Subsystem
Linux Watchdog Support
Linux Virtualization Support
The Linux Input Documentation
Linux Hardware Monitoring
Linux GPU Driver Developer’s Guide
Security Documentation
Linux Sound Subsystem Documentation
Linux Kernel Crypto API
Filesystems in the Linux kernel
Core VFS documentation
Filesystem support layers
Filesystems
v9fs: Plan 9 Resource Sharing for Linux
Acorn Disc Filing System - ADFS
Overview of Amiga Filesystems
kAFS: AFS FILESYSTEM
autofs - how it works
Miscellaneous Device control operations for the autofs kernel module
BeOS filesystem for Linux
BFS Filesystem for Linux
BTRFS
CIFS
Ceph Distributed File System
Coda Kernel-Venus Interface
Configfs - Userspace-driven Kernel Object Configuration
Cramfs - cram a filesystem onto a small ROM
Direct Access for files
DebugFS
DLMFS
eCryptfs: A stacked cryptographic filesystem for Linux
efivarfs - a (U)EFI variable filesystem
Enhanced Read-Only File System - EROFS
The Second Extended Filesystem
Ext3 Filesystem
ext4 Data Structures and Algorithms
1. About this Book
2. High Level Design
3. Global Structures
4. Dynamic Structures
WHAT IS Flash-Friendly File System (F2FS)?
Global File System 2
uevents and GFS2
Glock internal locking rules
Macintosh HFS Filesystem for Linux
Macintosh HFSPlus Filesystem for Linux
Read/Write HPFS 2.09
FUSE
Fuse I/O Modes
Inotify - A Powerful yet Simple File Change Notification System
ISO9660 Filesystem
NILFS2
NFS
The Linux NTFS filesystem driver
NTFS3
OCFS2 filesystem
OCFS2 file system - online file check
Optimized MPEG Filesystem (OMFS)
ORANGEFS
Overlay Filesystem
The /proc Filesystem
The QNX6 Filesystem
Ramfs, rootfs and initramfs
relay interface (formerly relayfs)
ROMFS - ROM File System
SPU Filesystem
Squashfs 4.0 Filesystem
sysfs - _The_ filesystem for exporting kernel objects
SystemV Filesystem
Tmpfs
UBI File System
UBIFS Authentication Support
UDF file system
virtiofs: virtio-fs host<->guest shared file system
VFAT
XFS Delayed Logging Design
XFS Self Describing Metadata
ZoneFS - Zone filesystem for Zoned block devices
Linux Memory Management Documentation
BPF Documentation
USB support
Linux PCI Bus Subsystem
Linux SCSI Subsystem
Assorted Miscellaneous Devices Documentation
Linux Scheduler
MHI
TTY
Assembler Annotations
CPU Architectures
Kernel tools
Unsorted Documentation
Atomic Types
Atomic bitops
Memory Barriers
General notification mechanism
Translations
The Linux Kernel
»
Filesystems in the Linux kernel
»
ext4 Data Structures and Algorithms
View page source
ext4 Data Structures and Algorithms
¶
1. About this Book
1.1. License
1.2. Terminology
1.3. Other References
2. High Level Design
2.1. Blocks
2.2. Layout
2.3. Flexible Block Groups
2.4. Meta Block Groups
2.5. Lazy Block Group Initialization
2.6. Special inodes
2.7. Block and Inode Allocation Policy
2.8. Checksums
2.9. Bigalloc
2.10. Inline Data
2.10.1. Inline Directories
2.11. Large Extended Attribute Values
2.12. Verity files
3. Global Structures
3.1. Super Block
3.2. Block Group Descriptors
3.3. Block and inode Bitmaps
3.4. Inode Table
3.5. Multiple Mount Protection
3.6. Journal (jbd2)
3.6.1. Layout
3.6.2. External Journal
3.6.3. Block Header
3.6.4. Super Block
3.6.5. Descriptor Block
3.6.6. Data Block
3.6.7. Revocation Block
3.6.8. Commit Block
3.6.9. Fast commits
3.6.10. Fast Commit Replay Idempotence
3.6.11. Journal Checkpoint
3.7. Orphan file
4. Dynamic Structures
4.1. Index Nodes
4.1.1. Inode Size
4.1.2. Finding an Inode
4.1.3. Inode Timestamps
4.2. The Contents of inode.i_block
4.2.1. Symbolic Links
4.2.2. Direct/Indirect Block Addressing
4.2.3. Extent Tree
4.2.4. Inline Data
4.3. Directory Entries
4.3.1. Linear (Classic) Directories
4.3.2. Hash Tree Directories
4.4. Extended Attributes
4.4.1. Attribute Name Indices
4.4.2. POSIX ACLs