Lines Matching full:server
86 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in smb3_encryption_required()
89 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in smb3_encryption_required()
97 struct TCP_Server_Info *server) in smb2_hdr_assemble() argument
105 if (server) { in smb2_hdr_assemble()
107 if (server->dialect >= SMB30_PROT_ID) { in smb2_hdr_assemble()
113 if (SERVER_IS_CHAN(server)) in smb2_hdr_assemble()
115 cpu_to_le16(server->primary_server->channel_sequence_num); in smb2_hdr_assemble()
118 cpu_to_le16(server->channel_sequence_num); in smb2_hdr_assemble()
120 spin_lock(&server->req_lock); in smb2_hdr_assemble()
122 if (server->credits >= server->max_credits) in smb2_hdr_assemble()
126 min_t(int, server->max_credits - in smb2_hdr_assemble()
127 server->credits, 10)); in smb2_hdr_assemble()
128 spin_unlock(&server->req_lock); in smb2_hdr_assemble()
139 if (server && (server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU)) in smb2_hdr_assemble()
150 * to pass the path on the Open SMB prefixed by \\server\share. in smb2_hdr_assemble()
153 * illegal to send an empty path name (without \\server\share prefix) in smb2_hdr_assemble()
161 if (server && server->sign && !smb3_encryption_required(tcon)) in smb2_hdr_assemble()
170 struct TCP_Server_Info *server, in cifs_chan_skip_or_disable() argument
176 if (SERVER_IS_CHAN(server)) { in cifs_chan_skip_or_disable()
178 "server %s does not support multichannel anymore. Skip secondary channel\n", in cifs_chan_skip_or_disable()
179 ses->server->hostname); in cifs_chan_skip_or_disable()
182 chan_index = cifs_ses_get_chan_index(ses, server); in cifs_chan_skip_or_disable()
188 ses->chans[chan_index].server = NULL; in cifs_chan_skip_or_disable()
189 server->terminate = true; in cifs_chan_skip_or_disable()
193 * the above reference of server by channel in cifs_chan_skip_or_disable()
198 cifs_put_tcp_session(server, from_reconnect); in cifs_chan_skip_or_disable()
200 cifs_signal_cifsd_for_reconnect(server, false); in cifs_chan_skip_or_disable()
202 /* mark primary server as needing reconnect */ in cifs_chan_skip_or_disable()
203 pserver = server->primary_server; in cifs_chan_skip_or_disable()
210 "server does not support multichannel anymore. Disable all other channels\n"); in cifs_chan_skip_or_disable()
219 struct TCP_Server_Info *server, bool from_reconnect) in smb2_reconnect() argument
259 if (!ses->server || !server) in smb2_reconnect()
262 spin_lock(&server->srv_lock); in smb2_reconnect()
263 if (server->tcpStatus == CifsNeedReconnect) { in smb2_reconnect()
276 spin_unlock(&server->srv_lock); in smb2_reconnect()
281 /* if server is marked for termination, cifsd will cleanup */ in smb2_reconnect()
282 if (server->terminate) { in smb2_reconnect()
283 spin_unlock(&server->srv_lock); in smb2_reconnect()
286 spin_unlock(&server->srv_lock); in smb2_reconnect()
289 rc = cifs_wait_for_server_reconnect(server, tcon->retry); in smb2_reconnect()
294 if (!cifs_chan_needs_reconnect(ses, server) && !tcon->need_reconnect) { in smb2_reconnect()
308 spin_lock(&server->srv_lock); in smb2_reconnect()
309 switch (server->tcpStatus) { in smb2_reconnect()
311 spin_unlock(&server->srv_lock); in smb2_reconnect()
315 spin_unlock(&server->srv_lock); in smb2_reconnect()
323 spin_unlock(&server->srv_lock); in smb2_reconnect()
331 if (!cifs_chan_needs_reconnect(ses, server) && in smb2_reconnect()
345 rc = cifs_negotiate_protocol(0, ses, server); in smb2_reconnect()
353 * if server stopped supporting multichannel in smb2_reconnect()
357 !(server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) { in smb2_reconnect()
358 rc = cifs_chan_skip_or_disable(ses, server, in smb2_reconnect()
366 rc = cifs_setup_session(0, ses, server, ses->local_nls); in smb2_reconnect()
370 * could be enabled on the server e.g.) if an alternate in smb2_reconnect()
413 (server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL) && in smb2_reconnect()
414 server->ops->query_server_interfaces) { in smb2_reconnect()
416 * query server network interfaces, in case they change. in smb2_reconnect()
423 rc = server->ops->query_server_interfaces(xid, tcon, false); in smb2_reconnect()
435 * some servers like Azure SMB server do not advertise in smb2_reconnect()
436 * that multichannel has been disabled with server in smb2_reconnect()
438 * treat this as server not supporting multichannel in smb2_reconnect()
441 rc = cifs_chan_skip_or_disable(ses, server, in smb2_reconnect()
445 cifs_tcon_dbg(FYI, "%s: failed to query server interfaces: %d\n", in smb2_reconnect()
450 !SERVER_IS_CHAN(server)) { in smb2_reconnect()
466 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in smb2_reconnect()
475 * BB Is flush done by server on drop of tcp session? Should we special in smb2_reconnect()
495 struct TCP_Server_Info *server, in fill_small_buf() argument
509 smb2_hdr_assemble(&spdu->hdr, smb2_command, tcon, server); in fill_small_buf()
521 struct TCP_Server_Info *server, in __smb2_plain_req_init() argument
539 fill_small_buf(smb2_command, tcon, server, in __smb2_plain_req_init()
553 struct TCP_Server_Info *server, in smb2_plain_req_init() argument
558 rc = smb2_reconnect(smb2_command, tcon, server, false); in smb2_plain_req_init()
562 return __smb2_plain_req_init(smb2_command, tcon, server, request_buf, in smb2_plain_req_init()
567 struct TCP_Server_Info *server, in smb2_ioctl_req_init() argument
579 return __smb2_plain_req_init(SMB2_IOCTL, tcon, server, in smb2_ioctl_req_init()
582 return smb2_plain_req_init(SMB2_IOCTL, tcon, server, in smb2_ioctl_req_init()
663 /* copy up to max of first 100 bytes of server name to NetName field */ in build_netname_ctxt()
695 struct TCP_Server_Info *server, unsigned int *total_len) in assemble_neg_contexts() argument
731 pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; in assemble_neg_contexts()
749 if (server->compression.requested) { in assemble_neg_contexts()
781 pr_warn_once("server sent bad preauth context\n"); in decode_preauth_context()
784 pr_warn_once("server sent invalid SaltLength\n"); in decode_preauth_context()
793 static void decode_compress_ctx(struct TCP_Server_Info *server, in decode_compress_ctx() argument
799 server->compression.enabled = false; in decode_compress_ctx()
807 pr_warn_once("server sent bad compression cntxt\n"); in decode_compress_ctx()
824 server->compression.alg = alg; in decode_compress_ctx()
825 server->compression.enabled = true; in decode_compress_ctx()
828 static int decode_encrypt_ctx(struct TCP_Server_Info *server, in decode_encrypt_ctx() argument
840 pr_warn_once("server sent bad crypto ctxt len\n"); in decode_encrypt_ctx()
851 cifs_dbg(VFS, "Server does not support requested encryption type (AES256 GCM)\n"); in decode_encrypt_ctx()
856 * e.g. if server only supported AES256_CCM (very unlikely) in decode_encrypt_ctx()
857 * or server supported no encryption types or had all disabled. in decode_encrypt_ctx()
861 * seal not requested by client, since server is allowed to in decode_encrypt_ctx()
864 server->cipher_type = 0; in decode_encrypt_ctx()
865 server->capabilities &= ~SMB2_GLOBAL_CAP_ENCRYPTION; in decode_encrypt_ctx()
866 pr_warn_once("Server does not support requested encryption types\n"); in decode_encrypt_ctx()
871 /* server returned a cipher we didn't ask for */ in decode_encrypt_ctx()
875 server->cipher_type = ctxt->Ciphers[0]; in decode_encrypt_ctx()
876 server->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION; in decode_encrypt_ctx()
880 static void decode_signing_ctx(struct TCP_Server_Info *server, in decode_signing_ctx() argument
891 pr_warn_once("server sent bad signing negcontext\n"); in decode_signing_ctx()
903 server->signing_negotiated = true; in decode_signing_ctx()
904 server->signing_algorithm = le16_to_cpu(pctxt->SigningAlgorithms[0]); in decode_signing_ctx()
906 server->signing_algorithm); in decode_signing_ctx()
911 struct TCP_Server_Info *server, in smb311_decode_neg_context() argument
951 rc = decode_encrypt_ctx(server, in smb311_decode_neg_context()
954 decode_compress_ctx(server, in smb311_decode_neg_context()
957 server->posix_ext_supported = true; in smb311_decode_neg_context()
959 decode_signing_ctx(server, in smb311_decode_neg_context()
1046 struct TCP_Server_Info *server) in SMB2_negotiate() argument
1062 if (!server) { in SMB2_negotiate()
1063 WARN(1, "%s: server is NULL!\n", __func__); in SMB2_negotiate()
1067 rc = smb2_plain_req_init(SMB2_NEGOTIATE, NULL, server, in SMB2_negotiate()
1074 memset(server->preauth_sha_hash, 0, SMB2_PREAUTH_HASH_SIZE); in SMB2_negotiate()
1077 if (strcmp(server->vals->version_string, in SMB2_negotiate()
1084 } else if (strcmp(server->vals->version_string, in SMB2_negotiate()
1094 req->Dialects[0] = cpu_to_le16(server->vals->protocol_id); in SMB2_negotiate()
1107 req->Capabilities = cpu_to_le32(server->vals->req_capabilities); in SMB2_negotiate()
1112 if (server->vals->protocol_id == SMB20_PROT_ID) in SMB2_negotiate()
1115 memcpy(req->ClientGUID, server->client_guid, in SMB2_negotiate()
1117 if ((server->vals->protocol_id == SMB311_PROT_ID) || in SMB2_negotiate()
1118 (strcmp(server->vals->version_string, in SMB2_negotiate()
1120 (strcmp(server->vals->version_string, in SMB2_negotiate()
1122 assemble_neg_contexts(req, server, &total_len); in SMB2_negotiate()
1131 rc = cifs_send_recv(xid, ses, server, in SMB2_negotiate()
1140 …cifs_server_dbg(VFS, "Dialect not supported by server. Consider specifying vers=1.0 or vers=2.0 o… in SMB2_negotiate()
1146 if (strcmp(server->vals->version_string, in SMB2_negotiate()
1158 server->ops = &smb311_operations; in SMB2_negotiate()
1159 server->vals = &smb311_values; in SMB2_negotiate()
1161 } else if (strcmp(server->vals->version_string, in SMB2_negotiate()
1169 server->ops = &smb21_operations; in SMB2_negotiate()
1170 server->vals = &smb21_values; in SMB2_negotiate()
1172 server->ops = &smb311_operations; in SMB2_negotiate()
1173 server->vals = &smb311_values; in SMB2_negotiate()
1176 server->vals->protocol_id) { in SMB2_negotiate()
1196 cifs_server_dbg(VFS, "Invalid dialect returned by server 0x%x\n", in SMB2_negotiate()
1202 server->dialect = le16_to_cpu(rsp->DialectRevision); in SMB2_negotiate()
1207 * server. in SMB2_negotiate()
1209 memcpy(server->preauth_sha_hash, ses->preauth_sha_hash, in SMB2_negotiate()
1213 server->negflavor = CIFS_NEGFLAVOR_EXTENDED; in SMB2_negotiate()
1215 server->maxBuf = min_t(unsigned int, le32_to_cpu(rsp->MaxTransactSize), in SMB2_negotiate()
1217 server->max_read = le32_to_cpu(rsp->MaxReadSize); in SMB2_negotiate()
1218 server->max_write = le32_to_cpu(rsp->MaxWriteSize); in SMB2_negotiate()
1219 server->sec_mode = le16_to_cpu(rsp->SecurityMode); in SMB2_negotiate()
1220 if ((server->sec_mode & SMB2_SEC_MODE_FLAGS_ALL) != server->sec_mode) in SMB2_negotiate()
1221 cifs_dbg(FYI, "Server returned unexpected security mode 0x%x\n", in SMB2_negotiate()
1222 server->sec_mode); in SMB2_negotiate()
1223 server->capabilities = le32_to_cpu(rsp->Capabilities); in SMB2_negotiate()
1225 server->capabilities |= SMB2_NT_FIND | SMB2_LARGE_FILES; in SMB2_negotiate()
1231 if ((server->dialect == SMB30_PROT_ID || in SMB2_negotiate()
1232 server->dialect == SMB302_PROT_ID) && in SMB2_negotiate()
1233 (server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_negotiate()
1234 server->cipher_type = SMB2_ENCRYPTION_AES128_CCM; in SMB2_negotiate()
1243 * We just found a server which sets blob length to zero expecting raw. in SMB2_negotiate()
1247 server->sec_ntlmssp = true; in SMB2_negotiate()
1250 rc = cifs_enable_signing(server, ses->sign); in SMB2_negotiate()
1254 rc = decode_negTokenInit(security_blob, blob_length, server); in SMB2_negotiate()
1263 rc = smb311_decode_neg_context(rsp, server, in SMB2_negotiate()
1269 if (server->cipher_type && !rc) in SMB2_negotiate()
1270 rc = smb3_crypto_aead_allocate(server); in SMB2_negotiate()
1283 struct TCP_Server_Info *server = tcon->ses->server; in smb3_validate_negotiate() local
1288 if (server->dialect == SMB311_PROT_ID) in smb3_validate_negotiate()
1307 cifs_tcon_dbg(VFS, "Unexpected null user (anonymous) auth flag sent by server\n"); in smb3_validate_negotiate()
1314 cpu_to_le32(server->vals->req_capabilities); in smb3_validate_negotiate()
1318 memcpy(pneg_inbuf->Guid, server->client_guid, in smb3_validate_negotiate()
1331 if (strcmp(server->vals->version_string, in smb3_validate_negotiate()
1340 } else if (strcmp(server->vals->version_string, in smb3_validate_negotiate()
1352 cpu_to_le16(server->vals->protocol_id); in smb3_validate_negotiate()
1365 * Old Windows versions or Netapp SMB server can return in smb3_validate_negotiate()
1368 cifs_tcon_dbg(VFS, "Server does not support validate negotiate\n"); in smb3_validate_negotiate()
1389 if (pneg_rsp->Dialect != cpu_to_le16(server->dialect)) in smb3_validate_negotiate()
1392 if (pneg_rsp->SecurityMode != cpu_to_le16(server->sec_mode)) in smb3_validate_negotiate()
1395 /* do not validate server guid because not saved at negprot time yet */ in smb3_validate_negotiate()
1398 SMB2_LARGE_FILES) != server->capabilities) in smb3_validate_negotiate()
1416 smb2_select_sectype(struct TCP_Server_Info *server, enum securityEnum requested) in smb2_select_sectype() argument
1425 if (server->sec_ntlmssp && in smb2_select_sectype()
1428 if ((server->sec_kerberos || server->sec_mskerberos || server->sec_iakerb) && in smb2_select_sectype()
1440 struct TCP_Server_Info *server; member
1462 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_alloc_buffer() local
1467 rc = smb2_plain_req_init(SMB2_SESSION_SETUP, NULL, server, in SMB2_sess_alloc_buffer()
1497 if (server->credits >= server->max_credits) in SMB2_sess_alloc_buffer()
1501 min_t(int, server->max_credits - in SMB2_sess_alloc_buffer()
1502 server->credits, 130)); in SMB2_sess_alloc_buffer()
1505 if (server->sign) in SMB2_sess_alloc_buffer()
1564 sess_data->server, in SMB2_sess_sendreceive()
1573 trace_smb3_key_expired(sess_data->server->hostname, in SMB2_sess_sendreceive()
1575 sess_data->server->conn_id, in SMB2_sess_sendreceive()
1576 &sess_data->server->dstaddr, rc); in SMB2_sess_sendreceive()
1590 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_establish_session() local
1592 cifs_server_lock(server); in SMB2_sess_establish_session()
1593 if (server->ops->generate_signingkey) { in SMB2_sess_establish_session()
1594 rc = server->ops->generate_signingkey(ses, server); in SMB2_sess_establish_session()
1598 cifs_server_unlock(server); in SMB2_sess_establish_session()
1602 if (!server->session_estab) { in SMB2_sess_establish_session()
1603 server->sequence_number = 0x2; in SMB2_sess_establish_session()
1604 server->session_estab = true; in SMB2_sess_establish_session()
1606 cifs_server_unlock(server); in SMB2_sess_establish_session()
1618 struct TCP_Server_Info *server = sess_data->server; in SMB2_auth_kerberos() local
1628 spnego_key = cifs_get_spnego_key(ses, server); in SMB2_auth_kerberos()
1713 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_auth_rawntlmssp_negotiate() local
1736 &blob_length, ses, server, in SMB2_sess_auth_rawntlmssp_negotiate()
1805 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_auth_rawntlmssp_authenticate() local
1821 ses, server, in SMB2_sess_auth_rawntlmssp_authenticate()
1855 if (ses->server->dialect < SMB30_PROT_ID) { in SMB2_sess_auth_rawntlmssp_authenticate()
1883 struct TCP_Server_Info *server = sess_data->server; in SMB2_select_sec() local
1885 type = smb2_select_sectype(server, ses->sectype); in SMB2_select_sec()
1909 struct TCP_Server_Info *server, in SMB2_sess_setup() argument
1917 if (!server) { in SMB2_sess_setup()
1918 WARN(1, "%s: server is NULL!\n", __func__); in SMB2_sess_setup()
1928 sess_data->server = server; in SMB2_sess_setup()
1938 * Initialize the session hash with the server one. in SMB2_sess_setup()
1940 memcpy(ses->preauth_sha_hash, server->preauth_sha_hash, in SMB2_sess_setup()
1960 struct TCP_Server_Info *server; in SMB2_logoff() local
1969 if (ses && (ses->server)) in SMB2_logoff()
1970 server = ses->server; in SMB2_logoff()
1982 rc = smb2_plain_req_init(SMB2_LOGOFF, NULL, ses->server, in SMB2_logoff()
1992 else if (server->sign) in SMB2_logoff()
2004 rc = cifs_send_recv(xid, ses, ses->server, in SMB2_logoff()
2021 #define MAX_SHARENAME_LENGTH (255 /* server */ + 80 /* share */ + 1 /* NULL */)
2046 struct TCP_Server_Info *server = cifs_pick_channel(ses); in SMB2_tcon() local
2050 if (!server || !tree) in SMB2_tcon()
2067 rc = smb2_plain_req_init(SMB2_TREE_CONNECT, tcon, server, in SMB2_tcon()
2092 if ((server->dialect == SMB311_PROT_ID) && in SMB2_tcon()
2104 if (server->credits >= server->max_credits) in SMB2_tcon()
2108 min_t(int, server->max_credits - in SMB2_tcon()
2109 server->credits, 64)); in SMB2_tcon()
2111 rc = cifs_send_recv(xid, ses, server, in SMB2_tcon()
2151 !(server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_tcon()
2155 if (server->ops->validate_negotiate) in SMB2_tcon()
2156 rc = server->ops->validate_negotiate(xid, tcon); in SMB2_tcon()
2159 server->nosharesock = true; in SMB2_tcon()
2179 struct TCP_Server_Info *server = cifs_pick_channel(ses); in SMB2_tdis() local
2188 if (!ses || !(ses->server)) in SMB2_tdis()
2202 rc = smb2_plain_req_init(SMB2_TREE_DISCONNECT, tcon, server, in SMB2_tdis()
2220 rc = cifs_send_recv(xid, ses, server, in SMB2_tdis()
2326 int smb2_parse_contexts(struct TCP_Server_Info *server, in smb2_parse_contexts() argument
2372 *oplock = server->ops->parse_lease_buf(cc, epoch, in smb2_parse_contexts()
2406 add_lease_context(struct TCP_Server_Info *server, in add_lease_context() argument
2417 iov[num].iov_base = server->ops->create_lease_buf(lease_key, *oplock, in add_lease_context()
2421 iov[num].iov_len = server->vals->create_lease_size; in add_lease_context()
2445 * NB: Handle timeout defaults to 0, which allows server to choose in create_durable_v2_buf()
2843 struct TCP_Server_Info *server; in smb311_posix_mkdir() local
2850 server = cifs_pick_channel(ses); in smb311_posix_mkdir()
2859 if (!ses || !server) { in smb311_posix_mkdir()
2865 rc = smb2_plain_req_init(SMB2_CREATE, tcon, server, in smb311_posix_mkdir()
2957 smb2_set_replay(server, &rqst); in smb311_posix_mkdir()
2960 rc = cifs_send_recv(xid, ses, server, in smb311_posix_mkdir()
3005 SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_open_init() argument
3019 rc = smb2_plain_req_init(SMB2_CREATE, tcon, server, in SMB2_open_init()
3080 if ((!server->oplocks) || (tcon->no_lease)) in SMB2_open_init()
3083 if (!(server->capabilities & SMB2_GLOBAL_CAP_LEASING) || in SMB2_open_init()
3086 else if (!(server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING) && in SMB2_open_init()
3090 rc = add_lease_context(server, req, iov, &n_iov, in SMB2_open_init()
3199 struct TCP_Server_Info *server; in SMB2_open() local
3210 server = cifs_pick_channel(ses); in SMB2_open()
3214 if (!ses || !server) in SMB2_open()
3225 rc = SMB2_open_init(tcon, server, in SMB2_open()
3234 smb2_set_replay(server, &rqst); in SMB2_open()
3236 rc = cifs_send_recv(xid, ses, server, in SMB2_open()
3252 pr_warn_once("server share %s deleted\n", in SMB2_open()
3284 rc = smb2_parse_contexts(server, &rsp_iov, &oparms->fid->epoch, in SMB2_open()
3298 SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_ioctl_init() argument
3310 rc = smb2_ioctl_req_init(opcode, tcon, server, in SMB2_ioctl_init()
3361 * ioctls it may be useful to allow server to send more. No point in SMB2_ioctl_init()
3362 * limiting what the server can send as long as fits in one credit in SMB2_ioctl_init()
3412 struct TCP_Server_Info *server; in SMB2_ioctl() local
3430 server = cifs_pick_channel(ses); in SMB2_ioctl()
3432 if (!server) in SMB2_ioctl()
3452 rc = SMB2_ioctl_init(tcon, server, in SMB2_ioctl()
3459 smb2_set_replay(server, &rqst); in SMB2_ioctl()
3461 rc = cifs_send_recv(xid, ses, server, in SMB2_ioctl()
3504 goto ioctl_exit; /* server returned no data */ in SMB2_ioctl()
3565 SMB2_close_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_close_init() argument
3574 rc = smb2_plain_req_init(SMB2_CLOSE, tcon, server, in SMB2_close_init()
3606 struct TCP_Server_Info *server; in __SMB2_close() local
3619 server = cifs_pick_channel(ses); in __SMB2_close()
3623 if (!ses || !server) in __SMB2_close()
3634 /* check if need to ask server to return timestamps in close response */ in __SMB2_close()
3639 rc = SMB2_close_init(tcon, server, in __SMB2_close()
3646 smb2_set_replay(server, &rqst); in __SMB2_close()
3648 rc = cifs_send_recv(xid, ses, server, in __SMB2_close()
3720 cifs_dbg(VFS, "Invalid server response, bad offset to data\n"); in smb2_validate_iov()
3752 SMB2_query_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_query_info_init() argument
3768 rc = smb2_plain_req_init(SMB2_QUERY_INFO, tcon, server, in SMB2_query_info_init()
3813 struct TCP_Server_Info *server; in query_info() local
3827 server = cifs_pick_channel(ses); in query_info()
3829 if (!server) in query_info()
3840 rc = SMB2_query_info_init(tcon, server, in query_info()
3851 smb2_set_replay(server, &rqst); in query_info()
3853 rc = cifs_send_recv(xid, ses, server, in query_info()
3960 struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_notify_init() argument
3969 rc = smb2_plain_req_init(SMB2_CHANGE_NOTIFY, tcon, server, in SMB2_notify_init()
3998 struct TCP_Server_Info *server; in SMB2_change_notify() local
4011 server = cifs_pick_channel(ses); in SMB2_change_notify()
4014 if (!ses || !server) in SMB2_change_notify()
4028 rc = SMB2_notify_init(xid, &rqst, tcon, server, in SMB2_change_notify()
4038 smb2_set_replay(server, &rqst); in SMB2_change_notify()
4040 rc = cifs_send_recv(xid, ses, server, in SMB2_change_notify()
4086 * rather in the fact that the server sent one and that server->lstrp
4094 struct TCP_Server_Info *server = mid->callback_data; in smb2_echo_callback() local
4101 credits.instance = server->reconnect_instance; in smb2_echo_callback()
4105 add_credits(server, &credits, CIFS_ECHO_OP); in smb2_echo_callback()
4108 static void cifs_renegotiate_iosize(struct TCP_Server_Info *server, in cifs_renegotiate_iosize() argument
4113 if (server == NULL || tcon == NULL) in cifs_renegotiate_iosize()
4118 cifs_negotiate_iosize(server, cifs_sb->ctx, tcon); in cifs_renegotiate_iosize()
4124 struct TCP_Server_Info *server = container_of(work, in smb2_reconnect_server() local
4137 if (!server->srv_count) { in smb2_reconnect_server()
4141 server->srv_count++; in smb2_reconnect_server()
4144 /* If server is a channel, select the primary channel */ in smb2_reconnect_server()
4145 pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; in smb2_reconnect_server()
4150 /* if the server is marked for termination, drop the ref count here */ in smb2_reconnect_server()
4151 if (server->terminate) { in smb2_reconnect_server()
4152 cifs_put_tcp_session(server, true); in smb2_reconnect_server()
4196 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) { in smb2_reconnect_server()
4206 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server, true); in smb2_reconnect_server()
4208 cifs_renegotiate_iosize(server, tcon); in smb2_reconnect_server()
4238 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server, true); in smb2_reconnect_server()
4249 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ); in smb2_reconnect_server()
4253 cifs_put_tcp_session(server, true); in smb2_reconnect_server()
4257 SMB2_echo(struct TCP_Server_Info *server) in SMB2_echo() argument
4266 cifs_dbg(FYI, "In echo request for conn_id %lld\n", server->conn_id); in SMB2_echo()
4268 spin_lock(&server->srv_lock); in SMB2_echo()
4269 if (server->ops->need_neg && in SMB2_echo()
4270 server->ops->need_neg(server)) { in SMB2_echo()
4271 spin_unlock(&server->srv_lock); in SMB2_echo()
4273 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in SMB2_echo()
4276 spin_unlock(&server->srv_lock); in SMB2_echo()
4278 rc = smb2_plain_req_init(SMB2_ECHO, NULL, server, in SMB2_echo()
4288 rc = cifs_call_async(server, &rqst, NULL, smb2_echo_callback, NULL, in SMB2_echo()
4289 server, CIFS_ECHO_OP, NULL); in SMB2_echo()
4306 struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_flush_init() argument
4314 rc = smb2_plain_req_init(SMB2_FLUSH, tcon, server, in SMB2_flush_init()
4336 struct TCP_Server_Info *server; in SMB2_flush() local
4345 server = cifs_pick_channel(ses); in SMB2_flush()
4348 if (!ses || !(ses->server)) in SMB2_flush()
4359 rc = SMB2_flush_init(xid, &rqst, tcon, server, in SMB2_flush()
4367 smb2_set_replay(server, &rqst); in SMB2_flush()
4369 rc = cifs_send_recv(xid, ses, server, in SMB2_flush()
4394 struct TCP_Server_Info *server = io_parms->server; in smb3_use_rdma_offload() local
4398 if (!server || !tcon) in smb3_use_rdma_offload()
4402 if (!server->rdma || !server->smbd_conn) in smb3_use_rdma_offload()
4406 if (server->sign) in smb3_use_rdma_offload()
4414 if (io_parms->length < server->rdma_readwrite_threshold) in smb3_use_rdma_offload()
4433 struct TCP_Server_Info *server = io_parms->server; in smb2_new_read_req() local
4435 rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server, in smb2_new_read_req()
4440 if (server == NULL) in smb2_new_read_req()
4468 bool need_invalidate = server->dialect == SMB30_PROT_ID; in smb2_new_read_req()
4470 rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->subreq.io_iter, in smb2_new_read_req()
4524 struct TCP_Server_Info *server = rdata->server; in smb2_readv_callback() local
4541 WARN_ONCE(rdata->server != mid->server, in smb2_readv_callback()
4542 "rdata server %p != mid server %p", in smb2_readv_callback()
4543 rdata->server, mid->server); in smb2_readv_callback()
4552 credits.instance = server->reconnect_instance; in smb2_readv_callback()
4554 if (server->sign && !mid->decrypted) { in smb2_readv_callback()
4558 rc = smb2_verify_signature(&rqst, server); in smb2_readv_callback()
4575 if (server->sign && rdata->got_bytes) in smb2_readv_callback()
4585 credits.instance = server->reconnect_instance; in smb2_readv_callback()
4637 server->credits, server->in_flight, in smb2_readv_callback()
4646 server->credits, server->in_flight, in smb2_readv_callback()
4648 add_credits(server, &credits, 0); in smb2_readv_callback()
4662 struct TCP_Server_Info *server; in smb2_async_readv() local
4670 if (!rdata->server) in smb2_async_readv()
4671 rdata->server = cifs_pick_channel(tcon->ses); in smb2_async_readv()
4674 io_parms.server = server = rdata->server; in smb2_async_readv()
4700 if (server->credits >= server->max_credits) in smb2_async_readv()
4704 min_t(int, server->max_credits - in smb2_async_readv()
4705 server->credits, credit_request)); in smb2_async_readv()
4707 rc = adjust_credits(server, rdata, cifs_trace_rw_credits_call_readv_adjust); in smb2_async_readv()
4714 rc = cifs_call_async(server, &rqst, in smb2_async_readv()
4748 if (!io_parms->server) in SMB2_read()
4749 io_parms->server = cifs_pick_channel(io_parms->tcon->ses); in SMB2_read()
4766 rc = cifs_send_recv(xid, ses, io_parms->server, in SMB2_read()
4825 struct TCP_Server_Info *server = wdata->server; in smb2_writev_callback() local
4838 WARN_ONCE(wdata->server != mid->server, in smb2_writev_callback()
4839 "wdata server %p != mid server %p", in smb2_writev_callback()
4840 wdata->server, mid->server); in smb2_writev_callback()
4846 credits.instance = server->reconnect_instance; in smb2_writev_callback()
4847 result = smb2_check_receive(mid, server, 0); in smb2_writev_callback()
4856 * by the server is greater than bytes requested by the in smb2_writev_callback()
4885 credits.instance = server->reconnect_instance; in smb2_writev_callback()
4926 server->credits, server->in_flight, in smb2_writev_callback()
4932 server->credits, server->in_flight, in smb2_writev_callback()
4934 add_credits(server, &credits, 0); in smb2_writev_callback()
4945 struct TCP_Server_Info *server = wdata->server; in smb2_async_writev() local
4959 .server = server, in smb2_async_writev()
4968 rc = smb2_plain_req_init(SMB2_WRITE, tcon, server, in smb2_async_writev()
5008 * If we want to do a server RDMA read, fill in and append in smb2_async_writev()
5013 bool need_invalidate = server->dialect == SMB30_PROT_ID; in smb2_async_writev()
5015 wdata->mr = smbd_register_mr(server->smbd_conn, &wdata->subreq.io_iter, in smb2_async_writev()
5048 smb2_set_replay(server, &rqst); in smb2_async_writev()
5057 if (server->credits >= server->max_credits) in smb2_async_writev()
5061 min_t(int, server->max_credits - in smb2_async_writev()
5062 server->credits, credit_request)); in smb2_async_writev()
5064 rc = adjust_credits(server, wdata, cifs_trace_rw_credits_call_writev_adjust); in smb2_async_writev()
5075 rc = cifs_call_async(server, &rqst, NULL, smb2_writev_callback, NULL, in smb2_async_writev()
5098 server->credits, server->in_flight, in smb2_async_writev()
5101 add_credits_and_wake_if(wdata->server, &wdata->credits, 0); in smb2_async_writev()
5124 struct TCP_Server_Info *server; in SMB2_write() local
5131 if (!io_parms->server) in SMB2_write()
5132 io_parms->server = cifs_pick_channel(io_parms->tcon->ses); in SMB2_write()
5133 server = io_parms->server; in SMB2_write()
5134 if (server == NULL) in SMB2_write()
5140 rc = smb2_plain_req_init(SMB2_WRITE, io_parms->tcon, server, in SMB2_write()
5174 smb2_set_replay(server, &rqst); in SMB2_write()
5176 rc = cifs_send_recv(xid, io_parms->tcon->ses, server, in SMB2_write()
5358 struct TCP_Server_Info *server, in SMB2_query_directory_init() argument
5373 rc = smb2_plain_req_init(SMB2_QUERY_DIRECTORY, tcon, server, in SMB2_query_directory_init()
5412 output_size = min_t(unsigned int, output_size, server->maxBuf); in SMB2_query_directory_init()
5523 struct TCP_Server_Info *server; in SMB2_query_directory() local
5530 server = cifs_pick_channel(ses); in SMB2_query_directory()
5532 if (!ses || !(ses->server)) in SMB2_query_directory()
5543 rc = SMB2_query_directory_init(xid, tcon, server, in SMB2_query_directory()
5551 smb2_set_replay(server, &rqst); in SMB2_query_directory()
5553 rc = cifs_send_recv(xid, ses, server, in SMB2_query_directory()
5596 SMB2_set_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_set_info_init() argument
5607 rc = smb2_plain_req_init(SMB2_SET_INFO, tcon, server, in SMB2_set_info_init()
5658 struct TCP_Server_Info *server; in send_set_info() local
5665 server = cifs_pick_channel(ses); in send_set_info()
5667 if (!ses || !server) in send_set_info()
5684 rc = SMB2_set_info_init(tcon, server, in send_set_info()
5694 smb2_set_replay(server, &rqst); in send_set_info()
5696 rc = cifs_send_recv(xid, ses, server, in send_set_info()
5767 struct TCP_Server_Info *server; in SMB2_oplock_break() local
5778 server = cifs_pick_channel(ses); in SMB2_oplock_break()
5781 rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, server, in SMB2_oplock_break()
5804 smb2_set_replay(server, &rqst); in SMB2_oplock_break()
5806 rc = cifs_send_recv(xid, ses, server, in SMB2_oplock_break()
5854 struct TCP_Server_Info *server, in build_qfs_info_req() argument
5864 if ((tcon->ses == NULL) || server == NULL) in build_qfs_info_req()
5867 rc = smb2_plain_req_init(SMB2_QUERY_INFO, tcon, server, in build_qfs_info_req()
5903 struct TCP_Server_Info *server; in SMB311_posix_qfs_info() local
5911 server = cifs_pick_channel(ses); in SMB311_posix_qfs_info()
5913 rc = build_qfs_info_req(&iov, tcon, server, in SMB311_posix_qfs_info()
5928 smb2_set_replay(server, &rqst); in SMB311_posix_qfs_info()
5930 rc = cifs_send_recv(xid, ses, server, in SMB311_posix_qfs_info()
5968 struct TCP_Server_Info *server; in SMB2_QFS_attr() local
5976 server = cifs_pick_channel(ses); in SMB2_QFS_attr()
5995 rc = build_qfs_info_req(&iov, tcon, server, in SMB2_QFS_attr()
6009 smb2_set_replay(server, &rqst); in SMB2_QFS_attr()
6011 rc = cifs_send_recv(xid, ses, server, in SMB2_QFS_attr()
6070 struct TCP_Server_Info *server; in smb2_lockv() local
6076 server = cifs_pick_channel(tcon->ses); in smb2_lockv()
6080 rc = smb2_plain_req_init(SMB2_LOCK, tcon, server, in smb2_lockv()
6108 smb2_set_replay(server, &rqst); in smb2_lockv()
6110 rc = cifs_send_recv(xid, tcon->ses, server, in smb2_lockv()
6160 struct TCP_Server_Info *server = cifs_pick_channel(tcon->ses); in SMB2_lease_break() local
6163 rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, server, in SMB2_lease_break()
6187 rc = cifs_send_recv(xid, ses, server, in SMB2_lease_break()