cifs: Add a function to read into an iter from a socket
[sfrench/cifs-2.6.git] / fs / cifs / connect.c
index 150666e143ce9942cdbb279e27945c16aec561cf..6831eb8cea7c0fe97c71db786a8a2c1926bb9152 100644 (file)
@@ -733,6 +733,20 @@ cifs_read_page_from_socket(struct TCP_Server_Info *server, struct page *page,
        return cifs_readv_from_socket(server, &smb_msg);
 }
 
+int
+cifs_read_iter_from_socket(struct TCP_Server_Info *server, struct iov_iter *iter,
+                          unsigned int to_read)
+{
+       struct msghdr smb_msg = { .msg_iter = *iter };
+       int ret;
+
+       iov_iter_truncate(&smb_msg.msg_iter, to_read);
+       ret = cifs_readv_from_socket(server, &smb_msg);
+       if (ret > 0)
+               iov_iter_advance(iter, ret);
+       return ret;
+}
+
 static bool
 is_smb_response(struct TCP_Server_Info *server, unsigned char type)
 {