История изменений
Исправление Manhunt, (текущая версия) :
Ну так структура и восстановится целостная. Вот только она не обязательно будет соответствовать той, которая была до сбоя.
Журнал должен содержать информацию достаточную для того, чтобы rollback вернул дерево к тому виду, в котором оно было до начала транзакции. Казалось бы, это самый простой способ вернуть целостную структуру.
А как, по-твоему, должна сохраняться предыдущая информация при обеспечении атомарности?
1. Рассматриваем последовательность системных вызовов write - rename над один и тем же файлом. ФС должна разделить эти вызовы барьером (http://en.wikipedia.org/wiki/Memory_barrier): пока все данные от write полностью не вывалены на диск, отправлять на диск метаданные от rename - запрещено.
2. Rename сам по себе должен быть атомарен по отношению к блэкатуту. Это делается силами журнала.
Исходная версия Manhunt, :
Ну так структура и восстановится целостная. Вот только она не обязательно будет соответствовать той, которая была до сбоя.
Журнал должен содержать информацию достаточную для того, чтобы rollback вернул дерево к тому виду, в котором оно было до начала транзакции. Казалось бы, это самой простой способ вернуть целостную структуру.
А как, по-твоему, должна сохраняться предыдущая информация при обеспечении атомарности?
1. Рассматриваем последовательность системных вызовов write - rename над один и тем же файлом. ФС должна разделить эти вызовы барьером (http://en.wikipedia.org/wiki/Memory_barrier): пока все данные от write полностью не вывалены на диск, отправлять на диск метаданные от rename - запрещено.
2. Rename сам по себе должен быть атомарен по отношению к блэкатуту. Это делается силами журнала.