Kent Overstreet, desenvolvedor do sistema de arquivos Bcachefs, propôs patches que permitem ao kernel Linux trabalhar com o sistema de arquivos Bcachefs mesmo após a corrupção significativa de metadados, reconstruindo as árvores B danificadas a partir dos metadados das estruturas inode e dirent, se necessário. As alterações foram aceitas por Linus Torvalds e incluídas na atualização de teste do kernel 6.9-rc3 de hoje.
As mudanças permitem que sistemas de arquivos danificados sejam montados e fornecem acesso a todos ou quase todos os dados no sistema de arquivos afetados por um erro recente que levou à corrupção do sistema de arquivos. O erro ocorria quando, após a atualização das ferramentas, uma tentativa de atualização das estruturas do sistema de arquivos era iniciada, mas não concluída, fazendo com que o kernel com a antiga implementação do Bcachefs tentasse reverter a versão das estruturas, ignorando a atualização incompleta. Essa situação resultava em um "modo de cérebro dividido", onde nenhuma das operações podia ser completada e as estruturas B-tree do sistema de arquivos não eram mais consistentes com o conteúdo real.
O patch mencionado permite que o funcionamento continue mesmo em casos como este. Uma das limitações da tecnologia é que, na presença de snapshots, a árvore B para snapshots deve estar presente e em bom estado.
Fonte: opennet.ru
