| From f1e3268126a35b9d3cb8bf67487fcc6cd13991d8 Mon Sep 17 00:00:00 2001 |
| From: Shirish Pargaonkar <shirishpargaonkar@gmail.com> |
| Date: Wed, 11 Dec 2013 16:29:53 -0600 |
| Subject: cifs: set FILE_CREATED |
| |
| From: Shirish Pargaonkar <shirishpargaonkar@gmail.com> |
| |
| commit f1e3268126a35b9d3cb8bf67487fcc6cd13991d8 upstream. |
| |
| Set FILE_CREATED on O_CREAT|O_EXCL. |
| |
| cifs code didn't change during commit 116cc0225381415b96551f725455d067f63a76a0 |
| |
| Kernel bugzilla 66251 |
| |
| Signed-off-by: Shirish Pargaonkar <spargaonkar@suse.com> |
| Acked-by: Jeff Layton <jlayton@redhat.com> |
| Signed-off-by: Steve French <smfrench@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/cifs/dir.c | 11 ++++++----- |
| 1 file changed, 6 insertions(+), 5 deletions(-) |
| |
| --- 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, stru |
| .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, st |
| 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, str |
| 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, str |
| 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); |
| |