diff options
author | David S. Miller <davem@davemloft.net> | 2019-12-31 13:37:13 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-12-31 13:37:13 -0800 |
commit | 31d518f35e1a80268a24a855be9477eb458540ad (patch) | |
tree | 28494f630aede8f95d4ed2ebbfd14c222bd24fa6 /fs/inode.c | |
parent | 9e860947d8d7a1504476ac49abfce90a4ce600f3 (diff) | |
parent | 738d2902773e30939a982c8df7a7f94293659810 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Simple overlapping changes in bpf land wrt. bpf_helper_defs.h
handling.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'fs/inode.c')
-rw-r--r-- | fs/inode.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/inode.c b/fs/inode.c index fef457a42882..96d62d97694e 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -676,6 +676,7 @@ int invalidate_inodes(struct super_block *sb, bool kill_dirty) struct inode *inode, *next; LIST_HEAD(dispose); +again: spin_lock(&sb->s_inode_list_lock); list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) { spin_lock(&inode->i_lock); @@ -698,6 +699,12 @@ int invalidate_inodes(struct super_block *sb, bool kill_dirty) inode_lru_list_del(inode); spin_unlock(&inode->i_lock); list_add(&inode->i_lru, &dispose); + if (need_resched()) { + spin_unlock(&sb->s_inode_list_lock); + cond_resched(); + dispose_list(&dispose); + goto again; + } } spin_unlock(&sb->s_inode_list_lock); |