Há algum tempo, houve uma discussão sobre o ext4 potencialmente deixando arquivos vazios após uma desmontagem impura, resumida muito bem neste artigo . Basicamente, devido à alocação atrasada, as gravações podem ser mantidas no cache de gravação por um tempo muito maior que o intervalo de confirmação padrão do diário ext (5 segundos).
Os problemas parecem ter sido corrigidos em um patch que força a alocação de blocos em determinadas situações, forçando os dados para o disco após, no máximo, 5 segundos por padrão.
Gostaria de saber o que acontece quando um aplicativo substitui partes existentes de um arquivo, sem truncar ou anexar o próprio arquivo. Isso também será forçado a disco dentro de 5 segundos?
Parece uma situação diferente da anexada a um arquivo: ao anexar, o tamanho do arquivo é alterado, que é uma alteração de metadados; portanto, uma confirmação de diário será necessária dentro de 5 segundos e, devido a dados = pedidos, os dados deverão ser gravados antes disso por questões de segurança (caso contrário, partes de arquivos excluídos de outros usuários poderão aparecer para o proprietário do anexo Arquivo).
Ao substituir apenas os dados do arquivo, não há motivo para que a gravação dos dados deva ocorrer antes da confirmação do diário de metadados, pois os dados antigos pertencem ao mesmo usuário que o novo. A gravação ocorre antes do commit, de qualquer maneira, ou pode demorar mais que o intervalo de commit do diário? Se sim, quanto tempo?
Atualização: Eu sei que tudo isso é irrelevante ao fazer a coisa certa, ou seja, usando fsync (). (Esse foi o principal motivo de toda a discussão sobre ext4 e perda de dados - o problema dizia respeito apenas a aplicativos que não são fsync () ou não nos momentos certos.) Não estou escrevendo meu próprio aplicativo, estou perguntando porque não sei se todos os meus aplicativos fazem a coisa certa e quero saber um prazo aproximado para essas gravações "perigosas". O motivo para perguntar é que meu driver gráfico causa pânico no kernel regularmente e quero saber se tenho que me preocupar com mais do que os últimos 5 segundos de gravação de dados.