Esto me recuerda a Allocate On Flush . Cuando un sistema de archivos usa esta función, en lugar de escribir datos directamente en el disco, resta el tamaño de los datos que se escribirán en el contador de espacio libre del disco y retiene los datos en la memoria hasta que se realiza una llamada al sistema de sincronización o el núcleo decide para limpiar los tampones sucios.
En este caso, si un archivo está modificando el archivo y otro proceso lo abre, este último proceso "verá" la versión del archivo sin modificar ( o "antigua" si lo prefiere ).
Por supuesto, lo anterior es teórico y depende de varios factores, y diría que es un poco impredecible, ya que no sabe exactamente cuándo el núcleo va a enjuagar las páginas sucias. Por ejemplo, en Linux ( como también puede leer en la sección 15.3 de Comprensión del kernel de Linux ), las páginas sucias se escriben en el disco bajo las siguientes condiciones:
El caché de la página se llena demasiado y se necesitan más páginas, o la cantidad de páginas sucias se vuelve demasiado grande.
Ha transcurrido demasiado tiempo desde que una página se mantuvo sucia.
Un proceso solicita que se vacíen todos los cambios pendientes de un dispositivo de bloque o de un archivo en particular; lo hace invocando una llamada al sistema sync (), fsync () o fdatasync ().
Se sabe que esta característica se implementa en los sistemas de archivos HFS +, XFS, Reiser4, ZFS, Btrfs y ext4.