summaryrefslogtreecommitdiffstats
path: root/fs/binfmt_elf_fdpic.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2016-05-30 02:13:30 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2016-05-30 02:28:22 +0200
commit550dce01dd606c88a837138aa448ccd367fb0cbb (patch)
treee6cc564fc18e012ed2bdd76ee5e5d0785c310c50 /fs/binfmt_elf_fdpic.c
parentbinfmt_misc: ->s_root is not going anywhere (diff)
downloadlinux-550dce01dd606c88a837138aa448ccd367fb0cbb.tar.xz
linux-550dce01dd606c88a837138aa448ccd367fb0cbb.zip
unify dentry_iput() and dentry_unlink_inode()
There is a lot of duplication between dentry_unlink_inode() and dentry_iput(). The only real difference is that dentry_unlink_inode() bumps ->d_seq and dentry_iput() doesn't. The argument of the latter is known to have been unhashed, so anybody who might've found it in RCU lookup would already be doomed to a ->d_seq mismatch. And we want to avoid pointless smp_rmb() there. This patch makes dentry_unlink_inode() bump ->d_seq only for hashed dentries. It's safe (d_delete() calls that sucker only if we are holding the only reference to dentry, so rehash is not going to happen) and it allows to use dentry_unlink_inode() in __dentry_kill() and get rid of dentry_iput(). The interesting question here is profiling; it *is* a hot path, and extra conditional jumps in there might or might not be painful. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/binfmt_elf_fdpic.c')
0 files changed, 0 insertions, 0 deletions