no need to check for LOOKUP_OPEN in ->create() instances
... it will be set in nd->flag for all cases with non-NULL nd (i.e. when called from do_last()). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
bf6c7f6c7b
commit
dd7dd556e4
5 changed files with 10 additions and 10 deletions
|
@ -633,7 +633,7 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
|
||||||
fid = NULL;
|
fid = NULL;
|
||||||
v9ses = v9fs_inode2v9ses(dir);
|
v9ses = v9fs_inode2v9ses(dir);
|
||||||
perm = unixmode2p9mode(v9ses, mode);
|
perm = unixmode2p9mode(v9ses, mode);
|
||||||
if (nd && nd->flags & LOOKUP_OPEN)
|
if (nd)
|
||||||
flags = nd->intent.open.flags;
|
flags = nd->intent.open.flags;
|
||||||
else
|
else
|
||||||
flags = O_RDWR;
|
flags = O_RDWR;
|
||||||
|
@ -649,7 +649,7 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
|
||||||
|
|
||||||
v9fs_invalidate_inode_attr(dir);
|
v9fs_invalidate_inode_attr(dir);
|
||||||
/* if we are opening a file, assign the open fid to the file */
|
/* if we are opening a file, assign the open fid to the file */
|
||||||
if (nd && nd->flags & LOOKUP_OPEN) {
|
if (nd) {
|
||||||
v9inode = V9FS_I(dentry->d_inode);
|
v9inode = V9FS_I(dentry->d_inode);
|
||||||
mutex_lock(&v9inode->v_mutex);
|
mutex_lock(&v9inode->v_mutex);
|
||||||
if (v9ses->cache && !v9inode->writeback_fid &&
|
if (v9ses->cache && !v9inode->writeback_fid &&
|
||||||
|
|
|
@ -173,7 +173,7 @@ v9fs_vfs_create_dotl(struct inode *dir, struct dentry *dentry, int omode,
|
||||||
struct posix_acl *pacl = NULL, *dacl = NULL;
|
struct posix_acl *pacl = NULL, *dacl = NULL;
|
||||||
|
|
||||||
v9ses = v9fs_inode2v9ses(dir);
|
v9ses = v9fs_inode2v9ses(dir);
|
||||||
if (nd && nd->flags & LOOKUP_OPEN)
|
if (nd)
|
||||||
flags = nd->intent.open.flags;
|
flags = nd->intent.open.flags;
|
||||||
else {
|
else {
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -179,7 +179,7 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
|
||||||
if (oplockEnabled)
|
if (oplockEnabled)
|
||||||
oplock = REQ_OPLOCK;
|
oplock = REQ_OPLOCK;
|
||||||
|
|
||||||
if (nd && (nd->flags & LOOKUP_OPEN))
|
if (nd)
|
||||||
oflags = nd->intent.open.file->f_flags;
|
oflags = nd->intent.open.file->f_flags;
|
||||||
else
|
else
|
||||||
oflags = O_RDONLY | O_CREAT;
|
oflags = O_RDONLY | O_CREAT;
|
||||||
|
@ -214,7 +214,7 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
|
||||||
which should be rare for path not covered on files) */
|
which should be rare for path not covered on files) */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nd && (nd->flags & LOOKUP_OPEN)) {
|
if (nd) {
|
||||||
/* if the file is going to stay open, then we
|
/* if the file is going to stay open, then we
|
||||||
need to set the desired access properly */
|
need to set the desired access properly */
|
||||||
desiredAccess = 0;
|
desiredAccess = 0;
|
||||||
|
@ -328,7 +328,7 @@ cifs_create_set_dentry:
|
||||||
else
|
else
|
||||||
cFYI(1, "Create worked, get_inode_info failed rc = %d", rc);
|
cFYI(1, "Create worked, get_inode_info failed rc = %d", rc);
|
||||||
|
|
||||||
if (newinode && nd && (nd->flags & LOOKUP_OPEN)) {
|
if (newinode && nd) {
|
||||||
struct cifsFileInfo *pfile_info;
|
struct cifsFileInfo *pfile_info;
|
||||||
struct file *filp;
|
struct file *filp;
|
||||||
|
|
||||||
|
|
|
@ -576,7 +576,7 @@ static int fuse_mknod(struct inode *dir, struct dentry *entry, int mode,
|
||||||
static int fuse_create(struct inode *dir, struct dentry *entry, int mode,
|
static int fuse_create(struct inode *dir, struct dentry *entry, int mode,
|
||||||
struct nameidata *nd)
|
struct nameidata *nd)
|
||||||
{
|
{
|
||||||
if (nd && (nd->flags & LOOKUP_OPEN)) {
|
if (nd) {
|
||||||
int err = fuse_create_open(dir, entry, mode, nd);
|
int err = fuse_create_open(dir, entry, mode, nd);
|
||||||
if (err != -ENOSYS)
|
if (err != -ENOSYS)
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -1585,7 +1585,7 @@ static int nfs_open_create(struct inode *dir, struct dentry *dentry, int mode,
|
||||||
attr.ia_mode = mode;
|
attr.ia_mode = mode;
|
||||||
attr.ia_valid = ATTR_MODE;
|
attr.ia_valid = ATTR_MODE;
|
||||||
|
|
||||||
if (nd && (nd->flags & LOOKUP_OPEN) != 0)
|
if (nd)
|
||||||
open_flags = nd->intent.open.flags;
|
open_flags = nd->intent.open.flags;
|
||||||
|
|
||||||
ctx = create_nfs_open_context(dentry, open_flags);
|
ctx = create_nfs_open_context(dentry, open_flags);
|
||||||
|
@ -1596,7 +1596,7 @@ static int nfs_open_create(struct inode *dir, struct dentry *dentry, int mode,
|
||||||
error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags, ctx);
|
error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags, ctx);
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
goto out_put_ctx;
|
goto out_put_ctx;
|
||||||
if (nd && (nd->flags & LOOKUP_OPEN) != 0) {
|
if (nd) {
|
||||||
error = nfs_intent_set_file(nd, ctx);
|
error = nfs_intent_set_file(nd, ctx);
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
@ -1675,7 +1675,7 @@ static int nfs_create(struct inode *dir, struct dentry *dentry, int mode,
|
||||||
attr.ia_mode = mode;
|
attr.ia_mode = mode;
|
||||||
attr.ia_valid = ATTR_MODE;
|
attr.ia_valid = ATTR_MODE;
|
||||||
|
|
||||||
if (nd && (nd->flags & LOOKUP_OPEN) != 0)
|
if (nd)
|
||||||
open_flags = nd->intent.open.flags;
|
open_flags = nd->intent.open.flags;
|
||||||
|
|
||||||
error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags, NULL);
|
error = NFS_PROTO(dir)->create(dir, dentry, &attr, open_flags, NULL);
|
||||||
|
|
Loading…
Reference in a new issue