diff -rupX /crypted/home/jack/.kerndiffexclude linux-2.6.32-SLE11-SP1/fs/jbd2/transaction.c linux-2.6.32-SLE11-SP1-1-jbd2-credits-bug//fs/jbd2/transaction.c --- linux-2.6.32-SLE11-SP1/fs/jbd2/transaction.c 2011-06-23 23:01:55.600988795 +0200 +++ linux-2.6.32-SLE11-SP1-1-jbd2-credits-bug//fs/jbd2/transaction.c 2011-06-24 15:43:40.569213743 +0200 @@ -416,6 +416,7 @@ int jbd2_journal_restart(handle_t *handl spin_lock(&journal->j_state_lock); spin_lock(&transaction->t_handle_lock); transaction->t_outstanding_credits -= handle->h_buffer_credits; + WARN_ON(transaction->t_outstanding_credits < transaction->t_nr_buffers); transaction->t_updates--; if (!transaction->t_updates) @@ -1317,6 +1318,7 @@ int jbd2_journal_stop(handle_t *handle) spin_lock(&journal->j_state_lock); spin_lock(&transaction->t_handle_lock); transaction->t_outstanding_credits -= handle->h_buffer_credits; + WARN_ON(transaction->t_outstanding_credits < transaction->t_nr_buffers); transaction->t_updates--; if (!transaction->t_updates) { wake_up(&journal->j_wait_updates); @@ -1924,6 +1926,7 @@ void __jbd2_journal_file_buffer(struct j return; case BJ_Metadata: transaction->t_nr_buffers++; + WARN_ON(transaction->t_outstanding_credits < transaction->t_nr_buffers); list = &transaction->t_buffers; break; case BJ_Forget: