Nel kernel Linux 7.4, ext4 ha un nuovo percorso facoltativo di I/O bufferizzato basato su iomap, destinato ai file regolari. È disattivato per impostazione predefinita: per attivarlo serve l’opzione di mount buffered_iomap, e il sistema può tornare automaticamente al percorso originale quando necessario. Il pull per Linux 7.4-rc1, inviato da Theodore Ts’o il 22 ottobre 2026, comprende 31 patch di Zhang Yi; Linus Torvalds lo ha integrato il 26 ottobre.

I test FIO cambiano risultato secondo il carico

I risultati FIO attribuiti a Zhang Yi riguardano cinque scenari di scrittura. I test sono stati eseguiti su una macchina virtuale con quattro core e un dispositivo a blocchi basato su memoria.

Scenario di scritturaext4 con buffer heads (MiB/s)ext4 con iomap (MiB/s)Variazione riportata
1 MiB, con page cache4.2955.780+35%
64 KiB, con scrittura in background dei dati in cache734957+30%
64 KiB, senza cache415698+68%
1 MiB, senza cache1.4042.883+105%
1 KiB, con fsync dopo ogni scrittura0,710,60−15%

I vantaggi maggiori si registrano in due casi di scrittura senza cache, mentre le scritture da 1 KiB seguite ogni volta da fsync peggiorano. Il +105% riguarda soltanto lo scenario da 1 MiB senza cache: non descrive un aumento generale delle prestazioni di ext4. I valori sono legati a questi carichi e all’ambiente di test.

Quali funzioni ext4 non usa il nuovo percorso

Il pull elenca sei casi non supportati dalla modalità iomap: deframmentazione online, dati inline, fs-verity, fscrypt, inode senza extents e data=journal. Quando serve, ext4 può ricadere sul percorso di I/O originale.

La distinzione aiuta a capire che cosa controllare. data=journal è un’opzione di mount; cifratura, verity, dati inline ed extents sono invece attributi degli inode, cioè delle strutture che descrivono i singoli file. La documentazione del kernel indica i flag EXT4_ENCRYPT_FL, EXT4_VERITY_FL, EXT4_INLINE_DATA_FL e EXT4_EXTENTS_FL; FS_IOC_GETFLAGS permette di leggere gli attributi di un inode. La deframmentazione online è un’operazione, non un attributo persistente del file.

Perché iomap lavora con intervalli più ampi

iomap è una libreria del kernel che gestisce operazioni sui file e traduce intervalli di offset in corrispondenti aree di archiviazione. Il suo iteratore può chiedere al filesystem la mappatura più ampia disponibile: così le chiamate necessarie per ottenere le mappature possono essere distribuite su più dati. È un razionale progettuale, non una garanzia di velocità per ogni dispositivo o carico.

Che cosa cambia con data=ordered

data=journal, esclusa dal nuovo percorso, non va confusa con data=ordered. Quest’ultima modalità fa scrivere i blocchi di dati prima che ext4 registri i metadati associati; il pull specifica che gli inode gestiti dal percorso buffered-I/O con iomap non usano data=ordered. Zhang Yi ha inoltre associato a questa scelta un rischio per i dati in coda al file in caso di perdita di alimentazione.