Messages in this thread Patch in this message |  | | | Date | Thu, 10 Dec 2009 20:24:43 -0800 | | From | Greg KH <> | | Subject | [05/90] ext4: fix journal ref count in move_extent_par_page |
| |
2.6.31-stable review patch. If anyone has any objections, please let us know.
------------------ (cherry picked from commit 91cc219ad963731191247c5f2db4118be2bc341a) move_extent_par_page calls a_ops->write_begin() to increase journal handler's reference count. However, if either mext_replace_branches() or ext4_get_block fails, the increased reference count isn't decreased. This will cause a later attempt to umount of the fs to hang forever. The patch addresses the issue by calling ext4_journal_stop() if page is not NULL (which means a_ops->write_end() isn't invoked).
Signed-off-by: Peng Tao <bergwolf@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- fs/ext4/move_extent.c | 1 + 1 file changed, 1 insertion(+) --- a/fs/ext4/move_extent.c +++ b/fs/ext4/move_extent.c @@ -871,6 +871,7 @@ out: if (PageLocked(page)) unlock_page(page); page_cache_release(page); + ext4_journal_stop(handle); } out2: ext4_journal_stop(handle);
|  |