aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs
diff options
context:
space:
mode:
authorPavel Shilovsky <pshilovsky@samba.org>2012-07-11 06:45:28 -0400
committerPavel Shilovsky <pshilovsky@samba.org>2012-07-24 13:55:14 -0400
commitc95b8eeda3efcb419ea0a3f864cf99e32c038c21 (patch)
tree94e8ee13177c79648a8ffd616807b0eeb85aa2ff /fs/cifs
parent45740847e2362f36410e8118ac685876be473039 (diff)
CIFS: Add SMB2 support for async requests
Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/smb2ops.c1
-rw-r--r--fs/cifs/smb2proto.h4
-rw-r--r--fs/cifs/smb2transport.c23
3 files changed, 27 insertions, 1 deletions
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 2f9950e43911..8672e49d1c4c 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -209,6 +209,7 @@ smb2_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb,
209 209
210struct smb_version_operations smb21_operations = { 210struct smb_version_operations smb21_operations = {
211 .setup_request = smb2_setup_request, 211 .setup_request = smb2_setup_request,
212 .setup_async_request = smb2_setup_async_request,
212 .check_receive = smb2_check_receive, 213 .check_receive = smb2_check_receive,
213 .add_credits = smb2_add_credits, 214 .add_credits = smb2_add_credits,
214 .set_credits = smb2_set_credits, 215 .set_credits = smb2_set_credits,
diff --git a/fs/cifs/smb2proto.h b/fs/cifs/smb2proto.h
index 1517b4c03c90..1a17955c35c9 100644
--- a/fs/cifs/smb2proto.h
+++ b/fs/cifs/smb2proto.h
@@ -43,6 +43,10 @@ extern int smb2_check_receive(struct mid_q_entry *mid,
43 struct TCP_Server_Info *server, bool log_error); 43 struct TCP_Server_Info *server, bool log_error);
44extern int smb2_setup_request(struct cifs_ses *ses, struct kvec *iov, 44extern int smb2_setup_request(struct cifs_ses *ses, struct kvec *iov,
45 unsigned int nvec, struct mid_q_entry **ret_mid); 45 unsigned int nvec, struct mid_q_entry **ret_mid);
46extern int smb2_setup_async_request(struct TCP_Server_Info *server,
47 struct kvec *iov, unsigned int nvec,
48 struct mid_q_entry **ret_mid);
49extern void smb2_echo_request(struct work_struct *work);
46 50
47extern int smb2_query_path_info(const unsigned int xid, struct cifs_tcon *tcon, 51extern int smb2_query_path_info(const unsigned int xid, struct cifs_tcon *tcon,
48 struct cifs_sb_info *cifs_sb, 52 struct cifs_sb_info *cifs_sb,
diff --git a/fs/cifs/smb2transport.c b/fs/cifs/smb2transport.c
index b4b6b9a6c0fb..31f5d420b3ea 100644
--- a/fs/cifs/smb2transport.c
+++ b/fs/cifs/smb2transport.c
@@ -148,4 +148,25 @@ smb2_setup_request(struct cifs_ses *ses, struct kvec *iov,
148 return rc; 148 return rc;
149} 149}
150 150
151/* BB add missing functions here */ 151int
152smb2_setup_async_request(struct TCP_Server_Info *server, struct kvec *iov,
153 unsigned int nvec, struct mid_q_entry **ret_mid)
154{
155 int rc = 0;
156 struct smb2_hdr *hdr = (struct smb2_hdr *)iov[0].iov_base;
157 struct mid_q_entry *mid;
158
159 smb2_seq_num_into_buf(server, hdr);
160
161 mid = smb2_mid_entry_alloc(hdr, server);
162 if (mid == NULL)
163 return -ENOMEM;
164
165 /* rc = smb2_sign_smb2(iov, nvec, server);
166 if (rc) {
167 DeleteMidQEntry(mid);
168 return rc;
169 }*/
170 *ret_mid = mid;
171 return rc;
172}