

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

_
