Issue of the Implementation # F0004
ext4: deadlocks after allocation failure in ext4_init_io_end()
If call to ext4_init_io_end() is failed under memory pressure, mpage_da_submit_io() just returns -ENOMEM and left all pages from the extent locked. That leads to a deadlock as soon as callers of mpage_da_submit_io() expect it unlocks all the pages. If call to ext4_init_io_end() is failed under memory pressure, ext4_writepage() calls redirty_page_for_writepage() but left the page locked. That leads to a deadlock since it is expected the page is unlocked after writepage().
Fixed in kernel 3.10-rc3