Uma perigosa condição de corrida (race condition) no Btrfs, que poderia levar a travamentos do sistema (lockup) durante a exclusão de subvolumes, foi corrigida em uma nova leva de patches que já foi mesclada por Linus Torvalds rumo ao kernel Linux 6.17-rc5. A mudança resolve um problema em que remoção e inserção de inodes no xarray podiam ocorrer ao mesmo tempo, deixando o sistema em um estado instável — especialmente durante operações de limpeza e subvolume delete. Para quem administra servidores que fazem snapshotting e rotação de subvolumes com frequência, é o tipo de correção que você quer ter ontem.
Correção de race condition evita travamentos
O cerne do bug estava no gerenciamento do xarray de inodes: em cenários de alta concorrência, a rotina podia desalocar (evict) e reinserir o mesmo inode quase ao mesmo tempo, deixando um “inode desconectado” no mapa. O patch troca a remoção simples por um cmpxchg no xarray, garantindo que só o inode esperado seja removido. Em termos práticos, isso evita que a exclusão de subvolumes fique “presa” e cause lockup — uma dor de cabeça clássica de quem já precisou matar processos do cleaner à força.
Melhorias para compressão e integridade em sistemas com páginas de 64KB
Outra correção importante mira um público crescente: quem roda ARM64/PowerPC (e outros perfis) com páginas de 64KB. Havia um bug nas leituras de dados comprimidos quando o block size do Btrfs era menor (4KB), que podia devolver folios parcialmente preenchidos — na prática, corrupção de leitura sob certas combinações de layout e readahead. O patch introduz um controle mais estrito de mesclagem de leituras comprimidas, rastreando o extent map correto para evitar junções indevidas. Resultado: leituras consistentes e dados íntegros mesmo nesse descompasso entre tamanho de página e de bloco.
Em paralelo, o Btrfs voltou a aceitar a sintaxe “lzo:n
” nas opções de montagem e simplesmente ignora o nível informado — por compatibilidade com sistemas e scripts antigos. Historicamente, LZO não tem níveis de compressão múltiplos no Btrfs; endurecer a validação havia quebrado montagens que passavam “lzo:1
”. Agora, essas montagens voltam a funcionar (comportamento efetivo idêntico a lzo
).
Qualidade de vida para administração: validações e contabilidade
Pequena, porém bem-vinda: o comando btrfs device add
agora recusa adicionar dispositivos com menos de 1 MB. Parece detalhe, mas reduz casos de configuração inválida (ou testes descuidados) que terminavam em estados difíceis de diagnosticar. Administrações automatizadas — labs, CI e ambientes de containers — agradecem.
Também houve um acerto na contabilidade simples de quota de dados comprimidos (squota), garantindo que os contadores “comprimidos” e “não comprimidos” andem juntos — essencial para relatórios corretos e políticas de limitação coerentes em ambientes multiusuário. Se você monitora alertas por uso de qgroups, esse ajuste evita sustos.
Por que isso importa (além do changelog)
Sistemas de arquivos copy-on-write como o Btrfs brilham quando a orquestra é perfeita: snapshots rápidos, send/receive, compressão transparente, scrub, qgroups. Mas basta um race condition no lugar errado para transformar uma tarefa trivial (apagar um subvolume) em uma sessão de debug no meio da madrugada. Esta rodada de correções vai direto ao ponto: elimina um risco de lockup, protege leituras comprimidas em máquinas com páginas de 64KB e fecha arestas que atrapalhavam a vida de quem automatiza e audita storage. E o melhor: tudo isso já está no ramo principal do kernel — portanto, deverá chegar rapidamente às próximas releases estáveis das distribuições.