Skip to content

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

fs/cifs/cifsproto.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ extern int cifs_read_page_from_socket(struct TCP_Server_Info *server,
244244
struct page *page,
245245
unsigned int page_offset,
246246
unsigned int to_read);
247+
int cifs_read_iter_from_socket(struct TCP_Server_Info *server,
248+
struct iov_iter *iter,
249+
unsigned int to_read);
247250
extern int cifs_setup_cifs_sb(struct cifs_sb_info *cifs_sb);
248251
void cifs_mount_put_conns(struct cifs_mount_ctx *mnt_ctx);
249252
int cifs_mount_get_session(struct cifs_mount_ctx *mnt_ctx);

fs/cifs/connect.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,20 @@ cifs_read_page_from_socket(struct TCP_Server_Info *server, struct page *page,
733733
return cifs_readv_from_socket(server, &smb_msg);
734734
}
735735

736+
int
737+
cifs_read_iter_from_socket(struct TCP_Server_Info *server, struct iov_iter *iter,
738+
unsigned int to_read)
739+
{
740+
struct msghdr smb_msg = { .msg_iter = *iter };
741+
int ret;
742+
743+
iov_iter_truncate(&smb_msg.msg_iter, to_read);
744+
ret = cifs_readv_from_socket(server, &smb_msg);
745+
if (ret > 0)
746+
iov_iter_advance(iter, ret);
747+
return ret;
748+
}
749+
736750
static bool
737751
is_smb_response(struct TCP_Server_Info *server, unsigned char type)
738752
{

0 commit comments

Comments
 (0)