Il y a quelque temps, il y a eu des discussions sur le fait qu'ext4 pourrait laisser des fichiers vides après un démontage impur, résumé assez bien dans cet article . Fondamentalement, en raison de l'allocation retardée, les écritures peuvent être conservées dans le cache d'écriture pendant une durée beaucoup plus longue que l'intervalle de validation par défaut du journal ext (5 secondes).
Les problèmes semblent avoir été résolus dans un correctif qui force l'allocation de blocs dans certaines situations, forçant ainsi les données sur le disque après au plus 5 secondes par défaut.
Je me demande ce qui se passe lorsqu'une application écrase des parties existantes d'un fichier, sans tronquer ou ajouter le fichier lui-même. Cela sera-t-il également forcé de disque dans les 5 secondes?
Cela semble être une situation différente de l'ajout à un fichier: lors de l'ajout, la taille du fichier change, ce qui est un changement de métadonnées; par conséquent, une validation du journal sera nécessaire dans les 5 secondes, et en raison des données = commandées, les données devront être écrites avant cela pour des raisons de sécurité (sinon des parties des fichiers supprimés d'autres utilisateurs pourraient apparaître pour le propriétaire de la pièce jointe). fichier).
Lorsque vous écrasez simplement les données du fichier, il n'y a aucune raison pour que l'écriture de données doive avoir lieu avant la validation du journal de métadonnées, car les anciennes données appartiennent au même utilisateur que le nouveau. L'écriture a-t-elle donc lieu avant la validation ou peut-elle être retardée plus longtemps que l'intervalle de validation du journal? Si oui, combien de temps?
Mise à jour: je sais que tout cela n'est pas pertinent lorsque l'on fait la bonne chose, c'est-à-dire en utilisant fsync (). (C'était la raison principale de toutes les discussions sur ext4 et la perte de données - le problème ne concernait que les applications non fsync () ing, ou pas au bon moment.) Je n'écris pas ma propre application, je demande parce que je Je ne sais pas si toutes mes applications font la bonne chose, et je veux connaître un délai approximatif pour de telles écritures "dangereuses". La raison de cette question est que mon pilote graphique provoque régulièrement des paniques du noyau, et je veux savoir si je dois m'inquiéter de plus que les 5 dernières secondes d'écriture de données.