Ошибка в файловой системе ext4

 

Лукаш Чернер обнаружил ошибку заключающуюся в том, что когда вставляется отложенный экстент в дерево состояния экстентов, единственный способ избавиться от него впоследствии – создать задержанный буфер. Однако существует ограничение в реализации дерева состояния экстентов, поэтому если при вставке незаписанного экстента присутствует хотя бы один задержанный блок – весь незаписанный экстент будет помечен, как задержанный.

Если после этого осуществляется запись кода в незаписанный экстент, этот экстент в любом случае остается задержанным, а при попытке дописать код в вышеуказанный блок функция ext4_da_map_blocks() создает новый отложенный буфер и присоединяет его к некорректному блоку, что приводит к обнулению всего содержимого буфера и потере ранее сохраненных данных.

Устраняющие ошибку исправления уже выпущены для версий ядра Linux 4.x. И хотя сам Лукаш считает, что проблема также присутствует в ядре Linux начиная с версии 3.12, другие эксперты не разделяют его мнения и полагают, что ошибка проявляется только в ядре Linux 4.0 и выше.

Источник: сайт проекта Debbugs и различные слухи :)

Добавить комментарий


Защитный код
Обновить