diff options
author | Pavel Shilovsky <pshilovsky@samba.org> | 2012-07-11 06:45:28 -0400 |
---|---|---|
committer | Pavel Shilovsky <pshilovsky@samba.org> | 2012-07-24 13:55:14 -0400 |
commit | c95b8eeda3efcb419ea0a3f864cf99e32c038c21 (patch) | |
tree | 94e8ee13177c79648a8ffd616807b0eeb85aa2ff /fs/cifs | |
parent | 45740847e2362f36410e8118ac685876be473039 (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.c | 1 | ||||
-rw-r--r-- | fs/cifs/smb2proto.h | 4 | ||||
-rw-r--r-- | fs/cifs/smb2transport.c | 23 |
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 | ||
210 | struct smb_version_operations smb21_operations = { | 210 | struct 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); |
44 | extern int smb2_setup_request(struct cifs_ses *ses, struct kvec *iov, | 44 | extern 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); |
46 | extern int smb2_setup_async_request(struct TCP_Server_Info *server, | ||
47 | struct kvec *iov, unsigned int nvec, | ||
48 | struct mid_q_entry **ret_mid); | ||
49 | extern void smb2_echo_request(struct work_struct *work); | ||
46 | 50 | ||
47 | extern int smb2_query_path_info(const unsigned int xid, struct cifs_tcon *tcon, | 51 | extern 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 */ | 151 | int |
152 | smb2_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 | } | ||