diff options
Diffstat (limited to 'cifs-respect-o_sync-and-o_direct-flags-during-reconnect.patch')
-rw-r--r-- | cifs-respect-o_sync-and-o_direct-flags-during-reconnect.patch | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/cifs-respect-o_sync-and-o_direct-flags-during-reconnect.patch b/cifs-respect-o_sync-and-o_direct-flags-during-reconnect.patch deleted file mode 100644 index 315ea94..0000000 --- a/cifs-respect-o_sync-and-o_direct-flags-during-reconnect.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 44805b0e62f15e90d233485420e1847133716bdc Mon Sep 17 00:00:00 2001 -From: Pavel Shilovsky <pshilov@microsoft.com> -Date: Tue, 12 Nov 2019 17:16:35 -0800 -Subject: CIFS: Respect O_SYNC and O_DIRECT flags during reconnect - -From: Pavel Shilovsky <pshilov@microsoft.com> - -commit 44805b0e62f15e90d233485420e1847133716bdc upstream. - -Currently the client translates O_SYNC and O_DIRECT flags -into corresponding SMB create options when openning a file. -The problem is that on reconnect when the file is being -re-opened the client doesn't set those flags and it causes -a server to reject re-open requests because create options -don't match. The latter means that any subsequent system -call against that open file fail until a share is re-mounted. - -Fix this by properly setting SMB create options when -re-openning files after reconnects. - -Fixes: 1013e760d10e6: ("SMB3: Don't ignore O_SYNC/O_DSYNC and O_DIRECT flags") -Cc: Stable <stable@vger.kernel.org> -Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com> -Signed-off-by: Steve French <stfrench@microsoft.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - ---- - fs/cifs/file.c | 7 +++++++ - 1 file changed, 7 insertions(+) - ---- a/fs/cifs/file.c -+++ b/fs/cifs/file.c -@@ -696,6 +696,13 @@ cifs_reopen_file(struct cifsFileInfo *cf - 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 (cfile->f_flags & O_SYNC) -+ create_options |= CREATE_WRITE_THROUGH; -+ -+ if (cfile->f_flags & O_DIRECT) -+ create_options |= CREATE_NO_BUFFER; -+ - if (server->ops->get_lease_key) - server->ops->get_lease_key(inode, &cfile->fid); - |