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);
 	}
 

_