Neil, I think this is a better fix... --- 2.4.19-pre10/fs/jbd/transaction.c~ext3-buffer-time Wed Jun 5 23:34:07 2002 +++ 2.4.19-pre10-akpm/fs/jbd/transaction.c Wed Jun 5 23:48:02 2002 @@ -1092,7 +1092,6 @@ int journal_dirty_metadata (handle_t *ha spin_lock(&journal_datalist_lock); set_bit(BH_JBDDirty, &bh->b_state); - set_buffer_flushtime(bh); J_ASSERT_JH(jh, jh->b_transaction != NULL); @@ -2015,6 +2014,13 @@ void journal_file_buffer(struct journal_ spin_unlock(&journal_datalist_lock); } +static void jbd_refile_buffer(struct buffer_head *bh) +{ + if (buffer_dirty(bh) && (bh->b_list != BUF_DIRTY)) + set_buffer_flushtime(bh); + refile_buffer(bh); +} + /* * Remove a buffer from its current buffer list in preparation for * dropping it from its current transaction entirely. If the buffer has @@ -2042,7 +2048,7 @@ void __journal_refile_buffer(struct jour J_ASSERT_JH(jh, jh->b_transaction->t_state == T_RUNNING); } else { /* Onto BUF_DIRTY for writeback */ - refile_buffer(jh2bh(jh)); + jbd_refile_buffer(jh2bh(jh)); } } -