aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fs.h
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2011-07-28 00:41:09 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2011-08-01 01:41:17 -0400
commitf2ee7abf4c40c8e6bffced923a7c01ea2d1f6c97 (patch)
tree3c7ec119cf89f82737c55235ff7881ebeed9408f /include/linux/fs.h
parentb12362bdb61a230a67daa77bcd2a11e59b2802e1 (diff)
vfs: avoid taking inode_hash_lock on pipes and sockets
Some inodes (pipes, sockets, ...) are not hashed, no need to take contended inode_hash_lock at dismantle time. nice speedup on SMP machines on socket intensive workloads. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r--include/linux/fs.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h
index f23bcb77260c..786b3b1113cf 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2317,11 +2317,18 @@ extern int should_remove_suid(struct dentry *);
2317extern int file_remove_suid(struct file *); 2317extern int file_remove_suid(struct file *);
2318 2318
2319extern void __insert_inode_hash(struct inode *, unsigned long hashval); 2319extern void __insert_inode_hash(struct inode *, unsigned long hashval);
2320extern void remove_inode_hash(struct inode *);
2321static inline void insert_inode_hash(struct inode *inode) 2320static inline void insert_inode_hash(struct inode *inode)
2322{ 2321{
2323 __insert_inode_hash(inode, inode->i_ino); 2322 __insert_inode_hash(inode, inode->i_ino);
2324} 2323}
2324
2325extern void __remove_inode_hash(struct inode *);
2326static inline void remove_inode_hash(struct inode *inode)
2327{
2328 if (!inode_unhashed(inode))
2329 __remove_inode_hash(inode);
2330}
2331
2325extern void inode_sb_list_add(struct inode *inode); 2332extern void inode_sb_list_add(struct inode *inode);
2326 2333
2327#ifdef CONFIG_BLOCK 2334#ifdef CONFIG_BLOCK