diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 455d0282363f5f95de244510e3b61b54d1435b24..ad93b063f86656b602d9d5fc293d701b07c63dda 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -726,6 +726,13 @@ cifs_reopen_file(struct cifsFileInfo *cfile, bool can_flush) 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);