diff options
author | OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> | 2006-10-20 08:29:11 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-20 19:26:44 +0200 |
commit | 3e2a532b26b491706bd8b5c7cfc8d767b43b8f36 (patch) | |
tree | 641db5da4c1adbeee04ce6594746cec51f581ff0 /drivers/md/.gitignore | |
parent | [PATCH] mm: more commenting on lock ordering (diff) | |
download | linux-3e2a532b26b491706bd8b5c7cfc8d767b43b8f36.tar.xz linux-3e2a532b26b491706bd8b5c7cfc8d767b43b8f36.zip |
[PATCH] ext3/4: fix J_ASSERT(transaction->t_updates > 0) in journal_stop()
A disk generated some I/O error, after it, I hitted
J_ASSERT(transaction->t_updates > 0) in journal_stop().
It seems to happened on ext3_truncate() path from stack trace. Then,
maybe the following case may trigger J_ASSERT(transaction->t_updates > 0).
ext3_truncate()
-> ext3_free_branches()
-> ext3_journal_test_restart()
-> ext3_journal_restart()
-> journal_restart()
transaction->t_updates--;
/* another process aborted journal */
-> start_this_handle()
returns -EROFS without transaction->t_updates++;
-> ext3_journal_stop()
-> journal_stop()
J_ASSERT(transaction->t_updates > 0)
If journal was aborted in middle of journal_restart(), ext3_truncate()
may trigger J_ASSERT().
Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: <linux-ext4@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/md/.gitignore')
0 files changed, 0 insertions, 0 deletions