linux/fs/cifs
Steve French dca692880e [CIFS] O_DIRECT opens should work on directio mounts
Opens on current cifs/smb2/smb3 mounts with O_DIRECT flag fail
even when caching is disabled on the mount.  This was
reported by those running SMB2 benchmarks who need to
be able to pass O_DIRECT on many of their open calls to
reduce caching effects, but would also be needed by other
applications.

When mounting with forcedirectio ("cache=none") cifs and smb2/smb3
do not go through the page cache and thus opens with O_DIRECT flag
should work (when posix extensions are negotiated we even are
able to send the flag to the server). This patch fixes that
in a simple way.

The 9P client has a similar situation (caching is often disabled)
and takes the same approach to O_DIRECT support ie works if caching
disabled, but if client caching enabled it fails with EINVAL.

A followon idea for a future patch as Pavel noted, could
be that files opened with O_DIRECT could cause us to change
inode->i_fop on the fly from

cifs_file_strict_ops

to

cifs_file_direct_ops

which would allow us to support this on non-forcedirectio mounts
(cache=strict and cache=loose) as well.

Reviewed-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <smfrench@gmail.com>
2013-11-11 16:42:37 -06:00
..
asn1.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cache.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_debug.c cifs: try to handle the MUST SecurityFlags sanely 2013-06-26 17:31:55 -05:00
cifs_debug.h [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_dfs_ref.c cifs: fix composing of mount options for DFS referrals 2013-05-24 13:08:31 -05:00
cifs_fs_sb.h cifs: Convert struct cifs_sb_info to use kuids and kgids 2013-02-13 07:28:54 -08:00
cifs_spnego.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_spnego.h [CIFS] Rename three structures to avoid camel case 2011-05-27 04:34:02 +00:00
cifs_unicode.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifs_unicode.h cifs: add new case-insensitive conversion routines that are based on wchar_t's 2013-09-08 14:38:05 -05:00
cifs_uniupr.h cifs: correction of unicode header files 2010-08-20 00:46:42 +00:00
cifsacl.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
cifsacl.h cifs: fix SID binary to string conversion 2012-12-11 11:48:49 -06:00
cifsencrypt.c cifs: fix bad error handling in crypto code 2013-07-31 13:44:59 -05:00
cifsfs.c cifs: Fix inability to write files >2GB to SMB2/3 shares 2013-10-07 09:54:45 -05:00
cifsfs.h [CIFS] update cifs.ko version 2013-09-25 19:01:27 -05:00
cifsglob.h CIFS: Fix symbolic links usage 2013-11-11 16:31:03 -06:00
cifspdu.h Allow setting per-file compression via CIFS protocol 2013-11-02 12:52:44 -05:00
cifsproto.h Allow setting per-file compression via CIFS protocol 2013-11-02 12:52:44 -05:00
cifssmb.c Allow setting per-file compression via CIFS protocol 2013-11-02 12:52:44 -05:00
connect.c cifs: Send a logoff request before removing a smb session 2013-11-02 12:52:35 -05:00
dir.c cifs: don't spam the logs on unexpected lookup errors 2013-11-11 16:34:53 -06:00
dns_resolve.c cifs: fix composing of mount options for DFS referrals 2013-05-24 13:08:31 -05:00
dns_resolve.h DNS: Separate out CIFS DNS Resolver code 2010-08-05 17:17:51 +00:00
export.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
file.c [CIFS] O_DIRECT opens should work on directio mounts 2013-11-11 16:42:37 -06:00
fscache.c NFS client updates for Linux 3.13 2013-11-08 05:57:46 +09:00
fscache.h CIFS: FS-Cache: Uncache unread pages in cifs_readpages() before freeing them 2013-09-18 10:17:03 -05:00
inode.c CIFS: Fix symbolic links usage 2013-11-11 16:31:03 -06:00
ioctl.c Fix unused variable warning when CIFS POSIX disabled 2013-11-02 12:52:48 -05:00
Kconfig [CIFS] SMB3 Signing enablement 2013-06-26 23:45:05 -05:00
link.c CIFS: Implement follow_link for SMB2 2013-09-08 14:27:34 -05:00
Makefile cifs: add new case-insensitive conversion routines that are based on wchar_t's 2013-09-08 14:38:05 -05:00
misc.c cifs: Make big endian multiplex ID sequences monotonic on the wire 2013-11-02 12:51:53 -05:00
netmisc.c cifs: change ERRnomem error mapping from ENOMEM to EREMOTEIO 2013-11-11 16:33:25 -06:00
nterr.c CIFS: Rename 7 error codes to NT_ style 2012-07-24 10:25:10 -05:00
nterr.h CIFS: Rename 7 error codes to NT_ style 2012-07-24 10:25:10 -05:00
ntlmssp.h CIFS: Add session setup/logoff capability for SMB2 2012-07-24 21:54:57 +04:00
readdir.c CIFS: Fix symbolic links usage 2013-11-11 16:31:03 -06:00
rfc1002pdu.h
sess.c cifs: Allow LANMAN auth method for servers supporting unencapsulated authentication methods 2013-10-07 09:57:11 -05:00
smb1ops.c CIFS: Fix symbolic links usage 2013-11-11 16:31:03 -06:00
smb2file.c CIFS: Store lease state itself rather than a mapped oplock value 2013-09-09 22:52:05 -05:00
smb2glob.h [CIFS] SMB3 Signing enablement 2013-06-26 23:45:05 -05:00
smb2inode.c CIFS: Fix symbolic links usage 2013-11-11 16:31:03 -06:00
smb2maperror.c cifs: change ERRnomem error mapping from ENOMEM to EREMOTEIO 2013-11-11 16:33:25 -06:00
smb2misc.c CIFS: Respect epoch value from create lease context v2 2013-09-09 22:52:18 -05:00
smb2ops.c Query network adapter info at mount time for debugging 2013-11-02 12:53:45 -05:00
smb2pdu.c Query File System Alignment 2013-11-02 12:52:41 -05:00
smb2pdu.h Allow setting per-file compression via CIFS protocol 2013-11-02 12:52:44 -05:00
smb2proto.h CIFS: Fix symbolic links usage 2013-11-11 16:31:03 -06:00
smb2status.h CIFS: Add SMB2 status codes 2012-07-24 10:25:13 -05:00
smb2transport.c cifs: Send a logoff request before removing a smb session 2013-11-02 12:52:35 -05:00
smbencrypt.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00
smberr.h cifs: map NT_STATUS_ERROR_WRITE_PROTECTED to -EROFS 2010-08-02 12:40:40 +00:00
smbfsctl.h do not treat non-symlink reparse points as valid symlinks 2013-10-05 21:54:18 -05:00
transport.c cifs: Send a logoff request before removing a smb session 2013-11-02 12:52:35 -05:00
winucase.c [CIFS] quiet sparse compile warning 2013-09-08 14:54:24 -05:00
xattr.c [CIFS] cifs: Rename cERROR and cFYI to cifs_dbg 2013-05-04 22:17:23 -05:00