cifs: Move cifs_loose_read_iter() and cifs_file_write_iter() to file.c
authorDavid Howells <dhowells@redhat.com>
Thu, 12 Oct 2023 07:36:44 +0000 (08:36 +0100)
committerDavid Howells <dhowells@redhat.com>
Wed, 1 May 2024 17:08:20 +0000 (18:08 +0100)
Move cifs_loose_read_iter() and cifs_file_write_iter() to file.c so that
they are colocated with similar functions rather than being split with
cifsfs.c.

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Steve French <sfrench@samba.org>
cc: Shyam Prasad N <nspmangalore@gmail.com>
cc: Rohith Surabattula <rohiths.msft@gmail.com>
cc: Jeff Layton <jlayton@kernel.org>
cc: linux-cifs@vger.kernel.org
cc: netfs@lists.linux.dev
cc: linux-fsdevel@vger.kernel.org
cc: linux-mm@kvack.org

fs/smb/client/cifsfs.c
fs/smb/client/cifsfs.h
fs/smb/client/file.c

index 39277c37185cac3327c0f002849b1f5fc621cd05..847df5152835f3d38c26241c7cba42e8333b3e8c 100644 (file)
@@ -986,61 +986,6 @@ out:
        return root;
 }
 
-
-static ssize_t
-cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter)
-{
-       ssize_t rc;
-       struct inode *inode = file_inode(iocb->ki_filp);
-
-       if (iocb->ki_flags & IOCB_DIRECT)
-               return cifs_user_readv(iocb, iter);
-
-       rc = cifs_revalidate_mapping(inode);
-       if (rc)
-               return rc;
-
-       return generic_file_read_iter(iocb, iter);
-}
-
-static ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
-{
-       struct inode *inode = file_inode(iocb->ki_filp);
-       struct cifsInodeInfo *cinode = CIFS_I(inode);
-       ssize_t written;
-       int rc;
-
-       if (iocb->ki_filp->f_flags & O_DIRECT) {
-               written = cifs_user_writev(iocb, from);
-               if (written > 0 && CIFS_CACHE_READ(cinode)) {
-                       cifs_zap_mapping(inode);
-                       cifs_dbg(FYI,
-                                "Set no oplock for inode=%p after a write operation\n",
-                                inode);
-                       cinode->oplock = 0;
-               }
-               return written;
-       }
-
-       written = cifs_get_writer(cinode);
-       if (written)
-               return written;
-
-       written = generic_file_write_iter(iocb, from);
-
-       if (CIFS_CACHE_WRITE(CIFS_I(inode)))
-               goto out;
-
-       rc = filemap_fdatawrite(inode->i_mapping);
-       if (rc)
-               cifs_dbg(FYI, "cifs_file_write_iter: %d rc on %p inode\n",
-                        rc, inode);
-
-out:
-       cifs_put_writer(cinode);
-       return written;
-}
-
 static loff_t cifs_llseek(struct file *file, loff_t offset, int whence)
 {
        struct cifsFileInfo *cfile = file->private_data;
index 1ab7e5998c585653342a4b02e186b149cc7139c3..1acf6bfc06de0772ff09e3cb83ccf9f92a61b780 100644 (file)
@@ -99,6 +99,8 @@ extern ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to);
 extern ssize_t cifs_user_writev(struct kiocb *iocb, struct iov_iter *from);
 extern ssize_t cifs_direct_writev(struct kiocb *iocb, struct iov_iter *from);
 extern ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from);
+ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from);
+ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter);
 extern int cifs_flock(struct file *pfile, int cmd, struct file_lock *plock);
 extern int cifs_lock(struct file *, int, struct file_lock *);
 extern int cifs_fsync(struct file *, loff_t, loff_t, int);
index 7f2ce68d2a2a264b79a912576b988904de68972e..331446fc3d220c63e3f38e8a789ed969791ff8e6 100644 (file)
@@ -4250,6 +4250,59 @@ ssize_t cifs_user_readv(struct kiocb *iocb, struct iov_iter *to)
        return __cifs_readv(iocb, to, false);
 }
 
+ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter)
+{
+       ssize_t rc;
+       struct inode *inode = file_inode(iocb->ki_filp);
+
+       if (iocb->ki_flags & IOCB_DIRECT)
+               return cifs_user_readv(iocb, iter);
+
+       rc = cifs_revalidate_mapping(inode);
+       if (rc)
+               return rc;
+
+       return generic_file_read_iter(iocb, iter);
+}
+
+ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
+{
+       struct inode *inode = file_inode(iocb->ki_filp);
+       struct cifsInodeInfo *cinode = CIFS_I(inode);
+       ssize_t written;
+       int rc;
+
+       if (iocb->ki_filp->f_flags & O_DIRECT) {
+               written = cifs_user_writev(iocb, from);
+               if (written > 0 && CIFS_CACHE_READ(cinode)) {
+                       cifs_zap_mapping(inode);
+                       cifs_dbg(FYI,
+                                "Set no oplock for inode=%p after a write operation\n",
+                                inode);
+                       cinode->oplock = 0;
+               }
+               return written;
+       }
+
+       written = cifs_get_writer(cinode);
+       if (written)
+               return written;
+
+       written = generic_file_write_iter(iocb, from);
+
+       if (CIFS_CACHE_WRITE(CIFS_I(inode)))
+               goto out;
+
+       rc = filemap_fdatawrite(inode->i_mapping);
+       if (rc)
+               cifs_dbg(FYI, "cifs_file_write_iter: %d rc on %p inode\n",
+                        rc, inode);
+
+out:
+       cifs_put_writer(cinode);
+       return written;
+}
+
 ssize_t
 cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to)
 {