A mudança de ext4 integrada ao desenvolvimento do Linux 7.4 em 26 de outubro inclui um caminho opcional de E/S em buffer baseado em iomap para arquivos regulares. Ele fica desativado por padrão: para ativá-lo, é preciso usar a opção de montagem buffered_iomap. O ext4 pode voltar automaticamente ao caminho de E/S original quando necessário.
Os resultados FIO atribuídos a Zhang Yi variam conforme o padrão de escrita. Quatro cenários registraram maior vazão com iomap; um teste de gravações pequenas com fsync a cada escrita teve resultado menor. Os números vieram de uma máquina virtual com quatro núcleos e um dispositivo de bloco apoiado em memória.
O que os testes mediram
A tabela compara os resultados relatados para ext4 com buffer heads e com iomap. MiB/s significa mebibytes por segundo.
| Cenário de escrita | ext4 com buffer heads (MiB/s) | ext4 com iomap (MiB/s) | Variação relatada |
| Blocos de 1 MiB gravados no page cache | 4.295 | 5.780 | +35% |
| Blocos de 64 KiB com gravação em segundo plano | 734 | 957 | +30% |
| Blocos de 64 KiB sem cache | 415 | 698 | +68% |
| Blocos de 1 MiB sem cache | 1.404 | 2.883 | +105% |
Blocos de 1 KiB, com fsync após cada gravação | 0,71 | 0,60 | -15% |
O maior ganho relatado, 105%, corresponde apenas às gravações sem cache de 1 MiB. Já as gravações de 1 KiB seguidas de fsync a cada operação tiveram queda de 15%. Esses resultados mostram por que o padrão de escrita importa: uma carga que grava blocos grandes pode se comportar de maneira diferente de outra que confirma cada gravação pequena.
Como o iomap organiza as gravações
O iomap é uma biblioteca do kernel usada em operações de sistemas de arquivos. Em vez de tratar cada parte de uma operação isoladamente, o mecanismo trabalha com intervalos que relacionam posições de um arquivo a áreas de armazenamento. Mapeamentos maiores podem reduzir a frequência de chamadas de mapeamento do sistema de arquivos para a mesma quantidade de dados. Essa é uma justificativa de projeto, não uma garantia de ganho para toda carga ou dispositivo.
Quais condições afetam a compatibilidade
A lista de condições incompatíveis com a nova rota inclui desfragmentação on-line, dados inline, fs-verity, fscrypt, inodes sem extents e o modo de montagem data=journal. Quando necessário, o ext4 pode recorrer ao caminho original.
Essas condições envolvem tanto a montagem quanto arquivos específicos. data=journal é uma opção de montagem; criptografia, verity, dados inline e extents são atributos de inode. A interface FS_IOC_GETFLAGS permite consultar atributos de inode. Já a desfragmentação on-line é uma operação, não um atributo persistente do inode.
O que muda para data=ordered
data=ordered é um modo em que os blocos de dados são gravados antes da confirmação dos metadados associados. O pull de ext4 registra que os inodes atendidos pela rota iomap não usam esse modo. Em uma observação separada, Zhang Yi apontou uma ressalva relacionada aos dados no fim do arquivo após uma perda de energia.