CIFS: Add direct I/O functions to file_operations
authorLong Li <longli@microsoft.com>
Wed, 31 Oct 2018 22:13:11 +0000 (22:13 +0000)
committerSteve French <stfrench@microsoft.com>
Fri, 2 Nov 2018 19:09:42 +0000 (14:09 -0500)
With direct read/write functions implemented, add them to file_operations.

Dircet I/O is used under two conditions:
1. When mounting with "cache=none", CIFS uses direct I/O for all user file
data transfer.
2. When opening a file with O_DIRECT, CIFS uses direct I/O for all data
transfer on this file.

Signed-off-by: Long Li <longli@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
fs/cifs/cifsfs.c

index b7ac09e38159ceae968d333f9ad48084b68ecd76..1b21262ec8747ca6372af302c35b97212f45a936 100644 (file)
@@ -1180,9 +1180,8 @@ const struct file_operations cifs_file_strict_ops = {
 };
 
 const struct file_operations cifs_file_direct_ops = {
-       /* BB reevaluate whether they can be done with directio, no cache */
-       .read_iter = cifs_user_readv,
-       .write_iter = cifs_user_writev,
+       .read_iter = cifs_direct_readv,
+       .write_iter = cifs_direct_writev,
        .open = cifs_open,
        .release = cifs_close,
        .lock = cifs_lock,
@@ -1236,9 +1235,8 @@ const struct file_operations cifs_file_strict_nobrl_ops = {
 };
 
 const struct file_operations cifs_file_direct_nobrl_ops = {
-       /* BB reevaluate whether they can be done with directio, no cache */
-       .read_iter = cifs_user_readv,
-       .write_iter = cifs_user_writev,
+       .read_iter = cifs_direct_readv,
+       .write_iter = cifs_direct_writev,
        .open = cifs_open,
        .release = cifs_close,
        .fsync = cifs_fsync,