aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2005-01-07 21:50:26 -0800
committerLinus Torvalds <torvalds@evo.osdl.org>2005-01-07 21:50:26 -0800
commit8f254b62810cb1333e24bbabd3cd64637ea5f5d3 (patch)
treeda2290fad695d75e88fd8094c99b9853aca6e0b5 /fs
parente2e366589bea54b80fe5af6a412a9e7b308a22e1 (diff)
downloadhistory-8f254b62810cb1333e24bbabd3cd64637ea5f5d3.tar.gz
[PATCH] break latency in invalidate_list()
break latency in invalidate_list(). Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/inode.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/inode.c b/fs/inode.c
index 016962a47b0c68..b6066773ad8210 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -306,6 +306,14 @@ static int invalidate_list(struct list_head *head, struct list_head *dispose)
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;