aboutsummaryrefslogtreecommitdiffstats
path: root/fs/inode.c
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 /fs/inode.c
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 'fs/inode.c')
-rw-r--r--fs/inode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/inode.c b/fs/inode.c
index 9dab13ae6ef7..e445be2a18f9 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -399,12 +399,12 @@ void __insert_inode_hash(struct inode *inode, unsigned long hashval)
399EXPORT_SYMBOL(__insert_inode_hash); 399EXPORT_SYMBOL(__insert_inode_hash);
400 400
401/** 401/**
402 * remove_inode_hash - remove an inode from the hash 402 * __remove_inode_hash - remove an inode from the hash
403 * @inode: inode to unhash 403 * @inode: inode to unhash
404 * 404 *
405 * Remove an inode from the superblock. 405 * Remove an inode from the superblock.
406 */ 406 */
407void remove_inode_hash(struct inode *inode) 407void __remove_inode_hash(struct inode *inode)
408{ 408{
409 spin_lock(&inode_hash_lock); 409 spin_lock(&inode_hash_lock);
410 spin_lock(&inode->i_lock); 410 spin_lock(&inode->i_lock);
@@ -412,7 +412,7 @@ void remove_inode_hash(struct inode *inode)
412 spin_unlock(&inode->i_lock); 412 spin_unlock(&inode->i_lock);
413 spin_unlock(&inode_hash_lock); 413 spin_unlock(&inode_hash_lock);
414} 414}
415EXPORT_SYMBOL(remove_inode_hash); 415EXPORT_SYMBOL(__remove_inode_hash);
416 416
417void end_writeback(struct inode *inode) 417void end_writeback(struct inode *inode)
418{ 418{