Re: [PATCH] ext4: fix the deadlock in mpage_da_map_and_submit()
From: Ted Ts'o <tytso@mit.edu>
Date: 2011-10-21 01:12:45
On Thu, Oct 13, 2011 at 04:13:18PM +0900, Kazuya Mio wrote:
If ext4_jbd2_file_inode() in mpage_da_map_and_submit() fails due to journal abort, this function returns to caller without unlocking the page. It leads to the deadlock, and the patch fixes this issue by calling mpage_da_submit_io(). Signed-off-by: Kazuya Mio <redacted>
Applied, thanks. This is an area where we should really clean things up next merge window, though. I'm a little uneasy that we will potentially write back some blocks even though the journal has been aborted (we do this in other error paths, so this isn't a criticism of this patch, just of the current state of affairs). The problem mpage_da_submit_io() is the only way we have to unlock the pages. In the future we should probably have a separate path to unlock the pages in case of an error. We might also want to merge mpage_da_submit_io() and mpage_da_map_and_submit(), and to also clean up a number of comments which are out of date. (For example, mpage_da_submit_io() no longer uses ext4_writepage().) - Ted