From: Ingo Molnar <mingo@elte.hu>

break latency in invalidate_list().

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/fs/inode.c |    8 ++++++++
 1 files changed, 8 insertions(+)

diff -puN fs/inode.c~break-latency-in-invalidate_list fs/inode.c
--- 25/fs/inode.c~break-latency-in-invalidate_list	2004-09-20 10:41:21.283392240 -0700
+++ 25-akpm/fs/inode.c	2004-09-20 10:42:23.395949696 -0700
@@ -306,6 +306,14 @@ static int invalidate_list(struct list_h
 		struct list_head * tmp = next;
 		struct inode * inode;
 
+		/*
+		 * We can reschedule here without worrying about the list's
+		 * consistency because the per-sb list of inodes must not
+		 * change during umount anymore, and because iprune_sem keeps
+		 * shrink_icache_memory() away.
+		 */
+		cond_resched_lock(&inode_lock);
+
 		next = next->next;
 		if (tmp == head)
 			break;
_