]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
SMB3: Don't ignore O_SYNC/O_DSYNC and O_DIRECT flags
authorSteve French <smfrench@gmail.com>
Fri, 22 Sep 2017 06:40:27 +0000 (01:40 -0500)
committerSeth Forshee <seth.forshee@canonical.com>
Thu, 12 Oct 2017 21:20:31 +0000 (16:20 -0500)
BugLink: http://bugs.launchpad.net/bugs/1721777
commit 1013e760d10e614dc10b5624ce9fc41563ba2e65 upstream.

Signed-off-by: Steve French <smfrench@gmail.com>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
fs/cifs/file.c

index bc09df6b473ae309a693b1c6accaa5ff9c3b24de..c3bf300e7c4773201a5d0347d7f85fa9e15e6f55 100644 (file)
@@ -224,6 +224,13 @@ cifs_nt_open(char *full_path, struct inode *inode, struct cifs_sb_info *cifs_sb,
        if (backup_cred(cifs_sb))
                create_options |= CREATE_OPEN_BACKUP_INTENT;
 
+       /* O_SYNC also has bit for O_DSYNC so following check picks up either */
+       if (f_flags & O_SYNC)
+               create_options |= CREATE_WRITE_THROUGH;
+
+       if (f_flags & O_DIRECT)
+               create_options |= CREATE_NO_BUFFER;
+
        oparms.tcon = tcon;
        oparms.cifs_sb = cifs_sb;
        oparms.desired_access = desired_access;