Linux 7.4-rc1’s ext4 changes add an optional iomap-based buffered-I/O path for regular files. It is off by default, and Zhang Yi’s reported FIO results vary by workload: some large writes were faster, while 1 KiB writes followed by fsync were slower.

What changes in ext4

The new route uses iomap, a kernel filesystem library, instead of ext4’s legacy buffer-head path for buffered I/O on regular files. To select it, a filesystem must be mounted with buffered_iomap; ext4 can fall back to its original path when needed. The change was part of the Linux 7.4-rc1 ext4 pull that Theodore Ts’o sent on October 22, 2026. The pull included 31 patches by Zhang Yi.

Zhang Yi’s reported FIO results vary by write pattern

On October 28, 2026, Observatorio Blockchain reported FIO measurements attributed to Zhang Yi. The tests ran on a four-core virtual machine with a memory-backed block device. Throughput changed as follows between the buffer-head and iomap paths:

FIO write scenarioBuffer-head path (MiB/s)Iomap path (MiB/s)Reported change
1 MiB page-cache writes4,2955,780+35%
64 KiB writes with background writeback734957+30%
64 KiB uncached writes415698+68%
1 MiB uncached writes1,4042,883+105%
1 KiB writes with fsync after each write0.710.60-15%

The largest reported gain belongs to 1 MiB uncached writes, not to ext4 workloads in general. The small-write result also went the other way: throughput fell when each 1 KiB write was followed by fsync. The figures describe these specific test cases.

Which ext4 settings and files are affected

The 7.4-rc1 pull lists six unsupported cases for the new path: online defragmentation, inline data, fs-verity, fscrypt, non-extent inodes and data=journal. Ext4 can fall back to its original I/O path when necessary.

These conditions involve different kinds of checks. data=journal is a mount-level data mode. Ext4 documentation describes encryption, verity, inline data and extents as inode flags, which FS_IOC_GETFLAGS retrieves for an inode. Online defragmentation is an operation, not a persistent inode flag. An administrator assessing a particular setup therefore needs to consider the mount mode and the relevant files, rather than treating them as one setting.

Why iomap uses larger mappings

Iomap’s iterator asks the filesystem to map file ranges to storage. The kernel’s design documentation explains that larger mappings can spread the cost of filesystem mapping calls across more data. That offers a rationale for why some large-write cases may benefit; it does not predict a particular benchmark result.

The pull also says that inodes using buffered iomap do not use data=ordered. That mode writes data blocks before committing associated metadata. Zhang Yi separately described a tail-data caveat under power-loss conditions.