ext3 transaction batching has been ineffective since the scheduler changes forced us to replace the yield() with a schedule(). Using schedule_timeout(1) fixes it up again. Benchmarking is positive with wither a 1 or 10 millisecond delay in there, so there appears to be no need to play around with HZ. --- 25-akpm/fs/jbd/transaction.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN fs/jbd/transaction.c~ext3-transaction-batching-fix fs/jbd/transaction.c --- 25/fs/jbd/transaction.c~ext3-transaction-batching-fix 2004-04-06 20:48:42.012097736 -0700 +++ 25-akpm/fs/jbd/transaction.c 2004-04-06 20:48:42.028095304 -0700 @@ -1354,10 +1354,10 @@ int journal_stop(handle_t *handle) * by 30x or more... */ if (handle->h_sync) { - set_current_state(TASK_RUNNING); do { old_handle_count = transaction->t_handle_count; - schedule(); + set_current_state(TASK_UNINTERRUPTIBLE); + schedule_timeout(1); } while (old_handle_count != transaction->t_handle_count); } _