From: OGAWA Hirofumi Date: Fri, 20 Oct 2006 06:29:11 +0000 (-0700) Subject: [PATCH] ext3/4: fix J_ASSERT(transaction->t_updates > 0) in journal_stop() X-Git-Tag: v2.6.19-rc3~49 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e2a532b26b491706bd8b5c7cfc8d767b43b8f36;p=pandora-kernel.git [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 Cc: Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- Reading git-diff-tree failed