Re: Транзакционная прокладка для файловой системы
От: samius Япония http://sams-tricks.blogspot.com
Дата: 23.12.21 22:15
Оценка:
Здравствуйте, Barbar1an, Вы писали:

B>задача скучная: нужно чтобы при падении процесса, файлы оставались в последнем корректном состоянии

B>в общем нужны транзакции

В такой постановке задача не решается. Ну или я не знаю о решении. Вообще говоря, даже Flush(true) не гарантирует что на диске будет именно то, что записано до вызова Flush. А определить, когда же все-таки устройство окончательно приняло изменения файла — в общем случае нет такой возможности. Драйвер файловой системы может получать данные для записи в файл еще спустя много секунд после того, как приложение закрыло файл. Но даже если файл закрыт окончательно (не только процессом, но и системой), то устройство еще вольно перетряхивать его данные в кэше, ожидать записи других файлов, что бы оптимально разместить все в постоянной памяти. При сбое питания в такой момент — данные будут потеряны. Даже если не пытаться защититься от сбоев питания, целостность данных на уровне процесса — вопрос далеко не скучный.

Потому, задачу надо формулировать так: каким образом организовать запись, что бы можно было потом разобраться, где корректная запись, а где — мусор.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.