Isso me lembra Allocate On Flush . Quando um sistema de arquivos usa esse recurso, em vez de gravar dados diretamente no disco, subtrai o tamanho dos dados a serem gravados do contador de espaço livre do disco e mantém os dados na memória até que uma chamada de sistema de sincronização seja executada ou o kernel decida para lavar os tampões sujos.
Nesse caso, se o arquivo estiver sendo modificado por um processo e for aberto por outro, o último processo "verá" a versão não modificada ( ou "antiga", se você preferir ) do arquivo.
Obviamente, os itens acima são teóricos e dependem de vários fatores, e eu diria um pouco imprevisível - já que você não sabe exatamente quando o kernel vai liberar as páginas sujas. Por exemplo, no Linux ( como você também pode ler na seção 15.3 de Entendendo o kernel do Linux ), as páginas sujas são gravadas no disco nas seguintes condições:
O cache da página fica muito cheio e são necessárias mais páginas ou o número de páginas sujas se torna muito grande.
Muito tempo se passou desde que uma página ficou suja.
Um processo solicita que todas as alterações pendentes de um dispositivo de bloco ou de um arquivo específico sejam liberadas; isso é feito chamando uma chamada de sistema sync (), fsync () ou fdatasync ().
Sabe-se que esse recurso é implementado nos sistemas de arquivos HFS +, XFS, Reiser4, ZFS, Btrfs e ext4.