9p: v9fs_fid_add() can't fail now
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
aaeb7ecfb4
commit
2ea03e1d62
|
@ -41,12 +41,11 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid)
|
void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid)
|
||||||
{
|
{
|
||||||
spin_lock(&dentry->d_lock);
|
spin_lock(&dentry->d_lock);
|
||||||
hlist_add_head(&fid->dlist, (struct hlist_head *)&dentry->d_fsdata);
|
hlist_add_head(&fid->dlist, (struct hlist_head *)&dentry->d_fsdata);
|
||||||
spin_unlock(&dentry->d_lock);
|
spin_unlock(&dentry->d_lock);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -25,6 +25,6 @@
|
||||||
|
|
||||||
struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
|
struct p9_fid *v9fs_fid_lookup(struct dentry *dentry);
|
||||||
struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
|
struct p9_fid *v9fs_fid_clone(struct dentry *dentry);
|
||||||
int v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
|
void v9fs_fid_add(struct dentry *dentry, struct p9_fid *fid);
|
||||||
struct p9_fid *v9fs_writeback_fid(struct dentry *dentry);
|
struct p9_fid *v9fs_writeback_fid(struct dentry *dentry);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -692,9 +692,7 @@ v9fs_create(struct v9fs_session_info *v9ses, struct inode *dir,
|
||||||
"inode creation failed %d\n", err);
|
"inode creation failed %d\n", err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
err = v9fs_fid_add(dentry, fid);
|
v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
|
||||||
goto error;
|
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
}
|
}
|
||||||
return ofid;
|
return ofid;
|
||||||
|
@ -830,9 +828,7 @@ struct dentry *v9fs_vfs_lookup(struct inode *dir, struct dentry *dentry,
|
||||||
inode = NULL;
|
inode = NULL;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
result = v9fs_fid_add(dentry, fid);
|
v9fs_fid_add(dentry, fid);
|
||||||
if (result < 0)
|
|
||||||
goto error_iput;
|
|
||||||
inst_out:
|
inst_out:
|
||||||
/*
|
/*
|
||||||
* If we had a rename on the server and a parallel lookup
|
* If we had a rename on the server and a parallel lookup
|
||||||
|
@ -845,7 +841,6 @@ inst_out:
|
||||||
if (!IS_ERR(res))
|
if (!IS_ERR(res))
|
||||||
return res;
|
return res;
|
||||||
result = PTR_ERR(res);
|
result = PTR_ERR(res);
|
||||||
error_iput:
|
|
||||||
iput(inode);
|
iput(inode);
|
||||||
error:
|
error:
|
||||||
p9_client_clunk(fid);
|
p9_client_clunk(fid);
|
||||||
|
|
|
@ -333,9 +333,7 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
|
||||||
/* Now set the ACL based on the default value */
|
/* Now set the ACL based on the default value */
|
||||||
v9fs_set_create_acl(inode, fid, dacl, pacl);
|
v9fs_set_create_acl(inode, fid, dacl, pacl);
|
||||||
|
|
||||||
err = v9fs_fid_add(dentry, fid);
|
v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
|
||||||
goto error;
|
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
|
|
||||||
v9inode = V9FS_I(inode);
|
v9inode = V9FS_I(inode);
|
||||||
|
@ -453,12 +451,11 @@ static int v9fs_vfs_mkdir_dotl(struct inode *dir,
|
||||||
err);
|
err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
err = v9fs_fid_add(dentry, fid);
|
v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
|
||||||
goto error;
|
|
||||||
v9fs_set_create_acl(inode, fid, dacl, pacl);
|
v9fs_set_create_acl(inode, fid, dacl, pacl);
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
fid = NULL;
|
fid = NULL;
|
||||||
|
err = 0;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Not in cached mode. No need to populate
|
* Not in cached mode. No need to populate
|
||||||
|
@ -747,11 +744,10 @@ v9fs_vfs_symlink_dotl(struct inode *dir, struct dentry *dentry,
|
||||||
err);
|
err);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
err = v9fs_fid_add(dentry, fid);
|
v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
|
||||||
goto error;
|
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
fid = NULL;
|
fid = NULL;
|
||||||
|
err = 0;
|
||||||
} else {
|
} else {
|
||||||
/* Not in cached mode. No need to populate inode with stat */
|
/* Not in cached mode. No need to populate inode with stat */
|
||||||
inode = v9fs_get_inode(dir->i_sb, S_IFLNK, 0);
|
inode = v9fs_get_inode(dir->i_sb, S_IFLNK, 0);
|
||||||
|
@ -900,11 +896,10 @@ v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, umode_t omode,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
v9fs_set_create_acl(inode, fid, dacl, pacl);
|
v9fs_set_create_acl(inode, fid, dacl, pacl);
|
||||||
err = v9fs_fid_add(dentry, fid);
|
v9fs_fid_add(dentry, fid);
|
||||||
if (err < 0)
|
|
||||||
goto error;
|
|
||||||
d_instantiate(dentry, inode);
|
d_instantiate(dentry, inode);
|
||||||
fid = NULL;
|
fid = NULL;
|
||||||
|
err = 0;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Not in cached mode. No need to populate inode with stat.
|
* Not in cached mode. No need to populate inode with stat.
|
||||||
|
|
Loading…
Reference in New Issue