LINUX.ORG.RU

История изменений

Исправление 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 сам по себе должен быть атомарен по отношению к блэкатуту. Это делается силами журнала.