From: Al Viro Date: Fri, 30 May 2014 15:25:30 +0000 (-0400) Subject: d_prune_alias(): just lock the parent and call __dentry_kill() X-Git-Tag: omap-for-v3.19/prcm-cleanup~102^2~43 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29355c3904e1765948c7721719a028b7eb5dfe1d;p=pandora-kernel.git d_prune_alias(): just lock the parent and call __dentry_kill() The only reason for games with ->d_prune() was __d_drop(), which was needed only to force dput() into killing the sucker off. Note that lock_parent() can be called under ->i_lock and won't drop it, so dentry is safe from somebody managing to kill it under us - it won't happen while we are holding ->i_lock. __dentry_kill() is called only with ->d_lockref.count being 0 (here and when picked from shrink list) or 1 (dput() and dropping the ancestors in shrink_dentry_list()), so it will never be called twice - the first thing it's doing is making ->d_lockref.count negative and once that happens, nothing will increment it. Signed-off-by: Al Viro --- Reading git-diff-tree failed