On Wed, 11 Dec 2013 16:29:53 -0600 shirishpargaonkar@xxxxxxxxx wrote: > From: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> > > Set FILE_CREATED on O_CREAT|O_EXCL. > > cifs code didn't change during commit 116cc0225381415b96551f725455d067f63a76a0e > > Samba bugzilla 66251 > > Signed-off-by: Shirish Pargaonkar <spargaonkar@xxxxxxxx> > --- > fs/cifs/dir.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c > index 11ff5f1..a514e0a 100644 > --- a/fs/cifs/dir.c > +++ b/fs/cifs/dir.c > @@ -193,7 +193,7 @@ check_name(struct dentry *direntry) > static int > cifs_do_create(struct inode *inode, struct dentry *direntry, unsigned int xid, > struct tcon_link *tlink, unsigned oflags, umode_t mode, > - __u32 *oplock, struct cifs_fid *fid, int *created) > + __u32 *oplock, struct cifs_fid *fid) > { > int rc = -ENOENT; > int create_options = CREATE_NOT_DIR; > @@ -349,7 +349,6 @@ cifs_do_create(struct inode *inode, struct dentry *direntry, unsigned int xid, > .device = 0, > }; > > - *created |= FILE_CREATED; > if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) { > args.uid = current_fsuid(); > if (inode->i_mode & S_ISGID) > @@ -480,13 +479,16 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry, > cifs_add_pending_open(&fid, tlink, &open); > > rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode, > - &oplock, &fid, opened); > + &oplock, &fid); > > if (rc) { > cifs_del_pending_open(&open); > goto out; > } > > + if ((oflags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL)) > + *opened |= FILE_CREATED; > + > rc = finish_open(file, direntry, generic_file_open, opened); > if (rc) { > if (server->ops->close) > @@ -529,7 +531,6 @@ int cifs_create(struct inode *inode, struct dentry *direntry, umode_t mode, > struct TCP_Server_Info *server; > struct cifs_fid fid; > __u32 oplock; > - int created = FILE_CREATED; > > cifs_dbg(FYI, "cifs_create parent inode = 0x%p name is: %s and dentry = 0x%p\n", > inode, direntry->d_name.name, direntry); > @@ -546,7 +547,7 @@ int cifs_create(struct inode *inode, struct dentry *direntry, umode_t mode, > server->ops->new_lease_key(&fid); > > rc = cifs_do_create(inode, direntry, xid, tlink, oflags, mode, > - &oplock, &fid, &created); > + &oplock, &fid); > if (!rc && server->ops->close) > server->ops->close(xid, tcon, &fid); > Looks sane I think, but I'll confess I'm not 100% comfortable with the way we're doing atomic opens. Maybe that's just me though... Acked-by: Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html