Não consigo encontrar uma resposta simples e direta sobre quais operações de metadados do sistema de arquivos são realmente mantidas nos diários do sistema de arquivos ext4 & xfs. Note que estou não perguntando sobre o que POSIX declara ser "atômica". Estou mais preocupado com o subconjunto de operações do sistema de arquivos atômicos que são efetivamente duráveis devido à execução com um diário ativado sem ter que se inclinar para trás e fsync(2)
o tempo todo.
Operações que eu tenho bastante certeza de contar:
creat(2)
link(2)
unlink(2)
rename(2)
mkdir(2)
rmdir(2)
Operações das quais não tenho muita certeza:
symlink(2)
O symlink(2)
caso é o mais preocupante, pois não parece haver uma maneira direta fsync(2)
ou de fdatasync(2)
blocos de dados subjacentes que armazenam o conteúdo de um link simbólico. Saber que o diário cuida disso para mim seria um alívio.
fonte
Nenhum. Se você quiser ter certeza de que as alterações persistem após uma falha, fsync, period. O registro no diário garante apenas que, no caso de uma falha, nenhuma das operações listadas será concluída pela metade .
fonte
Você está ciente de que o diário ext4 opera pelo número do bloco e não pela operação, correto? "Metadados" seria outra coisa senão os blocos de dados reais para o inode fornecido, independentemente da operação usada para modificar o bloco em questão.
fonte
O xfstests parece alegar que o fsync () em um diretório deve persistir com quaisquer links simbólicos que ele contém.
Eu não verifiquei isso. É possível que eu tenha perdido alguma coisa.
O xfstests é usado por muitos desenvolvedores de sistemas de arquivos Linux. Este teste está no diretório "genérico". Isso implica que deve se aplicar a todos os sistemas de arquivos Linux. (Ou pelo menos, todos os sistemas de arquivos do dispositivo de bloco. O teste funciona usando um dispositivo de bloco virtual especial).
https://github.com/kdave/xfstests/blob/master/tests/generic/348
fonte