atomic_open: take care of EEXIST in no-open case with O_CREAT|O_EXCL in fs/namei.c

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro
2013-09-16 19:22:33 -04:00
parent 116cc02253
commit 03da633aa7
2 changed files with 20 additions and 21 deletions

View File

@@ -267,14 +267,8 @@ v9fs_vfs_atomic_open_dotl(struct inode *dir, struct dentry *dentry,
}
/* Only creates */
if (!(flags & O_CREAT))
if (!(flags & O_CREAT) || dentry->d_inode)
return finish_no_open(file, res);
else if (dentry->d_inode) {
if ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
return -EEXIST;
else
return finish_no_open(file, res);
}
v9ses = v9fs_inode2v9ses(dir);