Linux: Do drop dentry if lookup returns ENOENT
authorMarc Dionne <marc.dionne@your-file-system.com>
Wed, 19 Mar 2014 15:15:13 +0000 (11:15 -0400)
committerD Brashear <shadow@your-file-system.com>
Tue, 25 Mar 2014 16:13:41 +0000 (09:13 -0700)
commit389473032cf0b200c2c39fd5ace108bdc05c9d97
tree143b68579958a7350e3e8509de1028233a293abd
parent5cc3aec78a4329885b450c15ce228fa6fb413fdf
Linux: Do drop dentry if lookup returns ENOENT

Commit 997f7fce437787a45ae0584beaae43affbd37cce switched to using
d_invalidate instead of d_drop to prevent unhashing dentries
which are only temporarily invalid and may still be referenced
by someone having a current working directory pointing to it.
This could result in getting ENOENT from getcwd() after some
transient problems, even when the directory is there and
accessible.

The change had the side effect of potentially leaving something
visible when it has actually been removed, for instance a mountpoint
removed by "fs rm".

If afs_lookup returns ENOENT, we want to forcibly drop (unhash)
the dentry, even if it has current users.

Change-Id: I0e7b6e09b2c4ae551fa6c84235ed31f7df476b45
Reviewed-on: http://gerrit.openafs.org/10928
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: D Brashear <shadow@your-file-system.com>
src/afs/LINUX/osi_vnodeops.c