Подробности

[В начало]

Проблема в реализации № F0004

Краткое описание

ext4: взаимная блокировка после нехватки памяти в ext4_init_io_end()

Подробное описание

Если ext4_init_io_end() завершается ошибкой ввиду нехватки памяти, mpage_da_submit_io() просто аозвращает -ENOMEM и оставляет заблокированными все страницы из extent. Это приводит к взаимной блокировке, т.к. ожидается, что mpage_da_submit_io() разблокирует все страницы перед своим завершением. Если ext4_init_io_end() завершается ошибкой ввиду нехватки памяти, ext4_writepage() вызывает redirty_page_for_writepage(), но оставляет страницу заблокированной. Это приводит к взаимной блокировке, т.к. ожидается, что страница находится в незаблокированном состоянии после writepage().

Компонент

linux-kernel 3.9

Принято

https://lkml.org/lkml/2013/5/13/426
commit

Статус

Исправлено в kernel 3.10-rc3

[В начало]