|
@@ -596,7 +596,6 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
|
|
|
struct gfs2_inode *dip = GFS2_I(dir), *ip;
|
|
|
struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
|
|
|
struct gfs2_glock *io_gl;
|
|
|
- struct dentry *d;
|
|
|
int error, free_vfs_inode = 0;
|
|
|
u32 aflags = 0;
|
|
|
unsigned blocks = 1;
|
|
@@ -629,22 +628,13 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
|
|
|
inode = ERR_PTR(-EISDIR);
|
|
|
goto fail_gunlock;
|
|
|
}
|
|
|
- d = d_splice_alias(inode, dentry);
|
|
|
- error = PTR_ERR(d);
|
|
|
- if (IS_ERR(d)) {
|
|
|
- inode = ERR_CAST(d);
|
|
|
- goto fail_gunlock;
|
|
|
- }
|
|
|
+ d_instantiate(dentry, inode);
|
|
|
error = 0;
|
|
|
if (file) {
|
|
|
- if (S_ISREG(inode->i_mode)) {
|
|
|
- WARN_ON(d != NULL);
|
|
|
+ if (S_ISREG(inode->i_mode))
|
|
|
error = finish_open(file, dentry, gfs2_open_common, opened);
|
|
|
- } else {
|
|
|
- error = finish_no_open(file, d);
|
|
|
- }
|
|
|
- } else {
|
|
|
- dput(d);
|
|
|
+ else
|
|
|
+ error = finish_no_open(file, NULL);
|
|
|
}
|
|
|
gfs2_glock_dq_uninit(ghs);
|
|
|
return error;
|