merged into cifs-2.6.git for-next (with the patch description changes Shirish suggested) On Thu, Dec 12, 2013 at 9:46 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote: > 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> -- Thanks, Steve -- 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