From: Ingo Molnar break latency in invalidate_list(). Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton --- 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; _