Hi Andrew, it seems we've accidentally lost one JBD fix (probably it was my mistake when rediffing some checkpointing changes) as Kirill has noted. A transaction can currently be released when there are still some buffers on one of its checkpointing lists. Attached patch should fix it (it still seems to apply fine). Please apply it. Thanks.
Honza -- Jan Kara <[EMAIL PROTECTED]> SuSE CR Labs
We have to check that also the second checkpoint list is non-empty before dropping the transaction. Signed-off-by: Jan Kara <[EMAIL PROTECTED]> diff -rupX /home/jack/.kerndiffexclude linux-2.6.16-rc1/fs/jbd/commit.c linux-2.6.16-rc1-1-checkpoint-fix/fs/jbd/commit.c --- linux-2.6.16-rc1/fs/jbd/commit.c 2006-01-15 00:20:12.000000000 +0100 +++ linux-2.6.16-rc1-1-checkpoint-fix/fs/jbd/commit.c 2006-01-17 23:35:19.000000000 +0100 @@ -829,7 +829,8 @@ restart_loop: journal->j_committing_transaction = NULL; spin_unlock(&journal->j_state_lock); - if (commit_transaction->t_checkpoint_list == NULL) { + if (commit_transaction->t_checkpoint_list == NULL && + commit_transaction->t_checkpoint_io_list == NULL) { __journal_drop_transaction(journal, commit_transaction); } else { if (journal->j_checkpoint_transactions == NULL) {