Dispositivos de bloco fornecem buffer . Isso significa que write()
em um dispositivo de bloco pode retornar sucesso, antes que o kernel tenha gravado os dados no dispositivo. Um programa pode esperar por todas as gravações em buffer chamando fsync()
.
Eu usei dd
ou cat
para gravar uma imagem do sistema de arquivos em um dispositivo. Esses comandos não chamam fsync()
por padrão.
Em seguida, suponha que eu queira mount
do dispositivo de bloco escrito como um sistema de arquivos.
Suponho que seja mais seguro, por exemplo, use o comando sync
antes de montá-lo. Mas e se eu não sincronizar o dispositivo de bloco? É possível que o sistema de arquivos tente ler alguns blocos, que ainda não foram gravados no dispositivo? Então poderia ler o conteúdo antigo do dispositivo e não os dados corretos da imagem do sistema de arquivos?
Meu principal interesse está no comportamento do Linux. (E o StackExchange me incentiva a fazer uma pergunta específica. Eu também posso promover qualquer comportamento alternativo ou histórico: -).
Tags cache linux block-device buffer