The Linux Kernel Logo
  • Development process
  • Submitting patches
  • Code of conduct
  • Maintainer handbook
  • All development-process docs
  • Core API
  • Driver APIs
  • Subsystems
    • Core subsystems
    • Human interfaces
    • Networking interfaces
    • Storage interfaces
      • 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
          • bcachefs Documentation
          • BeOS filesystem for Linux
          • BFS Filesystem for Linux
          • BTRFS
          • 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
          • EROFS - Enhanced Read-Only File System
          • 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
          • FUSE-over-io-uring design documentation
          • Inotify - A Powerful yet Simple File Change Notification System
          • ISO9660 Filesystem
          • NILFS2
          • NFS
          • 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
          • CIFS
          • SPU Filesystem
          • Squashfs 4.0 Filesystem
          • sysfs - _The_ filesystem for exporting kernel objects
          • Tmpfs
          • UBI File System
          • UBIFS Authentication Support
          • UDF file system
          • virtiofs: virtio-fs host<->guest shared file system
          • VFAT
          • XFS Filesystem Documentation
          • ZoneFS - Zone filesystem for Zoned block devices
      • Block
      • CD-ROM
      • SCSI Subsystem
      • TCM Virtual Device
      • NVMe Subsystem
    • Other subsystems
  • Locking
  • Licensing rules
  • Writing documentation
  • Development tools
  • Testing guide
  • Hacking guide
  • Tracing
  • Fault injection
  • Livepatching
  • Rust
  • Administration
  • Build system
  • Reporting issues
  • Userspace tools
  • Userspace API
  • Firmware
  • Firmware and Devicetree
  • CPU architectures
  • Unsorted documentation
  • Translations
The Linux Kernel
  • Kernel subsystem documentation
  • 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
Previous Next

© Copyright The kernel development community.

Built with Sphinx using a theme provided by Read the Docs.