Commit 154e80e4 authored by Al Viro's avatar Al Viro

Merge branch 'for-gfs2' into for-next

parents 427c77d4 845409b4
...@@ -596,7 +596,6 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, ...@@ -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_inode *dip = GFS2_I(dir), *ip;
struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode); struct gfs2_sbd *sdp = GFS2_SB(&dip->i_inode);
struct gfs2_glock *io_gl; struct gfs2_glock *io_gl;
struct dentry *d;
int error, free_vfs_inode = 0; int error, free_vfs_inode = 0;
u32 aflags = 0; u32 aflags = 0;
unsigned blocks = 1; unsigned blocks = 1;
...@@ -624,22 +623,18 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry, ...@@ -624,22 +623,18 @@ static int gfs2_create_inode(struct inode *dir, struct dentry *dentry,
inode = gfs2_dir_search(dir, &dentry->d_name, !S_ISREG(mode) || excl); inode = gfs2_dir_search(dir, &dentry->d_name, !S_ISREG(mode) || excl);
error = PTR_ERR(inode); error = PTR_ERR(inode);
if (!IS_ERR(inode)) { if (!IS_ERR(inode)) {
d = d_splice_alias(inode, dentry); if (S_ISDIR(inode->i_mode)) {
error = PTR_ERR(d); iput(inode);
if (IS_ERR(d)) { inode = ERR_PTR(-EISDIR);
inode = ERR_CAST(d);
goto fail_gunlock; goto fail_gunlock;
} }
d_instantiate(dentry, inode);
error = 0; error = 0;
if (file) { if (file) {
if (S_ISREG(inode->i_mode)) { if (S_ISREG(inode->i_mode))
WARN_ON(d != NULL);
error = finish_open(file, dentry, gfs2_open_common, opened); error = finish_open(file, dentry, gfs2_open_common, opened);
} else { else
error = finish_no_open(file, d); error = finish_no_open(file, NULL);
}
} else {
dput(d);
} }
gfs2_glock_dq_uninit(ghs); gfs2_glock_dq_uninit(ghs);
return error; return error;
...@@ -1254,11 +1249,8 @@ static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry, ...@@ -1254,11 +1249,8 @@ static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry,
if (d != NULL) if (d != NULL)
dentry = d; dentry = d;
if (dentry->d_inode) { if (dentry->d_inode) {
if (!(*opened & FILE_OPENED)) { if (!(*opened & FILE_OPENED))
if (d == NULL) return finish_no_open(file, d);
dget(dentry);
return finish_no_open(file, dentry);
}
dput(d); dput(d);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment