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