[PATCH] switch all filesystems over to d_obtain_alias
Switch all users of d_alloc_anon to d_obtain_alias. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
committed by
Al Viro
parent
4ea3ada295
commit
440037287c
@@ -681,33 +681,24 @@ static struct dentry *fat_fh_to_dentry(struct super_block *sb,
|
||||
inode = NULL;
|
||||
}
|
||||
}
|
||||
if (!inode) {
|
||||
/* For now, do nothing
|
||||
* What we could do is:
|
||||
* follow the file starting at fh[4], and record
|
||||
* the ".." entry, and the name of the fh[2] entry.
|
||||
* The follow the ".." file finding the next step up.
|
||||
* This way we build a path to the root of
|
||||
* the tree. If this works, we lookup the path and so
|
||||
* get this inode into the cache.
|
||||
* Finally try the fat_iget lookup again
|
||||
* If that fails, then weare totally out of luck
|
||||
* But all that is for another day
|
||||
*/
|
||||
}
|
||||
if (!inode)
|
||||
return ERR_PTR(-ESTALE);
|
||||
|
||||
|
||||
/* now to find a dentry.
|
||||
* If possible, get a well-connected one
|
||||
/*
|
||||
* For now, do nothing if the inode is not found.
|
||||
*
|
||||
* What we could do is:
|
||||
*
|
||||
* - follow the file starting at fh[4], and record the ".." entry,
|
||||
* and the name of the fh[2] entry.
|
||||
* - then follow the ".." file finding the next step up.
|
||||
*
|
||||
* This way we build a path to the root of the tree. If this works, we
|
||||
* lookup the path and so get this inode into the cache. Finally try
|
||||
* the fat_iget lookup again. If that fails, then we are totally out
|
||||
* of luck. But all that is for another day
|
||||
*/
|
||||
result = d_alloc_anon(inode);
|
||||
if (result == NULL) {
|
||||
iput(inode);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
result->d_op = sb->s_root->d_op;
|
||||
result = d_obtain_alias(inode);
|
||||
if (!IS_ERR(result))
|
||||
result->d_op = sb->s_root->d_op;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -754,15 +745,8 @@ static struct dentry *fat_get_parent(struct dentry *child)
|
||||
}
|
||||
inode = fat_build_inode(sb, de, i_pos);
|
||||
brelse(bh);
|
||||
if (IS_ERR(inode)) {
|
||||
parent = ERR_CAST(inode);
|
||||
goto out;
|
||||
}
|
||||
parent = d_alloc_anon(inode);
|
||||
if (!parent) {
|
||||
iput(inode);
|
||||
parent = ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
parent = d_obtain_alias(inode);
|
||||
out:
|
||||
unlock_super(sb);
|
||||
|
||||
|
Reference in New Issue
Block a user