Try to trap some more state when an assertion which cannot happen happens. fs/jbd/transaction.c | 10 ++++++++++ kernel/ksyms.c | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff -puN fs/jbd/transaction.c~jbd-610-journal_dirty_metadata-diags fs/jbd/transaction.c --- 25/fs/jbd/transaction.c~jbd-610-journal_dirty_metadata-diags 2003-06-09 18:17:06.000000000 -0700 +++ 25-akpm/fs/jbd/transaction.c 2003-06-09 18:17:06.000000000 -0700 @@ -1111,6 +1111,16 @@ int journal_dirty_metadata(handle_t *han if (jh->b_transaction == handle->h_transaction && jh->b_jlist == BJ_Metadata) { JBUFFER_TRACE(jh, "fastpath"); + console_verbose(); + if (jh->b_transaction != journal->j_running_transaction) { + printk("jh->b_transaction=%p\n", jh->b_transaction); + printk("journal->j_running_transaction=%p\n", + journal->j_running_transaction); + printk("handle->h_transaction=%p\n", + handle->h_transaction); + printk("journal->j_committing_transaction=%p\n", + journal->j_committing_transaction); + } J_ASSERT_JH(jh, jh->b_transaction == journal->j_running_transaction); goto out_unlock_bh; diff -puN kernel/ksyms.c~jbd-610-journal_dirty_metadata-diags kernel/ksyms.c --- 25/kernel/ksyms.c~jbd-610-journal_dirty_metadata-diags 2003-06-09 18:17:06.000000000 -0700 +++ 25-akpm/kernel/ksyms.c 2003-06-09 18:17:06.000000000 -0700 @@ -614,5 +614,6 @@ EXPORT_SYMBOL(_metered_write_unlock); /* debug */ EXPORT_SYMBOL(dump_stack); EXPORT_SYMBOL(ptrace_notify); +EXPORT_SYMBOL(console_printk); -EXPORT_SYMBOL(current_kernel_time); +EXPORT_SYMBOL(current_kernel_time); _