From: Josef Bacik Date: Thu, 18 Dec 2014 16:34:23 +0000 (-0500) Subject: fs: don't softlockup when evicting inodes X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29249e14d6e3379a5c4bb098dd4beddfefbc606f;p=linux fs: don't softlockup when evicting inodes If I run an fs_mark job that creates millions of empty files and then immediately unmount the file system I will get a softlockup during unmount. This box has ~140gb of RAM so we never hit sufficient memory pressure to evict enough inodes during the runtime of the benchmark, which means I see around 80 million inodes being evicted at unmount time. With this patch my box no longer softlocks up. Thanks, Signed-off-by: Josef Bacik --- diff --git a/fs/inode.c b/fs/inode.c index ad60555b4768f..f266765674858 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -581,6 +581,7 @@ static void dispose_list(struct list_head *head) list_del_init(&inode->i_lru); evict(inode); + cond_resched(); } } @@ -613,6 +614,7 @@ void evict_inodes(struct super_block *sb) inode_lru_list_del(inode); spin_unlock(&inode->i_lock); list_add(&inode->i_lru, &dispose); + cond_resched_lock(&inode_sb_list_lock); } spin_unlock(&inode_sb_list_lock);