[PATCH] ext3: fix page lock vs journal_start ranking bug
ext3_block_truncate_page() is calling grab_cache_page() inside a JBD transaction. This is wrong, because transactions nest inside lock_page(). The deadlock is against shrink_list->ext3_journalled_writepage->journal_start. This was not noticed before because we never used to journal writepage() data in journalled-data mode. And because the deadlock against generic_file_write() is covered up by i_sem. Rework things so that we lock the page prior to starting a transaction.
Showing
Please register or sign in to comment