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-03-24 01:16:46.681329944 -0800 +++ 25-akpm/fs/jbd/transaction.c 2004-03-24 01:17:11.879499240 -0800 @@ -1331,10 +1331,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); } _