From Takashi

lock profiling shows 

- mpage_writepages
- sync_supers

Are causing latency problems.  This adds some conditional schedules to
help fix things

Index: linux-2.6.8-rc1/fs/fs-writeback.c
===================================================================
--- linux-2.6.8-rc1.orig/fs/fs-writeback.c	2004-07-15 02:41:40.000000000 +1000
+++ linux-2.6.8-rc1/fs/fs-writeback.c	2004-07-15 10:03:21.302037961 +1000
@@ -360,6 +360,7 @@
 		}
 		spin_unlock(&inode_lock);
 		iput(inode);
+		cond_resched();
 		spin_lock(&inode_lock);
 		if (wbc->nr_to_write <= 0)
 			break;
@@ -419,6 +420,7 @@
 	}
 	spin_unlock(&sb_lock);
 	spin_unlock(&inode_lock);
+	cond_resched();
 }
 
 /*
Index: linux-2.6.8-rc1/fs/super.c
===================================================================
--- linux-2.6.8-rc1.orig/fs/super.c	2004-07-15 10:03:10.180807305 +1000
+++ linux-2.6.8-rc1/fs/super.c	2004-07-15 10:03:21.303037802 +1000
@@ -320,6 +320,7 @@
 {
 	struct super_block * sb;
 restart:
+	cond_resched();
 	spin_lock(&sb_lock);
 	sb = sb_entry(super_blocks.next);
 	while (sb != sb_entry(&super_blocks))
