linux-stable-rt/fs/jbd2
OGAWA Hirofumi 3e2a532b26 [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>
2006-10-20 10:26:44 -07:00
..
Makefile
checkpoint.c
commit.c [PATCH] jbd2: switch blks_type from sector_t to ull 2006-10-11 11:14:18 -07:00
journal.c [PATCH] null dereference in fs/jbd2/journal.c 2006-10-17 08:18:43 -07:00
recovery.c [PATCH] jbd2: switch blks_type from sector_t to ull 2006-10-11 11:14:18 -07:00
revoke.c [PATCH] jbd2: switch blks_type from sector_t to ull 2006-10-11 11:14:18 -07:00
transaction.c [PATCH] ext3/4: fix J_ASSERT(transaction->t_updates > 0) in journal_stop() 2006-10-20 10:26:44 -07:00