Hace un tiempo, se ha debatido sobre la posibilidad de que ext4 deje los archivos vacíos después de un desmontaje inmundo, resumido bastante bien en este artículo . Básicamente, debido a la asignación retrasada, las escrituras pueden mantenerse en la caché de escritura durante mucho más tiempo que el intervalo de confirmación predeterminado del diario ext (5 segundos).
Los problemas parecen haberse solucionado en un parche que fuerza la asignación de bloques en ciertas situaciones, forzando así los datos al disco después de 5 segundos como máximo por defecto.
Me pregunto qué sucede cuando una aplicación sobrescribe partes existentes de un archivo, sin truncar o agregar el archivo en sí. ¿Será forzado a grabar en 5 segundos también?
Parece una situación diferente a la de agregar a un archivo: al agregar, el tamaño del archivo cambia, que es un cambio de metadatos; por lo tanto, será necesaria una confirmación del diario dentro de los 5 segundos, y debido a datos = ordenados, los datos deberán escribirse antes debido a problemas de seguridad (de lo contrario, partes del archivo eliminado de otros usuarios podrían aparecer para el propietario del anexo). archivo).
Al sobrescribir los datos del archivo, no hay ninguna razón por la que la escritura de datos deba realizarse antes de la confirmación del diario de metadatos, ya que los datos antiguos pertenecen al mismo usuario que el nuevo. Entonces, ¿la escritura ocurre antes de la confirmación de todos modos, o puede retrasarse más que el intervalo de confirmación del diario? Si es así, ¿cuánto tiempo?
Actualización: Sé que todo esto es irrelevante al hacer lo correcto, es decir, usar fsync (). (Esta fue la razón principal de toda la discusión sobre ext4 y la pérdida de datos; el problema solo se refería a aplicaciones que no fsync () o no en los momentos correctos). No estoy escribiendo mi propia aplicación, pregunto porque no sé si todas mis aplicaciones hacen lo correcto, y quiero saber un marco de tiempo aproximado para tales escritos "peligrosos". La razón para preguntar es que mi controlador de gráficos causa pánico del kernel regularmente, y quiero saber si tengo que preocuparme por más de los últimos 5 segundos de escrituras de datos.