Merge branch 'for-gfs2' into for-next
This commit is contained in:
commit
154e80e4c3
@ -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;
|
||||
@ -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);
|
||||
error = PTR_ERR(inode);
|
||||
if (!IS_ERR(inode)) {
|
||||
d = d_splice_alias(inode, dentry);
|
||||
error = PTR_ERR(d);
|
||||
if (IS_ERR(d)) {
|
||||
inode = ERR_CAST(d);
|
||||
if (S_ISDIR(inode->i_mode)) {
|
||||
iput(inode);
|
||||
inode = ERR_PTR(-EISDIR);
|
||||
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;
|
||||
@ -1254,11 +1249,8 @@ static int gfs2_atomic_open(struct inode *dir, struct dentry *dentry,
|
||||
if (d != NULL)
|
||||
dentry = d;
|
||||
if (dentry->d_inode) {
|
||||
if (!(*opened & FILE_OPENED)) {
|
||||
if (d == NULL)
|
||||
dget(dentry);
|
||||
return finish_no_open(file, dentry);
|
||||
}
|
||||
if (!(*opened & FILE_OPENED))
|
||||
return finish_no_open(file, d);
|
||||
dput(d);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user