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-11-15 20:01:45.680732432 -0800
+++ 25-akpm/fs/inode.c	2004-11-15 20:01:45.684731824 -0800
@@ -309,6 +309,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;
_