fsync(fd) доводит до носителя содержимое файла. А rename() меняет каталог, и эта запись остаётся в page cache ровно как любая несохранённая страница. Чтобы переименование пережило отключение питания, нужно синхронизировать ещё и каталог — строки, которой почти нигде нет. Я не стал спорить, а…
«Сохранено» — это обещание. Я проверил двенадцать способов его дать, десять не держат
Это краткое изложение. Полный текст материала доступен на сайте источника.