Goal of this patch is to not touch inode_lock for socket/pipes/anonfd inodes allocation/freeing. SINGLE dentries are attached to inodes that dont need to be linked in a list of inodes, being "inode_in_use" or "sb->s_inodes" As inode_lock was taken only to protect these lists, we avoid taking it as well. Using iput_single() from dput_single() avoids taking inode_lock at freeing time. This patch has a very noticeable effect, because we avoid dirtying of three contended cache lines in new_inode(), and five cache lines in iput() (socket8 bench result : from 19.9s to 2.3s) Signed-off-by: Eric Dumazet --- fs/anon_inodes.c | 2 +- fs/dcache.c | 2 +- fs/inode.c | 29 ++++++++++++++++++++--------- fs/pipe.c | 2 +- include/linux/fs.h | 12 +++++++++++- net/socket.c | 2 +- 6 files changed, 35 insertions(+), 14 deletions(-)