Lines Matching full:server

84 	    (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION))  in smb3_encryption_required()
87 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in smb3_encryption_required()
95 struct TCP_Server_Info *server) in smb2_hdr_assemble() argument
103 if (server) { in smb2_hdr_assemble()
105 if (server->dialect >= SMB30_PROT_ID) { in smb2_hdr_assemble()
111 if (SERVER_IS_CHAN(server)) in smb2_hdr_assemble()
113 cpu_to_le16(server->primary_server->channel_sequence_num); in smb2_hdr_assemble()
116 cpu_to_le16(server->channel_sequence_num); in smb2_hdr_assemble()
118 spin_lock(&server->req_lock); in smb2_hdr_assemble()
120 if (server->credits >= server->max_credits) in smb2_hdr_assemble()
124 min_t(int, server->max_credits - in smb2_hdr_assemble()
125 server->credits, 10)); in smb2_hdr_assemble()
126 spin_unlock(&server->req_lock); in smb2_hdr_assemble()
137 if (server && (server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU)) in smb2_hdr_assemble()
148 * to pass the path on the Open SMB prefixed by \\server\share. in smb2_hdr_assemble()
151 * illegal to send an empty path name (without \\server\share prefix) in smb2_hdr_assemble()
159 if (server && server->sign && !smb3_encryption_required(tcon)) in smb2_hdr_assemble()
168 struct TCP_Server_Info *server, in cifs_chan_skip_or_disable() argument
174 if (SERVER_IS_CHAN(server)) { in cifs_chan_skip_or_disable()
176 "server %s does not support multichannel anymore. Skip secondary channel\n", in cifs_chan_skip_or_disable()
177 ses->server->hostname); in cifs_chan_skip_or_disable()
180 chan_index = cifs_ses_get_chan_index(ses, server); in cifs_chan_skip_or_disable()
186 ses->chans[chan_index].server = NULL; in cifs_chan_skip_or_disable()
187 server->terminate = true; in cifs_chan_skip_or_disable()
191 * the above reference of server by channel in cifs_chan_skip_or_disable()
196 cifs_put_tcp_session(server, from_reconnect); in cifs_chan_skip_or_disable()
198 cifs_signal_cifsd_for_reconnect(server, false); in cifs_chan_skip_or_disable()
200 /* mark primary server as needing reconnect */ in cifs_chan_skip_or_disable()
201 pserver = server->primary_server; in cifs_chan_skip_or_disable()
208 "server does not support multichannel anymore. Disable all other channels\n"); in cifs_chan_skip_or_disable()
217 struct TCP_Server_Info *server, bool from_reconnect) in smb2_reconnect() argument
257 if (!ses->server || !server) in smb2_reconnect()
260 spin_lock(&server->srv_lock); in smb2_reconnect()
261 if (server->tcpStatus == CifsNeedReconnect) { in smb2_reconnect()
274 spin_unlock(&server->srv_lock); in smb2_reconnect()
279 /* if server is marked for termination, cifsd will cleanup */ in smb2_reconnect()
280 if (server->terminate) { in smb2_reconnect()
281 spin_unlock(&server->srv_lock); in smb2_reconnect()
284 spin_unlock(&server->srv_lock); in smb2_reconnect()
287 rc = cifs_wait_for_server_reconnect(server, tcon->retry); in smb2_reconnect()
292 if (!cifs_chan_needs_reconnect(ses, server) && !tcon->need_reconnect) { in smb2_reconnect()
306 spin_lock(&server->srv_lock); in smb2_reconnect()
307 switch (server->tcpStatus) { in smb2_reconnect()
309 spin_unlock(&server->srv_lock); in smb2_reconnect()
313 spin_unlock(&server->srv_lock); in smb2_reconnect()
321 spin_unlock(&server->srv_lock); in smb2_reconnect()
329 if (!cifs_chan_needs_reconnect(ses, server) && in smb2_reconnect()
343 rc = cifs_negotiate_protocol(0, ses, server); in smb2_reconnect()
351 * if server stopped supporting multichannel in smb2_reconnect()
355 !(server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) { in smb2_reconnect()
356 rc = cifs_chan_skip_or_disable(ses, server, in smb2_reconnect()
364 rc = cifs_setup_session(0, ses, server, ses->local_nls); in smb2_reconnect()
368 * could be enabled on the server e.g.) if an alternate in smb2_reconnect()
411 (server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL) && in smb2_reconnect()
412 server->ops->query_server_interfaces) { in smb2_reconnect()
416 * query server network interfaces, in case they change in smb2_reconnect()
419 rc = server->ops->query_server_interfaces(xid, tcon, false); in smb2_reconnect()
424 * some servers like Azure SMB server do not advertise in smb2_reconnect()
425 * that multichannel has been disabled with server in smb2_reconnect()
427 * treat this as server not supporting multichannel in smb2_reconnect()
430 rc = cifs_chan_skip_or_disable(ses, server, in smb2_reconnect()
434 cifs_dbg(FYI, "%s: failed to query server interfaces: %d\n", in smb2_reconnect()
439 !SERVER_IS_CHAN(server)) { in smb2_reconnect()
458 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in smb2_reconnect()
467 * BB Is flush done by server on drop of tcp session? Should we special in smb2_reconnect()
487 struct TCP_Server_Info *server, in fill_small_buf() argument
501 smb2_hdr_assemble(&spdu->hdr, smb2_command, tcon, server); in fill_small_buf()
513 struct TCP_Server_Info *server, in __smb2_plain_req_init() argument
531 fill_small_buf(smb2_command, tcon, server, in __smb2_plain_req_init()
545 struct TCP_Server_Info *server, in smb2_plain_req_init() argument
550 rc = smb2_reconnect(smb2_command, tcon, server, false); in smb2_plain_req_init()
554 return __smb2_plain_req_init(smb2_command, tcon, server, request_buf, in smb2_plain_req_init()
559 struct TCP_Server_Info *server, in smb2_ioctl_req_init() argument
564 return __smb2_plain_req_init(SMB2_IOCTL, tcon, server, in smb2_ioctl_req_init()
567 return smb2_plain_req_init(SMB2_IOCTL, tcon, server, in smb2_ioctl_req_init()
648 /* copy up to max of first 100 bytes of server name to NetName field */ in build_netname_ctxt()
680 struct TCP_Server_Info *server, unsigned int *total_len) in assemble_neg_contexts() argument
716 pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; in assemble_neg_contexts()
734 if (server->compression.requested) { in assemble_neg_contexts()
766 pr_warn_once("server sent bad preauth context\n"); in decode_preauth_context()
769 pr_warn_once("server sent invalid SaltLength\n"); in decode_preauth_context()
778 static void decode_compress_ctx(struct TCP_Server_Info *server, in decode_compress_ctx() argument
784 server->compression.enabled = false; in decode_compress_ctx()
792 pr_warn_once("server sent bad compression cntxt\n"); in decode_compress_ctx()
809 server->compression.alg = alg; in decode_compress_ctx()
810 server->compression.enabled = true; in decode_compress_ctx()
813 static int decode_encrypt_ctx(struct TCP_Server_Info *server, in decode_encrypt_ctx() argument
825 pr_warn_once("server sent bad crypto ctxt len\n"); in decode_encrypt_ctx()
836 cifs_dbg(VFS, "Server does not support requested encryption type (AES256 GCM)\n"); in decode_encrypt_ctx()
841 * e.g. if server only supported AES256_CCM (very unlikely) in decode_encrypt_ctx()
842 * or server supported no encryption types or had all disabled. in decode_encrypt_ctx()
846 * seal not requested by client, since server is allowed to in decode_encrypt_ctx()
849 server->cipher_type = 0; in decode_encrypt_ctx()
850 server->capabilities &= ~SMB2_GLOBAL_CAP_ENCRYPTION; in decode_encrypt_ctx()
851 pr_warn_once("Server does not support requested encryption types\n"); in decode_encrypt_ctx()
856 /* server returned a cipher we didn't ask for */ in decode_encrypt_ctx()
860 server->cipher_type = ctxt->Ciphers[0]; in decode_encrypt_ctx()
861 server->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION; in decode_encrypt_ctx()
865 static void decode_signing_ctx(struct TCP_Server_Info *server, in decode_signing_ctx() argument
876 pr_warn_once("server sent bad signing negcontext\n"); in decode_signing_ctx()
888 server->signing_negotiated = true; in decode_signing_ctx()
889 server->signing_algorithm = le16_to_cpu(pctxt->SigningAlgorithms[0]); in decode_signing_ctx()
891 server->signing_algorithm); in decode_signing_ctx()
896 struct TCP_Server_Info *server, in smb311_decode_neg_context() argument
936 rc = decode_encrypt_ctx(server, in smb311_decode_neg_context()
939 decode_compress_ctx(server, in smb311_decode_neg_context()
942 server->posix_ext_supported = true; in smb311_decode_neg_context()
944 decode_signing_ctx(server, in smb311_decode_neg_context()
1031 struct TCP_Server_Info *server) in SMB2_negotiate() argument
1047 if (!server) { in SMB2_negotiate()
1048 WARN(1, "%s: server is NULL!\n", __func__); in SMB2_negotiate()
1052 rc = smb2_plain_req_init(SMB2_NEGOTIATE, NULL, server, in SMB2_negotiate()
1059 memset(server->preauth_sha_hash, 0, SMB2_PREAUTH_HASH_SIZE); in SMB2_negotiate()
1062 if (strcmp(server->vals->version_string, in SMB2_negotiate()
1069 } else if (strcmp(server->vals->version_string, in SMB2_negotiate()
1079 req->Dialects[0] = cpu_to_le16(server->vals->protocol_id); in SMB2_negotiate()
1092 req->Capabilities = cpu_to_le32(server->vals->req_capabilities); in SMB2_negotiate()
1097 if (server->vals->protocol_id == SMB20_PROT_ID) in SMB2_negotiate()
1100 memcpy(req->ClientGUID, server->client_guid, in SMB2_negotiate()
1102 if ((server->vals->protocol_id == SMB311_PROT_ID) || in SMB2_negotiate()
1103 (strcmp(server->vals->version_string, in SMB2_negotiate()
1105 (strcmp(server->vals->version_string, in SMB2_negotiate()
1107 assemble_neg_contexts(req, server, &total_len); in SMB2_negotiate()
1116 rc = cifs_send_recv(xid, ses, server, in SMB2_negotiate()
1125 …cifs_server_dbg(VFS, "Dialect not supported by server. Consider specifying vers=1.0 or vers=2.0 o… in SMB2_negotiate()
1131 if (strcmp(server->vals->version_string, in SMB2_negotiate()
1143 server->ops = &smb311_operations; in SMB2_negotiate()
1144 server->vals = &smb311_values; in SMB2_negotiate()
1146 } else if (strcmp(server->vals->version_string, in SMB2_negotiate()
1154 server->ops = &smb21_operations; in SMB2_negotiate()
1155 server->vals = &smb21_values; in SMB2_negotiate()
1157 server->ops = &smb311_operations; in SMB2_negotiate()
1158 server->vals = &smb311_values; in SMB2_negotiate()
1161 server->vals->protocol_id) { in SMB2_negotiate()
1181 cifs_server_dbg(VFS, "Invalid dialect returned by server 0x%x\n", in SMB2_negotiate()
1187 server->dialect = le16_to_cpu(rsp->DialectRevision); in SMB2_negotiate()
1192 * server. in SMB2_negotiate()
1194 memcpy(server->preauth_sha_hash, ses->preauth_sha_hash, in SMB2_negotiate()
1198 server->negflavor = CIFS_NEGFLAVOR_EXTENDED; in SMB2_negotiate()
1200 server->maxBuf = min_t(unsigned int, le32_to_cpu(rsp->MaxTransactSize), in SMB2_negotiate()
1202 server->max_read = le32_to_cpu(rsp->MaxReadSize); in SMB2_negotiate()
1203 server->max_write = le32_to_cpu(rsp->MaxWriteSize); in SMB2_negotiate()
1204 server->sec_mode = le16_to_cpu(rsp->SecurityMode); in SMB2_negotiate()
1205 if ((server->sec_mode & SMB2_SEC_MODE_FLAGS_ALL) != server->sec_mode) in SMB2_negotiate()
1206 cifs_dbg(FYI, "Server returned unexpected security mode 0x%x\n", in SMB2_negotiate()
1207 server->sec_mode); in SMB2_negotiate()
1208 server->capabilities = le32_to_cpu(rsp->Capabilities); in SMB2_negotiate()
1210 server->capabilities |= SMB2_NT_FIND | SMB2_LARGE_FILES; in SMB2_negotiate()
1216 if ((server->dialect == SMB30_PROT_ID || in SMB2_negotiate()
1217 server->dialect == SMB302_PROT_ID) && in SMB2_negotiate()
1218 (server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_negotiate()
1219 server->cipher_type = SMB2_ENCRYPTION_AES128_CCM; in SMB2_negotiate()
1228 * We just found a server which sets blob length to zero expecting raw. in SMB2_negotiate()
1232 server->sec_ntlmssp = true; in SMB2_negotiate()
1235 rc = cifs_enable_signing(server, ses->sign); in SMB2_negotiate()
1239 rc = decode_negTokenInit(security_blob, blob_length, server); in SMB2_negotiate()
1248 rc = smb311_decode_neg_context(rsp, server, in SMB2_negotiate()
1254 if (server->cipher_type && !rc) in SMB2_negotiate()
1255 rc = smb3_crypto_aead_allocate(server); in SMB2_negotiate()
1268 struct TCP_Server_Info *server = tcon->ses->server; in smb3_validate_negotiate() local
1273 if (server->dialect == SMB311_PROT_ID) in smb3_validate_negotiate()
1292 cifs_tcon_dbg(VFS, "Unexpected null user (anonymous) auth flag sent by server\n"); in smb3_validate_negotiate()
1299 cpu_to_le32(server->vals->req_capabilities); in smb3_validate_negotiate()
1303 memcpy(pneg_inbuf->Guid, server->client_guid, in smb3_validate_negotiate()
1316 if (strcmp(server->vals->version_string, in smb3_validate_negotiate()
1325 } else if (strcmp(server->vals->version_string, in smb3_validate_negotiate()
1337 cpu_to_le16(server->vals->protocol_id); in smb3_validate_negotiate()
1350 * Old Windows versions or Netapp SMB server can return in smb3_validate_negotiate()
1353 cifs_tcon_dbg(VFS, "Server does not support validate negotiate\n"); in smb3_validate_negotiate()
1374 if (pneg_rsp->Dialect != cpu_to_le16(server->dialect)) in smb3_validate_negotiate()
1377 if (pneg_rsp->SecurityMode != cpu_to_le16(server->sec_mode)) in smb3_validate_negotiate()
1380 /* do not validate server guid because not saved at negprot time yet */ in smb3_validate_negotiate()
1383 SMB2_LARGE_FILES) != server->capabilities) in smb3_validate_negotiate()
1401 smb2_select_sectype(struct TCP_Server_Info *server, enum securityEnum requested) in smb2_select_sectype() argument
1410 if (server->sec_ntlmssp && in smb2_select_sectype()
1413 if ((server->sec_kerberos || server->sec_mskerberos || server->sec_iakerb) && in smb2_select_sectype()
1425 struct TCP_Server_Info *server; member
1447 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_alloc_buffer() local
1452 rc = smb2_plain_req_init(SMB2_SESSION_SETUP, NULL, server, in SMB2_sess_alloc_buffer()
1482 if (server->credits >= server->max_credits) in SMB2_sess_alloc_buffer()
1486 min_t(int, server->max_credits - in SMB2_sess_alloc_buffer()
1487 server->credits, 130)); in SMB2_sess_alloc_buffer()
1490 if (server->sign) in SMB2_sess_alloc_buffer()
1549 sess_data->server, in SMB2_sess_sendreceive()
1558 trace_smb3_key_expired(sess_data->server->hostname, in SMB2_sess_sendreceive()
1560 sess_data->server->conn_id, in SMB2_sess_sendreceive()
1561 &sess_data->server->dstaddr, rc); in SMB2_sess_sendreceive()
1575 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_establish_session() local
1577 cifs_server_lock(server); in SMB2_sess_establish_session()
1578 if (server->ops->generate_signingkey) { in SMB2_sess_establish_session()
1579 rc = server->ops->generate_signingkey(ses, server); in SMB2_sess_establish_session()
1583 cifs_server_unlock(server); in SMB2_sess_establish_session()
1587 if (!server->session_estab) { in SMB2_sess_establish_session()
1588 server->sequence_number = 0x2; in SMB2_sess_establish_session()
1589 server->session_estab = true; in SMB2_sess_establish_session()
1591 cifs_server_unlock(server); in SMB2_sess_establish_session()
1603 struct TCP_Server_Info *server = sess_data->server; in SMB2_auth_kerberos() local
1613 spnego_key = cifs_get_spnego_key(ses, server); in SMB2_auth_kerberos()
1698 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_auth_rawntlmssp_negotiate() local
1721 &blob_length, ses, server, in SMB2_sess_auth_rawntlmssp_negotiate()
1790 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_auth_rawntlmssp_authenticate() local
1806 ses, server, in SMB2_sess_auth_rawntlmssp_authenticate()
1840 if (ses->server->dialect < SMB30_PROT_ID) { in SMB2_sess_auth_rawntlmssp_authenticate()
1868 struct TCP_Server_Info *server = sess_data->server; in SMB2_select_sec() local
1870 type = smb2_select_sectype(server, ses->sectype); in SMB2_select_sec()
1894 struct TCP_Server_Info *server, in SMB2_sess_setup() argument
1902 if (!server) { in SMB2_sess_setup()
1903 WARN(1, "%s: server is NULL!\n", __func__); in SMB2_sess_setup()
1913 sess_data->server = server; in SMB2_sess_setup()
1923 * Initialize the session hash with the server one. in SMB2_sess_setup()
1925 memcpy(ses->preauth_sha_hash, server->preauth_sha_hash, in SMB2_sess_setup()
1945 struct TCP_Server_Info *server; in SMB2_logoff() local
1954 if (ses && (ses->server)) in SMB2_logoff()
1955 server = ses->server; in SMB2_logoff()
1967 rc = smb2_plain_req_init(SMB2_LOGOFF, NULL, ses->server, in SMB2_logoff()
1977 else if (server->sign) in SMB2_logoff()
1989 rc = cifs_send_recv(xid, ses, ses->server, in SMB2_logoff()
2006 #define MAX_SHARENAME_LENGTH (255 /* server */ + 80 /* share */ + 1 /* NULL */)
2031 struct TCP_Server_Info *server = cifs_pick_channel(ses); in SMB2_tcon() local
2035 if (!server || !tree) in SMB2_tcon()
2052 rc = smb2_plain_req_init(SMB2_TREE_CONNECT, tcon, server, in SMB2_tcon()
2077 if ((server->dialect == SMB311_PROT_ID) && in SMB2_tcon()
2089 if (server->credits >= server->max_credits) in SMB2_tcon()
2093 min_t(int, server->max_credits - in SMB2_tcon()
2094 server->credits, 64)); in SMB2_tcon()
2096 rc = cifs_send_recv(xid, ses, server, in SMB2_tcon()
2136 !(server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_tcon()
2140 if (server->ops->validate_negotiate) in SMB2_tcon()
2141 rc = server->ops->validate_negotiate(xid, tcon); in SMB2_tcon()
2144 server->nosharesock = true; in SMB2_tcon()
2164 struct TCP_Server_Info *server = cifs_pick_channel(ses); in SMB2_tdis() local
2173 if (!ses || !(ses->server)) in SMB2_tdis()
2187 rc = smb2_plain_req_init(SMB2_TREE_DISCONNECT, tcon, server, in SMB2_tdis()
2205 rc = cifs_send_recv(xid, ses, server, in SMB2_tdis()
2311 int smb2_parse_contexts(struct TCP_Server_Info *server, in smb2_parse_contexts() argument
2357 *oplock = server->ops->parse_lease_buf(cc, epoch, in smb2_parse_contexts()
2391 add_lease_context(struct TCP_Server_Info *server, in add_lease_context() argument
2398 iov[num].iov_base = server->ops->create_lease_buf(lease_key, *oplock); in add_lease_context()
2401 iov[num].iov_len = server->vals->create_lease_size; in add_lease_context()
2425 * NB: Handle timeout defaults to 0, which allows server to choose in create_durable_v2_buf()
2823 struct TCP_Server_Info *server; in smb311_posix_mkdir() local
2830 server = cifs_pick_channel(ses); in smb311_posix_mkdir()
2839 if (!ses || !server) { in smb311_posix_mkdir()
2845 rc = smb2_plain_req_init(SMB2_CREATE, tcon, server, in smb311_posix_mkdir()
2936 smb2_set_replay(server, &rqst); in smb311_posix_mkdir()
2939 rc = cifs_send_recv(xid, ses, server, in smb311_posix_mkdir()
2984 SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_open_init() argument
2998 rc = smb2_plain_req_init(SMB2_CREATE, tcon, server, in SMB2_open_init()
3059 if ((!server->oplocks) || (tcon->no_lease)) in SMB2_open_init()
3062 if (!(server->capabilities & SMB2_GLOBAL_CAP_LEASING) || in SMB2_open_init()
3065 else if (!(server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING) && in SMB2_open_init()
3069 rc = add_lease_context(server, req, iov, &n_iov, in SMB2_open_init()
3176 struct TCP_Server_Info *server; in SMB2_open() local
3187 server = cifs_pick_channel(ses); in SMB2_open()
3191 if (!ses || !server) in SMB2_open()
3202 rc = SMB2_open_init(tcon, server, in SMB2_open()
3211 smb2_set_replay(server, &rqst); in SMB2_open()
3213 rc = cifs_send_recv(xid, ses, server, in SMB2_open()
3229 pr_warn_once("server share %s deleted\n", in SMB2_open()
3261 rc = smb2_parse_contexts(server, &rsp_iov, &oparms->fid->epoch, in SMB2_open()
3275 SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_ioctl_init() argument
3287 rc = smb2_ioctl_req_init(opcode, tcon, server, in SMB2_ioctl_init()
3338 * ioctls it may be useful to allow server to send more. No point in SMB2_ioctl_init()
3339 * limiting what the server can send as long as fits in one credit in SMB2_ioctl_init()
3389 struct TCP_Server_Info *server; in SMB2_ioctl() local
3407 server = cifs_pick_channel(ses); in SMB2_ioctl()
3409 if (!server) in SMB2_ioctl()
3429 rc = SMB2_ioctl_init(tcon, server, in SMB2_ioctl()
3436 smb2_set_replay(server, &rqst); in SMB2_ioctl()
3438 rc = cifs_send_recv(xid, ses, server, in SMB2_ioctl()
3481 goto ioctl_exit; /* server returned no data */ in SMB2_ioctl()
3542 SMB2_close_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_close_init() argument
3551 rc = smb2_plain_req_init(SMB2_CLOSE, tcon, server, in SMB2_close_init()
3583 struct TCP_Server_Info *server; in __SMB2_close() local
3596 server = cifs_pick_channel(ses); in __SMB2_close()
3600 if (!ses || !server) in __SMB2_close()
3611 /* check if need to ask server to return timestamps in close response */ in __SMB2_close()
3616 rc = SMB2_close_init(tcon, server, in __SMB2_close()
3623 smb2_set_replay(server, &rqst); in __SMB2_close()
3625 rc = cifs_send_recv(xid, ses, server, in __SMB2_close()
3697 cifs_dbg(VFS, "Invalid server response, bad offset to data\n"); in smb2_validate_iov()
3729 SMB2_query_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_query_info_init() argument
3745 rc = smb2_plain_req_init(SMB2_QUERY_INFO, tcon, server, in SMB2_query_info_init()
3790 struct TCP_Server_Info *server; in query_info() local
3804 server = cifs_pick_channel(ses); in query_info()
3806 if (!server) in query_info()
3817 rc = SMB2_query_info_init(tcon, server, in query_info()
3828 smb2_set_replay(server, &rqst); in query_info()
3830 rc = cifs_send_recv(xid, ses, server, in query_info()
3939 struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_notify_init() argument
3948 rc = smb2_plain_req_init(SMB2_CHANGE_NOTIFY, tcon, server, in SMB2_notify_init()
3977 struct TCP_Server_Info *server; in SMB2_change_notify() local
3990 server = cifs_pick_channel(ses); in SMB2_change_notify()
3993 if (!ses || !server) in SMB2_change_notify()
4007 rc = SMB2_notify_init(xid, &rqst, tcon, server, in SMB2_change_notify()
4017 smb2_set_replay(server, &rqst); in SMB2_change_notify()
4019 rc = cifs_send_recv(xid, ses, server, in SMB2_change_notify()
4065 * rather in the fact that the server sent one and that server->lstrp
4073 struct TCP_Server_Info *server = mid->callback_data; in smb2_echo_callback() local
4080 credits.instance = server->reconnect_instance; in smb2_echo_callback()
4084 add_credits(server, &credits, CIFS_ECHO_OP); in smb2_echo_callback()
4089 struct TCP_Server_Info *server = container_of(work, in smb2_reconnect_server() local
4102 if (!server->srv_count) { in smb2_reconnect_server()
4106 server->srv_count++; in smb2_reconnect_server()
4109 /* If server is a channel, select the primary channel */ in smb2_reconnect_server()
4110 pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; in smb2_reconnect_server()
4115 /* if the server is marked for termination, drop the ref count here */ in smb2_reconnect_server()
4116 if (server->terminate) { in smb2_reconnect_server()
4117 cifs_put_tcp_session(server, true); in smb2_reconnect_server()
4161 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) { in smb2_reconnect_server()
4171 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server, true); in smb2_reconnect_server()
4204 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server, true); in smb2_reconnect_server()
4215 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ); in smb2_reconnect_server()
4219 cifs_put_tcp_session(server, true); in smb2_reconnect_server()
4223 SMB2_echo(struct TCP_Server_Info *server) in SMB2_echo() argument
4232 cifs_dbg(FYI, "In echo request for conn_id %lld\n", server->conn_id); in SMB2_echo()
4234 spin_lock(&server->srv_lock); in SMB2_echo()
4235 if (server->ops->need_neg && in SMB2_echo()
4236 server->ops->need_neg(server)) { in SMB2_echo()
4237 spin_unlock(&server->srv_lock); in SMB2_echo()
4239 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in SMB2_echo()
4242 spin_unlock(&server->srv_lock); in SMB2_echo()
4244 rc = smb2_plain_req_init(SMB2_ECHO, NULL, server, in SMB2_echo()
4254 rc = cifs_call_async(server, &rqst, NULL, smb2_echo_callback, NULL, in SMB2_echo()
4255 server, CIFS_ECHO_OP, NULL); in SMB2_echo()
4272 struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_flush_init() argument
4280 rc = smb2_plain_req_init(SMB2_FLUSH, tcon, server, in SMB2_flush_init()
4302 struct TCP_Server_Info *server; in SMB2_flush() local
4311 server = cifs_pick_channel(ses); in SMB2_flush()
4314 if (!ses || !(ses->server)) in SMB2_flush()
4325 rc = SMB2_flush_init(xid, &rqst, tcon, server, in SMB2_flush()
4333 smb2_set_replay(server, &rqst); in SMB2_flush()
4335 rc = cifs_send_recv(xid, ses, server, in SMB2_flush()
4360 struct TCP_Server_Info *server = io_parms->server; in smb3_use_rdma_offload() local
4364 if (!server || !tcon) in smb3_use_rdma_offload()
4368 if (!server->rdma || !server->smbd_conn) in smb3_use_rdma_offload()
4372 if (server->sign) in smb3_use_rdma_offload()
4380 if (io_parms->length < server->smbd_conn->rdma_readwrite_threshold) in smb3_use_rdma_offload()
4399 struct TCP_Server_Info *server = io_parms->server; in smb2_new_read_req() local
4401 rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server, in smb2_new_read_req()
4406 if (server == NULL) in smb2_new_read_req()
4434 bool need_invalidate = server->dialect == SMB30_PROT_ID; in smb2_new_read_req()
4436 rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->subreq.io_iter, in smb2_new_read_req()
4490 struct TCP_Server_Info *server = rdata->server; in smb2_readv_callback() local
4507 WARN_ONCE(rdata->server != mid->server, in smb2_readv_callback()
4508 "rdata server %p != mid server %p", in smb2_readv_callback()
4509 rdata->server, mid->server); in smb2_readv_callback()
4518 credits.instance = server->reconnect_instance; in smb2_readv_callback()
4520 if (server->sign && !mid->decrypted) { in smb2_readv_callback()
4524 rc = smb2_verify_signature(&rqst, server); in smb2_readv_callback()
4537 if (server->sign && rdata->got_bytes) in smb2_readv_callback()
4546 credits.instance = server->reconnect_instance; in smb2_readv_callback()
4595 server->credits, server->in_flight, in smb2_readv_callback()
4604 server->credits, server->in_flight, in smb2_readv_callback()
4606 add_credits(server, &credits, 0); in smb2_readv_callback()
4620 struct TCP_Server_Info *server; in smb2_async_readv() local
4628 if (!rdata->server) in smb2_async_readv()
4629 rdata->server = cifs_pick_channel(tcon->ses); in smb2_async_readv()
4632 io_parms.server = server = rdata->server; in smb2_async_readv()
4658 if (server->credits >= server->max_credits) in smb2_async_readv()
4662 min_t(int, server->max_credits - in smb2_async_readv()
4663 server->credits, credit_request)); in smb2_async_readv()
4665 rc = adjust_credits(server, rdata, cifs_trace_rw_credits_call_readv_adjust); in smb2_async_readv()
4672 rc = cifs_call_async(server, &rqst, in smb2_async_readv()
4706 if (!io_parms->server) in SMB2_read()
4707 io_parms->server = cifs_pick_channel(io_parms->tcon->ses); in SMB2_read()
4724 rc = cifs_send_recv(xid, ses, io_parms->server, in SMB2_read()
4783 struct TCP_Server_Info *server = wdata->server; in smb2_writev_callback() local
4796 WARN_ONCE(wdata->server != mid->server, in smb2_writev_callback()
4797 "wdata server %p != mid server %p", in smb2_writev_callback()
4798 wdata->server, mid->server); in smb2_writev_callback()
4803 credits.instance = server->reconnect_instance; in smb2_writev_callback()
4804 result = smb2_check_receive(mid, server, 0); in smb2_writev_callback()
4811 * by the server is greater than bytes requested by the in smb2_writev_callback()
4833 credits.instance = server->reconnect_instance; in smb2_writev_callback()
4872 server->credits, server->in_flight, in smb2_writev_callback()
4879 server->credits, server->in_flight, in smb2_writev_callback()
4881 add_credits(server, &credits, 0); in smb2_writev_callback()
4892 struct TCP_Server_Info *server = wdata->server; in smb2_async_writev() local
4906 .server = server, in smb2_async_writev()
4915 rc = smb2_plain_req_init(SMB2_WRITE, tcon, server, in smb2_async_writev()
4955 * If we want to do a server RDMA read, fill in and append in smb2_async_writev()
4960 bool need_invalidate = server->dialect == SMB30_PROT_ID; in smb2_async_writev()
4962 wdata->mr = smbd_register_mr(server->smbd_conn, &wdata->subreq.io_iter, in smb2_async_writev()
4995 smb2_set_replay(server, &rqst); in smb2_async_writev()
5004 if (server->credits >= server->max_credits) in smb2_async_writev()
5008 min_t(int, server->max_credits - in smb2_async_writev()
5009 server->credits, credit_request)); in smb2_async_writev()
5011 rc = adjust_credits(server, wdata, cifs_trace_rw_credits_call_writev_adjust); in smb2_async_writev()
5022 rc = cifs_call_async(server, &rqst, NULL, smb2_writev_callback, NULL, in smb2_async_writev()
5045 server->credits, server->in_flight, in smb2_async_writev()
5048 add_credits_and_wake_if(wdata->server, &wdata->credits, 0); in smb2_async_writev()
5071 struct TCP_Server_Info *server; in SMB2_write() local
5078 if (!io_parms->server) in SMB2_write()
5079 io_parms->server = cifs_pick_channel(io_parms->tcon->ses); in SMB2_write()
5080 server = io_parms->server; in SMB2_write()
5081 if (server == NULL) in SMB2_write()
5087 rc = smb2_plain_req_init(SMB2_WRITE, io_parms->tcon, server, in SMB2_write()
5121 smb2_set_replay(server, &rqst); in SMB2_write()
5123 rc = cifs_send_recv(xid, io_parms->tcon->ses, server, in SMB2_write()
5305 struct TCP_Server_Info *server, in SMB2_query_directory_init() argument
5320 rc = smb2_plain_req_init(SMB2_QUERY_DIRECTORY, tcon, server, in SMB2_query_directory_init()
5359 output_size = min_t(unsigned int, output_size, server->maxBuf); in SMB2_query_directory_init()
5470 struct TCP_Server_Info *server; in SMB2_query_directory() local
5477 server = cifs_pick_channel(ses); in SMB2_query_directory()
5479 if (!ses || !(ses->server)) in SMB2_query_directory()
5490 rc = SMB2_query_directory_init(xid, tcon, server, in SMB2_query_directory()
5498 smb2_set_replay(server, &rqst); in SMB2_query_directory()
5500 rc = cifs_send_recv(xid, ses, server, in SMB2_query_directory()
5543 SMB2_set_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_set_info_init() argument
5554 rc = smb2_plain_req_init(SMB2_SET_INFO, tcon, server, in SMB2_set_info_init()
5605 struct TCP_Server_Info *server; in send_set_info() local
5612 server = cifs_pick_channel(ses); in send_set_info()
5614 if (!ses || !server) in send_set_info()
5631 rc = SMB2_set_info_init(tcon, server, in send_set_info()
5641 smb2_set_replay(server, &rqst); in send_set_info()
5643 rc = cifs_send_recv(xid, ses, server, in send_set_info()
5714 struct TCP_Server_Info *server; in SMB2_oplock_break() local
5725 server = cifs_pick_channel(ses); in SMB2_oplock_break()
5728 rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, server, in SMB2_oplock_break()
5751 smb2_set_replay(server, &rqst); in SMB2_oplock_break()
5753 rc = cifs_send_recv(xid, ses, server, in SMB2_oplock_break()
5801 struct TCP_Server_Info *server, in build_qfs_info_req() argument
5811 if ((tcon->ses == NULL) || server == NULL) in build_qfs_info_req()
5814 rc = smb2_plain_req_init(SMB2_QUERY_INFO, tcon, server, in build_qfs_info_req()
5850 struct TCP_Server_Info *server; in SMB311_posix_qfs_info() local
5858 server = cifs_pick_channel(ses); in SMB311_posix_qfs_info()
5860 rc = build_qfs_info_req(&iov, tcon, server, in SMB311_posix_qfs_info()
5875 smb2_set_replay(server, &rqst); in SMB311_posix_qfs_info()
5877 rc = cifs_send_recv(xid, ses, server, in SMB311_posix_qfs_info()
5915 struct TCP_Server_Info *server; in SMB2_QFS_info() local
5923 server = cifs_pick_channel(ses); in SMB2_QFS_info()
5925 rc = build_qfs_info_req(&iov, tcon, server, in SMB2_QFS_info()
5940 smb2_set_replay(server, &rqst); in SMB2_QFS_info()
5942 rc = cifs_send_recv(xid, ses, server, in SMB2_QFS_info()
5980 struct TCP_Server_Info *server; in SMB2_QFS_attr() local
5988 server = cifs_pick_channel(ses); in SMB2_QFS_attr()
6007 rc = build_qfs_info_req(&iov, tcon, server, in SMB2_QFS_attr()
6021 smb2_set_replay(server, &rqst); in SMB2_QFS_attr()
6023 rc = cifs_send_recv(xid, ses, server, in SMB2_QFS_attr()
6082 struct TCP_Server_Info *server; in smb2_lockv() local
6088 server = cifs_pick_channel(tcon->ses); in smb2_lockv()
6092 rc = smb2_plain_req_init(SMB2_LOCK, tcon, server, in smb2_lockv()
6120 smb2_set_replay(server, &rqst); in smb2_lockv()
6122 rc = cifs_send_recv(xid, tcon->ses, server, in smb2_lockv()
6172 struct TCP_Server_Info *server = cifs_pick_channel(tcon->ses); in SMB2_lease_break() local
6175 rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, server, in SMB2_lease_break()
6199 rc = cifs_send_recv(xid, ses, server, in SMB2_lease_break()