|
@@ -697,15 +697,6 @@ static int vfat_find(struct inode *dir, const struct qstr *qname,
|
|
|
return fat_search_long(dir, qname->name, len, sinfo);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * (nfsd's) anonymous disconnected dentry?
|
|
|
- * NOTE: !IS_ROOT() is not anonymous (I.e. d_splice_alias() did the job).
|
|
|
- */
|
|
|
-static int vfat_d_anon_disconn(struct dentry *dentry)
|
|
|
-{
|
|
|
- return IS_ROOT(dentry) && (dentry->d_flags & DCACHE_DISCONNECTED);
|
|
|
-}
|
|
|
-
|
|
|
static struct dentry *vfat_lookup(struct inode *dir, struct dentry *dentry,
|
|
|
unsigned int flags)
|
|
|
{
|
|
@@ -738,8 +729,7 @@ static struct dentry *vfat_lookup(struct inode *dir, struct dentry *dentry,
|
|
|
* Checking "alias->d_parent == dentry->d_parent" to make sure
|
|
|
* FS is not corrupted (especially double linked dir).
|
|
|
*/
|
|
|
- if (alias && alias->d_parent == dentry->d_parent &&
|
|
|
- !vfat_d_anon_disconn(alias)) {
|
|
|
+ if (alias && alias->d_parent == dentry->d_parent) {
|
|
|
/*
|
|
|
* This inode has non anonymous-DCACHE_DISCONNECTED
|
|
|
* dentry. This means, the user did ->lookup() by an
|
|
@@ -747,7 +737,6 @@ static struct dentry *vfat_lookup(struct inode *dir, struct dentry *dentry,
|
|
|
*
|
|
|
* Switch to new one for reason of locality if possible.
|
|
|
*/
|
|
|
- BUG_ON(d_unhashed(alias));
|
|
|
if (!S_ISDIR(inode->i_mode))
|
|
|
d_move(alias, dentry);
|
|
|
iput(inode);
|