diff options
author | Jeff Layton <jlayton@redhat.com> | 2011-10-19 15:29:49 -0400 |
---|---|---|
committer | Jeff Layton <jlayton@redhat.com> | 2011-10-19 15:29:49 -0400 |
commit | 44d22d846fdc7c3e688fc1ff5ae6d06d08bb5656 (patch) | |
tree | a7c55381c4eee74c2be9a4dc0728f0a927367d04 /fs/cifs/cifssmb.c | |
parent | e9097ab48978c89b9c0926e2ae5d49bf6ea91b18 (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.c | 5 |
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); |