[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:
Christoph Hellwig
2008-08-11 15:49:04 +02:00
committed by Al Viro
parent 4ea3ada295
commit 440037287c
19 changed files with 78 additions and 305 deletions
+3 -29
View File
@@ -148,7 +148,6 @@ xfs_fs_fh_to_dentry(struct super_block *sb, struct fid *fid,
{
struct xfs_fid64 *fid64 = (struct xfs_fid64 *)fid;
struct inode *inode = NULL;
struct dentry *result;
if (fh_len < xfs_fileid_length(fileid_type))
return NULL;
@@ -164,16 +163,7 @@ xfs_fs_fh_to_dentry(struct super_block *sb, struct fid *fid,
break;
}
if (!inode)
return NULL;
if (IS_ERR(inode))
return ERR_CAST(inode);
result = d_alloc_anon(inode);
if (!result) {
iput(inode);
return ERR_PTR(-ENOMEM);
}
return result;
return d_obtain_alias(inode);
}
STATIC struct dentry *
@@ -182,7 +172,6 @@ xfs_fs_fh_to_parent(struct super_block *sb, struct fid *fid,
{
struct xfs_fid64 *fid64 = (struct xfs_fid64 *)fid;
struct inode *inode = NULL;
struct dentry *result;
switch (fileid_type) {
case FILEID_INO32_GEN_PARENT:
@@ -195,16 +184,7 @@ xfs_fs_fh_to_parent(struct super_block *sb, struct fid *fid,
break;
}
if (!inode)
return NULL;
if (IS_ERR(inode))
return ERR_CAST(inode);
result = d_alloc_anon(inode);
if (!result) {
iput(inode);
return ERR_PTR(-ENOMEM);
}
return result;
return d_obtain_alias(inode);
}
STATIC struct dentry *
@@ -213,18 +193,12 @@ xfs_fs_get_parent(
{
int error;
struct xfs_inode *cip;
struct dentry *parent;
error = xfs_lookup(XFS_I(child->d_inode), &xfs_name_dotdot, &cip, NULL);
if (unlikely(error))
return ERR_PTR(-error);
parent = d_alloc_anon(VFS_I(cip));
if (unlikely(!parent)) {
iput(VFS_I(cip));
return ERR_PTR(-ENOMEM);
}
return parent;
return d_obtain_alias(VFS_I(cip));
}
const struct export_operations xfs_export_operations = {
+3 -4
View File
@@ -311,11 +311,10 @@ xfs_open_by_handle(
return new_fd;
}
dentry = d_alloc_anon(inode);
if (dentry == NULL) {
iput(inode);
dentry = d_obtain_alias(inode);
if (IS_ERR(dentry)) {
put_unused_fd(new_fd);
return -XFS_ERROR(ENOMEM);
return PTR_ERR(dentry);
}
/* Ensure umount returns EBUSY on umounts while this file is open. */