Skip to content

Commit 1a5b4ed

Browse files
committed
cifs: Move cifs_loose_read_iter() and cifs_file_write_iter() to file.c
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
1 parent dc5939d commit 1a5b4ed

3 files changed

Lines changed: 55 additions & 55 deletions

File tree

fs/smb/client/cifsfs.c

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -986,61 +986,6 @@ cifs_smb3_do_mount(struct file_system_type *fs_type,
986986
return root;
987987
}
988988

989-
990-
static ssize_t
991-
cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter)
992-
{
993-
ssize_t rc;
994-
struct inode *inode = file_inode(iocb->ki_filp);
995-
996-
if (iocb->ki_flags & IOCB_DIRECT)
997-
return cifs_user_readv(iocb, iter);
998-
999-
rc = cifs_revalidate_mapping(inode);
1000-
if (rc)
1001-
return rc;
1002-
1003-
return generic_file_read_iter(iocb, iter);
1004-
}
1005-
1006-
static ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
1007-
{
1008-
struct inode *inode = file_inode(iocb->ki_filp);
1009-
struct cifsInodeInfo *cinode = CIFS_I(inode);
1010-
ssize_t written;
1011-
int rc;
1012-
1013-
if (iocb->ki_filp->f_flags & O_DIRECT) {
1014-
written = cifs_user_writev(iocb, from);
1015-
if (written > 0 && CIFS_CACHE_READ(cinode)) {
1016-
cifs_zap_mapping(inode);
1017-
cifs_dbg(FYI,
1018-
"Set no oplock for inode=%p after a write operation\n",
1019-
inode);
1020-
cinode->oplock = 0;
1021-
}
1022-
return written;
1023-
}
1024-
1025-
written = cifs_get_writer(cinode);
1026-
if (written)
1027-
return written;
1028-
1029-
written = generic_file_write_iter(iocb, from);
1030-
1031-
if (CIFS_CACHE_WRITE(CIFS_I(inode)))
1032-
goto out;
1033-
1034-
rc = filemap_fdatawrite(inode->i_mapping);
1035-
if (rc)
1036-
cifs_dbg(FYI, "cifs_file_write_iter: %d rc on %p inode\n",
1037-
rc, inode);
1038-
1039-
out:
1040-
cifs_put_writer(cinode);
1041-
return written;
1042-
}
1043-
1044989
static loff_t cifs_llseek(struct file *file, loff_t offset, int whence)
1045990
{
1046991
struct cifsFileInfo *cfile = file->private_data;

fs/smb/client/cifsfs.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ extern ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to);
9999
extern ssize_t cifs_user_writev(struct kiocb *iocb, struct iov_iter *from);
100100
extern ssize_t cifs_direct_writev(struct kiocb *iocb, struct iov_iter *from);
101101
extern ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from);
102+
ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from);
103+
ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter);
102104
extern int cifs_flock(struct file *pfile, int cmd, struct file_lock *plock);
103105
extern int cifs_lock(struct file *, int, struct file_lock *);
104106
extern int cifs_fsync(struct file *, loff_t, loff_t, int);

fs/smb/client/file.c

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4250,6 +4250,59 @@ ssize_t cifs_user_readv(struct kiocb *iocb, struct iov_iter *to)
42504250
return __cifs_readv(iocb, to, false);
42514251
}
42524252

4253+
ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter)
4254+
{
4255+
ssize_t rc;
4256+
struct inode *inode = file_inode(iocb->ki_filp);
4257+
4258+
if (iocb->ki_flags & IOCB_DIRECT)
4259+
return cifs_user_readv(iocb, iter);
4260+
4261+
rc = cifs_revalidate_mapping(inode);
4262+
if (rc)
4263+
return rc;
4264+
4265+
return generic_file_read_iter(iocb, iter);
4266+
}
4267+
4268+
ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
4269+
{
4270+
struct inode *inode = file_inode(iocb->ki_filp);
4271+
struct cifsInodeInfo *cinode = CIFS_I(inode);
4272+
ssize_t written;
4273+
int rc;
4274+
4275+
if (iocb->ki_filp->f_flags & O_DIRECT) {
4276+
written = cifs_user_writev(iocb, from);
4277+
if (written > 0 && CIFS_CACHE_READ(cinode)) {
4278+
cifs_zap_mapping(inode);
4279+
cifs_dbg(FYI,
4280+
"Set no oplock for inode=%p after a write operation\n",
4281+
inode);
4282+
cinode->oplock = 0;
4283+
}
4284+
return written;
4285+
}
4286+
4287+
written = cifs_get_writer(cinode);
4288+
if (written)
4289+
return written;
4290+
4291+
written = generic_file_write_iter(iocb, from);
4292+
4293+
if (CIFS_CACHE_WRITE(CIFS_I(inode)))
4294+
goto out;
4295+
4296+
rc = filemap_fdatawrite(inode->i_mapping);
4297+
if (rc)
4298+
cifs_dbg(FYI, "cifs_file_write_iter: %d rc on %p inode\n",
4299+
rc, inode);
4300+
4301+
out:
4302+
cifs_put_writer(cinode);
4303+
return written;
4304+
}
4305+
42534306
ssize_t
42544307
cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to)
42554308
{

0 commit comments

Comments
 (0)