aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifssmb.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2011-10-19 15:29:49 -0400
committerJeff Layton <jlayton@redhat.com>2011-10-19 15:29:49 -0400
commit44d22d846fdc7c3e688fc1ff5ae6d06d08bb5656 (patch)
treea7c55381c4eee74c2be9a4dc0728f0a927367d04 /fs/cifs/cifssmb.c
parente9097ab48978c89b9c0926e2ae5d49bf6ea91b18 (diff)
cifs: add a callback function to receive the rest of the frame
In order to handle larger SMBs for readpages and other calls, we want to be able to read into a preallocated set of buffers. Rather than changing all of the existing code to preallocate buffers however, we instead add a receive callback function to the MID. cifsd will call this function once the mid_q_entry has been identified in order to receive the rest of the SMB. If the mid can't be identified or the receive pointer is unset, then the standard 3rd phase receive function will be called. Reviewed-and-Tested-by: Pavel Shilovsky <piastry@etersoft.ru> Signed-off-by: Jeff Layton <jlayton@redhat.com>
Diffstat (limited to 'fs/cifs/cifssmb.c')
-rw-r--r--fs/cifs/cifssmb.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index c824c106b2b7..0613df4d8e74 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -737,7 +737,8 @@ CIFSSMBEcho(struct TCP_Server_Info *server)
737 iov.iov_base = smb; 737 iov.iov_base = smb;
738 iov.iov_len = be32_to_cpu(smb->hdr.smb_buf_length) + 4; 738 iov.iov_len = be32_to_cpu(smb->hdr.smb_buf_length) + 4;
739 739
740 rc = cifs_call_async(server, &iov, 1, cifs_echo_callback, server, true); 740 rc = cifs_call_async(server, &iov, 1, NULL, cifs_echo_callback,
741 server, true);
741 if (rc) 742 if (rc)
742 cFYI(1, "Echo request failed: %d", rc); 743 cFYI(1, "Echo request failed: %d", rc);
743 744
@@ -1834,7 +1835,7 @@ cifs_async_writev(struct cifs_writedata *wdata)
1834 1835
1835 kref_get(&wdata->refcount); 1836 kref_get(&wdata->refcount);
1836 rc = cifs_call_async(tcon->ses->server, iov, wdata->nr_pages + 1, 1837 rc = cifs_call_async(tcon->ses->server, iov, wdata->nr_pages + 1,
1837 cifs_writev_callback, wdata, false); 1838 NULL, cifs_writev_callback, wdata, false);
1838 1839
1839 if (rc == 0) 1840 if (rc == 0)
1840 cifs_stats_inc(&tcon->num_writes); 1841 cifs_stats_inc(&tcon->num_writes);