Це нагадує мені Allocate On Flush . Коли файлова система використовує цю функцію, замість того, щоб записувати дані безпосередньо на диск, вона віднімає розмір даних, що підлягають запису з лічильника вільного простору на диску, і зберігає дані в пам'яті, поки не буде виконано системний виклик синхронізації або вирішення ядра для промивання брудних буферів.
У цьому випадку, якщо файл модифікується одним процесом і відкривається іншим процесом, останній процес "побачить" немодифіковану ( або "стару", якщо ви бажаєте ) версію файлу.
Звичайно, вищезазначене є теоретичним і залежить від різних факторів, і я б сказав трохи непередбачувано - оскільки ви точно не знаєте, коли ядро збирає брудні сторінки. Наприклад, у Linux ( як ви також можете прочитати у розділі 15.3 Розуміння ядра Linux ), брудні сторінки записуються на диск за таких умов:
Кеш сторінок стає занадто повним, і потрібно більше сторінок, або кількість брудних сторінок стає занадто великою.
Забагато часу минуло, оскільки сторінка залишилася брудною.
Процес вимагає очистити всі очікувані зміни блокового пристрою або певного файлу; це робиться шляхом виклику системного виклику sync (), fsync () або fdatasync ().
Ця функція, як відомо, реалізується в файлових системах HFS +, XFS, Reiser4, ZFS, Btrfs та ext4.