Эксперты предоставили исправление ошибки для версий Linux 4.x.
Файловая система EXT4 может привести к потере данных в ядре Linux 4.0 и более поздних версиях. Об этом сообщается в отчете на сайте проекта Debbugs.
Устраняющие ошибку исправления уже выпущены. Специалист Лукаш Чернер (Lukaš Czerner) считает, что проблема также присутствует в ядре Linux более ранних версий – начиная с версии 3.12. Другие эксперты полагают, что ошибка проявляется только в ядре Linux 4.0 и выше.
По словам Чернера, проблема состоит в том, что когда вставляется отложенный экстент в дерево состояния экстентов, единственный способ избавиться от него впоследствии – создать задержанный буфер. Однако существует ограничение в реализации дерева состояния экстентов, поэтому если при вставке незаписанного экстента присутствует хотя бы один задержанный блок – весь незаписанный экстент будет помечен, как задержанный.
Если после этого осуществляется запись кода в незаписанный экстент, этот экстент в любом случае остается задержанным, а при попытке дописать код в вышеуказанный блок функция ext4_da_map_blocks() создает новый отложенный буфер и присоединяет его к некорректному блоку, что приводит к обнулению всего содержимого буфера и потере ранее сохраненных данных.
Специалисты предоставили исправление ошибки для версий ядра Linux 4.x.
5778 К? Пф! У нас градус знаний зашкаливает!