Lines Matching full:server
85 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in smb3_encryption_required()
88 (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in smb3_encryption_required()
96 struct TCP_Server_Info *server) in smb2_hdr_assemble() argument
104 if (server) { in smb2_hdr_assemble()
106 if (server->dialect >= SMB30_PROT_ID) { in smb2_hdr_assemble()
112 if (SERVER_IS_CHAN(server)) in smb2_hdr_assemble()
114 cpu_to_le16(server->primary_server->channel_sequence_num); in smb2_hdr_assemble()
117 cpu_to_le16(server->channel_sequence_num); in smb2_hdr_assemble()
119 spin_lock(&server->req_lock); in smb2_hdr_assemble()
121 if (server->credits >= server->max_credits) in smb2_hdr_assemble()
125 min_t(int, server->max_credits - in smb2_hdr_assemble()
126 server->credits, 10)); in smb2_hdr_assemble()
127 spin_unlock(&server->req_lock); in smb2_hdr_assemble()
138 if (server && (server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU)) in smb2_hdr_assemble()
149 * to pass the path on the Open SMB prefixed by \\server\share. in smb2_hdr_assemble()
152 * illegal to send an empty path name (without \\server\share prefix) in smb2_hdr_assemble()
160 if (server && server->sign && !smb3_encryption_required(tcon)) in smb2_hdr_assemble()
169 struct TCP_Server_Info *server, in cifs_chan_skip_or_disable() argument
175 if (SERVER_IS_CHAN(server)) { in cifs_chan_skip_or_disable()
177 "server %s does not support multichannel anymore. Skip secondary channel\n", in cifs_chan_skip_or_disable()
178 ses->server->hostname); in cifs_chan_skip_or_disable()
181 chan_index = cifs_ses_get_chan_index(ses, server); in cifs_chan_skip_or_disable()
187 ses->chans[chan_index].server = NULL; in cifs_chan_skip_or_disable()
188 server->terminate = true; in cifs_chan_skip_or_disable()
192 * the above reference of server by channel in cifs_chan_skip_or_disable()
197 cifs_put_tcp_session(server, from_reconnect); in cifs_chan_skip_or_disable()
199 cifs_signal_cifsd_for_reconnect(server, false); in cifs_chan_skip_or_disable()
201 /* mark primary server as needing reconnect */ in cifs_chan_skip_or_disable()
202 pserver = server->primary_server; in cifs_chan_skip_or_disable()
209 "server does not support multichannel anymore. Disable all other channels\n"); in cifs_chan_skip_or_disable()
218 struct TCP_Server_Info *server, bool from_reconnect) in smb2_reconnect() argument
258 if (!ses->server || !server) in smb2_reconnect()
261 spin_lock(&server->srv_lock); in smb2_reconnect()
262 if (server->tcpStatus == CifsNeedReconnect) { in smb2_reconnect()
275 spin_unlock(&server->srv_lock); in smb2_reconnect()
280 /* if server is marked for termination, cifsd will cleanup */ in smb2_reconnect()
281 if (server->terminate) { in smb2_reconnect()
282 spin_unlock(&server->srv_lock); in smb2_reconnect()
285 spin_unlock(&server->srv_lock); in smb2_reconnect()
288 rc = cifs_wait_for_server_reconnect(server, tcon->retry); in smb2_reconnect()
293 if (!cifs_chan_needs_reconnect(ses, server) && !tcon->need_reconnect) { in smb2_reconnect()
307 spin_lock(&server->srv_lock); in smb2_reconnect()
308 switch (server->tcpStatus) { in smb2_reconnect()
310 spin_unlock(&server->srv_lock); in smb2_reconnect()
314 spin_unlock(&server->srv_lock); in smb2_reconnect()
322 spin_unlock(&server->srv_lock); in smb2_reconnect()
330 if (!cifs_chan_needs_reconnect(ses, server) && in smb2_reconnect()
344 rc = cifs_negotiate_protocol(0, ses, server); in smb2_reconnect()
352 * if server stopped supporting multichannel in smb2_reconnect()
356 !(server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) { in smb2_reconnect()
357 rc = cifs_chan_skip_or_disable(ses, server, in smb2_reconnect()
365 rc = cifs_setup_session(0, ses, server, ses->local_nls); in smb2_reconnect()
369 * could be enabled on the server e.g.) if an alternate in smb2_reconnect()
412 (server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL) && in smb2_reconnect()
413 server->ops->query_server_interfaces) { in smb2_reconnect()
417 * query server network interfaces, in case they change in smb2_reconnect()
420 rc = server->ops->query_server_interfaces(xid, tcon, false); in smb2_reconnect()
425 * some servers like Azure SMB server do not advertise in smb2_reconnect()
426 * that multichannel has been disabled with server in smb2_reconnect()
428 * treat this as server not supporting multichannel in smb2_reconnect()
431 rc = cifs_chan_skip_or_disable(ses, server, in smb2_reconnect()
435 cifs_dbg(FYI, "%s: failed to query server interfaces: %d\n", in smb2_reconnect()
440 !SERVER_IS_CHAN(server)) { in smb2_reconnect()
459 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in smb2_reconnect()
468 * BB Is flush done by server on drop of tcp session? Should we special in smb2_reconnect()
488 struct TCP_Server_Info *server, in fill_small_buf() argument
502 smb2_hdr_assemble(&spdu->hdr, smb2_command, tcon, server); in fill_small_buf()
514 struct TCP_Server_Info *server, in __smb2_plain_req_init() argument
532 fill_small_buf(smb2_command, tcon, server, in __smb2_plain_req_init()
546 struct TCP_Server_Info *server, in smb2_plain_req_init() argument
551 rc = smb2_reconnect(smb2_command, tcon, server, false); in smb2_plain_req_init()
555 return __smb2_plain_req_init(smb2_command, tcon, server, request_buf, in smb2_plain_req_init()
560 struct TCP_Server_Info *server, in smb2_ioctl_req_init() argument
565 return __smb2_plain_req_init(SMB2_IOCTL, tcon, server, in smb2_ioctl_req_init()
568 return smb2_plain_req_init(SMB2_IOCTL, tcon, server, in smb2_ioctl_req_init()
649 /* copy up to max of first 100 bytes of server name to NetName field */ in build_netname_ctxt()
681 struct TCP_Server_Info *server, unsigned int *total_len) in assemble_neg_contexts() argument
717 pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; in assemble_neg_contexts()
735 if (server->compression.requested) { in assemble_neg_contexts()
767 pr_warn_once("server sent bad preauth context\n"); in decode_preauth_context()
770 pr_warn_once("server sent invalid SaltLength\n"); in decode_preauth_context()
779 static void decode_compress_ctx(struct TCP_Server_Info *server, in decode_compress_ctx() argument
785 server->compression.enabled = false; in decode_compress_ctx()
793 pr_warn_once("server sent bad compression cntxt\n"); in decode_compress_ctx()
810 server->compression.alg = alg; in decode_compress_ctx()
811 server->compression.enabled = true; in decode_compress_ctx()
814 static int decode_encrypt_ctx(struct TCP_Server_Info *server, in decode_encrypt_ctx() argument
826 pr_warn_once("server sent bad crypto ctxt len\n"); in decode_encrypt_ctx()
837 cifs_dbg(VFS, "Server does not support requested encryption type (AES256 GCM)\n"); in decode_encrypt_ctx()
842 * e.g. if server only supported AES256_CCM (very unlikely) in decode_encrypt_ctx()
843 * or server supported no encryption types or had all disabled. in decode_encrypt_ctx()
847 * seal not requested by client, since server is allowed to in decode_encrypt_ctx()
850 server->cipher_type = 0; in decode_encrypt_ctx()
851 server->capabilities &= ~SMB2_GLOBAL_CAP_ENCRYPTION; in decode_encrypt_ctx()
852 pr_warn_once("Server does not support requested encryption types\n"); in decode_encrypt_ctx()
857 /* server returned a cipher we didn't ask for */ in decode_encrypt_ctx()
861 server->cipher_type = ctxt->Ciphers[0]; in decode_encrypt_ctx()
862 server->capabilities |= SMB2_GLOBAL_CAP_ENCRYPTION; in decode_encrypt_ctx()
866 static void decode_signing_ctx(struct TCP_Server_Info *server, in decode_signing_ctx() argument
877 pr_warn_once("server sent bad signing negcontext\n"); in decode_signing_ctx()
889 server->signing_negotiated = true; in decode_signing_ctx()
890 server->signing_algorithm = le16_to_cpu(pctxt->SigningAlgorithms[0]); in decode_signing_ctx()
892 server->signing_algorithm); in decode_signing_ctx()
897 struct TCP_Server_Info *server, in smb311_decode_neg_context() argument
937 rc = decode_encrypt_ctx(server, in smb311_decode_neg_context()
940 decode_compress_ctx(server, in smb311_decode_neg_context()
943 server->posix_ext_supported = true; in smb311_decode_neg_context()
945 decode_signing_ctx(server, in smb311_decode_neg_context()
1032 struct TCP_Server_Info *server) in SMB2_negotiate() argument
1048 if (!server) { in SMB2_negotiate()
1049 WARN(1, "%s: server is NULL!\n", __func__); in SMB2_negotiate()
1053 rc = smb2_plain_req_init(SMB2_NEGOTIATE, NULL, server, in SMB2_negotiate()
1060 memset(server->preauth_sha_hash, 0, SMB2_PREAUTH_HASH_SIZE); in SMB2_negotiate()
1063 if (strcmp(server->vals->version_string, in SMB2_negotiate()
1070 } else if (strcmp(server->vals->version_string, in SMB2_negotiate()
1080 req->Dialects[0] = cpu_to_le16(server->vals->protocol_id); in SMB2_negotiate()
1093 req->Capabilities = cpu_to_le32(server->vals->req_capabilities); in SMB2_negotiate()
1098 if (server->vals->protocol_id == SMB20_PROT_ID) in SMB2_negotiate()
1101 memcpy(req->ClientGUID, server->client_guid, in SMB2_negotiate()
1103 if ((server->vals->protocol_id == SMB311_PROT_ID) || in SMB2_negotiate()
1104 (strcmp(server->vals->version_string, in SMB2_negotiate()
1106 (strcmp(server->vals->version_string, in SMB2_negotiate()
1108 assemble_neg_contexts(req, server, &total_len); in SMB2_negotiate()
1117 rc = cifs_send_recv(xid, ses, server, in SMB2_negotiate()
1126 …cifs_server_dbg(VFS, "Dialect not supported by server. Consider specifying vers=1.0 or vers=2.0 o… in SMB2_negotiate()
1132 if (strcmp(server->vals->version_string, in SMB2_negotiate()
1144 server->ops = &smb311_operations; in SMB2_negotiate()
1145 server->vals = &smb311_values; in SMB2_negotiate()
1147 } else if (strcmp(server->vals->version_string, in SMB2_negotiate()
1155 server->ops = &smb21_operations; in SMB2_negotiate()
1156 server->vals = &smb21_values; in SMB2_negotiate()
1158 server->ops = &smb311_operations; in SMB2_negotiate()
1159 server->vals = &smb311_values; in SMB2_negotiate()
1162 server->vals->protocol_id) { in SMB2_negotiate()
1182 cifs_server_dbg(VFS, "Invalid dialect returned by server 0x%x\n", in SMB2_negotiate()
1188 server->dialect = le16_to_cpu(rsp->DialectRevision); in SMB2_negotiate()
1193 * server. in SMB2_negotiate()
1195 memcpy(server->preauth_sha_hash, ses->preauth_sha_hash, in SMB2_negotiate()
1199 server->negflavor = CIFS_NEGFLAVOR_EXTENDED; in SMB2_negotiate()
1201 server->maxBuf = min_t(unsigned int, le32_to_cpu(rsp->MaxTransactSize), in SMB2_negotiate()
1203 server->max_read = le32_to_cpu(rsp->MaxReadSize); in SMB2_negotiate()
1204 server->max_write = le32_to_cpu(rsp->MaxWriteSize); in SMB2_negotiate()
1205 server->sec_mode = le16_to_cpu(rsp->SecurityMode); in SMB2_negotiate()
1206 if ((server->sec_mode & SMB2_SEC_MODE_FLAGS_ALL) != server->sec_mode) in SMB2_negotiate()
1207 cifs_dbg(FYI, "Server returned unexpected security mode 0x%x\n", in SMB2_negotiate()
1208 server->sec_mode); in SMB2_negotiate()
1209 server->capabilities = le32_to_cpu(rsp->Capabilities); in SMB2_negotiate()
1211 server->capabilities |= SMB2_NT_FIND | SMB2_LARGE_FILES; in SMB2_negotiate()
1217 if ((server->dialect == SMB30_PROT_ID || in SMB2_negotiate()
1218 server->dialect == SMB302_PROT_ID) && in SMB2_negotiate()
1219 (server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_negotiate()
1220 server->cipher_type = SMB2_ENCRYPTION_AES128_CCM; in SMB2_negotiate()
1229 * We just found a server which sets blob length to zero expecting raw. in SMB2_negotiate()
1233 server->sec_ntlmssp = true; in SMB2_negotiate()
1236 rc = cifs_enable_signing(server, ses->sign); in SMB2_negotiate()
1240 rc = decode_negTokenInit(security_blob, blob_length, server); in SMB2_negotiate()
1249 rc = smb311_decode_neg_context(rsp, server, in SMB2_negotiate()
1255 if (server->cipher_type && !rc) in SMB2_negotiate()
1256 rc = smb3_crypto_aead_allocate(server); in SMB2_negotiate()
1269 struct TCP_Server_Info *server = tcon->ses->server; in smb3_validate_negotiate() local
1274 if (server->dialect == SMB311_PROT_ID) in smb3_validate_negotiate()
1293 cifs_tcon_dbg(VFS, "Unexpected null user (anonymous) auth flag sent by server\n"); in smb3_validate_negotiate()
1300 cpu_to_le32(server->vals->req_capabilities); in smb3_validate_negotiate()
1304 memcpy(pneg_inbuf->Guid, server->client_guid, in smb3_validate_negotiate()
1317 if (strcmp(server->vals->version_string, in smb3_validate_negotiate()
1326 } else if (strcmp(server->vals->version_string, in smb3_validate_negotiate()
1338 cpu_to_le16(server->vals->protocol_id); in smb3_validate_negotiate()
1351 * Old Windows versions or Netapp SMB server can return in smb3_validate_negotiate()
1354 cifs_tcon_dbg(VFS, "Server does not support validate negotiate\n"); in smb3_validate_negotiate()
1375 if (pneg_rsp->Dialect != cpu_to_le16(server->dialect)) in smb3_validate_negotiate()
1378 if (pneg_rsp->SecurityMode != cpu_to_le16(server->sec_mode)) in smb3_validate_negotiate()
1381 /* do not validate server guid because not saved at negprot time yet */ in smb3_validate_negotiate()
1384 SMB2_LARGE_FILES) != server->capabilities) in smb3_validate_negotiate()
1402 smb2_select_sectype(struct TCP_Server_Info *server, enum securityEnum requested) in smb2_select_sectype() argument
1411 if (server->sec_ntlmssp && in smb2_select_sectype()
1414 if ((server->sec_kerberos || server->sec_mskerberos || server->sec_iakerb) && in smb2_select_sectype()
1426 struct TCP_Server_Info *server; member
1448 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_alloc_buffer() local
1453 rc = smb2_plain_req_init(SMB2_SESSION_SETUP, NULL, server, in SMB2_sess_alloc_buffer()
1483 if (server->credits >= server->max_credits) in SMB2_sess_alloc_buffer()
1487 min_t(int, server->max_credits - in SMB2_sess_alloc_buffer()
1488 server->credits, 130)); in SMB2_sess_alloc_buffer()
1491 if (server->sign) in SMB2_sess_alloc_buffer()
1550 sess_data->server, in SMB2_sess_sendreceive()
1559 trace_smb3_key_expired(sess_data->server->hostname, in SMB2_sess_sendreceive()
1561 sess_data->server->conn_id, in SMB2_sess_sendreceive()
1562 &sess_data->server->dstaddr, rc); in SMB2_sess_sendreceive()
1576 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_establish_session() local
1578 cifs_server_lock(server); in SMB2_sess_establish_session()
1579 if (server->ops->generate_signingkey) { in SMB2_sess_establish_session()
1580 rc = server->ops->generate_signingkey(ses, server); in SMB2_sess_establish_session()
1584 cifs_server_unlock(server); in SMB2_sess_establish_session()
1588 if (!server->session_estab) { in SMB2_sess_establish_session()
1589 server->sequence_number = 0x2; in SMB2_sess_establish_session()
1590 server->session_estab = true; in SMB2_sess_establish_session()
1592 cifs_server_unlock(server); in SMB2_sess_establish_session()
1604 struct TCP_Server_Info *server = sess_data->server; in SMB2_auth_kerberos() local
1614 spnego_key = cifs_get_spnego_key(ses, server); in SMB2_auth_kerberos()
1699 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_auth_rawntlmssp_negotiate() local
1722 &blob_length, ses, server, in SMB2_sess_auth_rawntlmssp_negotiate()
1791 struct TCP_Server_Info *server = sess_data->server; in SMB2_sess_auth_rawntlmssp_authenticate() local
1807 ses, server, in SMB2_sess_auth_rawntlmssp_authenticate()
1841 if (ses->server->dialect < SMB30_PROT_ID) { in SMB2_sess_auth_rawntlmssp_authenticate()
1869 struct TCP_Server_Info *server = sess_data->server; in SMB2_select_sec() local
1871 type = smb2_select_sectype(server, ses->sectype); in SMB2_select_sec()
1895 struct TCP_Server_Info *server, in SMB2_sess_setup() argument
1903 if (!server) { in SMB2_sess_setup()
1904 WARN(1, "%s: server is NULL!\n", __func__); in SMB2_sess_setup()
1914 sess_data->server = server; in SMB2_sess_setup()
1924 * Initialize the session hash with the server one. in SMB2_sess_setup()
1926 memcpy(ses->preauth_sha_hash, server->preauth_sha_hash, in SMB2_sess_setup()
1946 struct TCP_Server_Info *server; in SMB2_logoff() local
1955 if (ses && (ses->server)) in SMB2_logoff()
1956 server = ses->server; in SMB2_logoff()
1968 rc = smb2_plain_req_init(SMB2_LOGOFF, NULL, ses->server, in SMB2_logoff()
1978 else if (server->sign) in SMB2_logoff()
1990 rc = cifs_send_recv(xid, ses, ses->server, in SMB2_logoff()
2007 #define MAX_SHARENAME_LENGTH (255 /* server */ + 80 /* share */ + 1 /* NULL */)
2032 struct TCP_Server_Info *server = cifs_pick_channel(ses); in SMB2_tcon() local
2036 if (!server || !tree) in SMB2_tcon()
2053 rc = smb2_plain_req_init(SMB2_TREE_CONNECT, tcon, server, in SMB2_tcon()
2078 if ((server->dialect == SMB311_PROT_ID) && in SMB2_tcon()
2090 if (server->credits >= server->max_credits) in SMB2_tcon()
2094 min_t(int, server->max_credits - in SMB2_tcon()
2095 server->credits, 64)); in SMB2_tcon()
2097 rc = cifs_send_recv(xid, ses, server, in SMB2_tcon()
2137 !(server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION)) in SMB2_tcon()
2141 if (server->ops->validate_negotiate) in SMB2_tcon()
2142 rc = server->ops->validate_negotiate(xid, tcon); in SMB2_tcon()
2145 server->nosharesock = true; in SMB2_tcon()
2165 struct TCP_Server_Info *server = cifs_pick_channel(ses); in SMB2_tdis() local
2174 if (!ses || !(ses->server)) in SMB2_tdis()
2188 rc = smb2_plain_req_init(SMB2_TREE_DISCONNECT, tcon, server, in SMB2_tdis()
2206 rc = cifs_send_recv(xid, ses, server, in SMB2_tdis()
2312 int smb2_parse_contexts(struct TCP_Server_Info *server, in smb2_parse_contexts() argument
2358 *oplock = server->ops->parse_lease_buf(cc, epoch, in smb2_parse_contexts()
2392 add_lease_context(struct TCP_Server_Info *server, in add_lease_context() argument
2399 iov[num].iov_base = server->ops->create_lease_buf(lease_key, *oplock); in add_lease_context()
2402 iov[num].iov_len = server->vals->create_lease_size; in add_lease_context()
2426 * NB: Handle timeout defaults to 0, which allows server to choose in create_durable_v2_buf()
2824 struct TCP_Server_Info *server; in smb311_posix_mkdir() local
2831 server = cifs_pick_channel(ses); in smb311_posix_mkdir()
2840 if (!ses || !server) { in smb311_posix_mkdir()
2846 rc = smb2_plain_req_init(SMB2_CREATE, tcon, server, in smb311_posix_mkdir()
2938 smb2_set_replay(server, &rqst); in smb311_posix_mkdir()
2941 rc = cifs_send_recv(xid, ses, server, in smb311_posix_mkdir()
2986 SMB2_open_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_open_init() argument
3000 rc = smb2_plain_req_init(SMB2_CREATE, tcon, server, in SMB2_open_init()
3061 if ((!server->oplocks) || (tcon->no_lease)) in SMB2_open_init()
3064 if (!(server->capabilities & SMB2_GLOBAL_CAP_LEASING) || in SMB2_open_init()
3067 else if (!(server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING) && in SMB2_open_init()
3071 rc = add_lease_context(server, req, iov, &n_iov, in SMB2_open_init()
3178 struct TCP_Server_Info *server; in SMB2_open() local
3189 server = cifs_pick_channel(ses); in SMB2_open()
3193 if (!ses || !server) in SMB2_open()
3204 rc = SMB2_open_init(tcon, server, in SMB2_open()
3213 smb2_set_replay(server, &rqst); in SMB2_open()
3215 rc = cifs_send_recv(xid, ses, server, in SMB2_open()
3231 pr_warn_once("server share %s deleted\n", in SMB2_open()
3263 rc = smb2_parse_contexts(server, &rsp_iov, &oparms->fid->epoch, in SMB2_open()
3277 SMB2_ioctl_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_ioctl_init() argument
3289 rc = smb2_ioctl_req_init(opcode, tcon, server, in SMB2_ioctl_init()
3340 * ioctls it may be useful to allow server to send more. No point in SMB2_ioctl_init()
3341 * limiting what the server can send as long as fits in one credit in SMB2_ioctl_init()
3391 struct TCP_Server_Info *server; in SMB2_ioctl() local
3409 server = cifs_pick_channel(ses); in SMB2_ioctl()
3411 if (!server) in SMB2_ioctl()
3431 rc = SMB2_ioctl_init(tcon, server, in SMB2_ioctl()
3438 smb2_set_replay(server, &rqst); in SMB2_ioctl()
3440 rc = cifs_send_recv(xid, ses, server, in SMB2_ioctl()
3483 goto ioctl_exit; /* server returned no data */ in SMB2_ioctl()
3544 SMB2_close_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_close_init() argument
3553 rc = smb2_plain_req_init(SMB2_CLOSE, tcon, server, in SMB2_close_init()
3585 struct TCP_Server_Info *server; in __SMB2_close() local
3598 server = cifs_pick_channel(ses); in __SMB2_close()
3602 if (!ses || !server) in __SMB2_close()
3613 /* check if need to ask server to return timestamps in close response */ in __SMB2_close()
3618 rc = SMB2_close_init(tcon, server, in __SMB2_close()
3625 smb2_set_replay(server, &rqst); in __SMB2_close()
3627 rc = cifs_send_recv(xid, ses, server, in __SMB2_close()
3699 cifs_dbg(VFS, "Invalid server response, bad offset to data\n"); in smb2_validate_iov()
3731 SMB2_query_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_query_info_init() argument
3747 rc = smb2_plain_req_init(SMB2_QUERY_INFO, tcon, server, in SMB2_query_info_init()
3792 struct TCP_Server_Info *server; in query_info() local
3806 server = cifs_pick_channel(ses); in query_info()
3808 if (!server) in query_info()
3819 rc = SMB2_query_info_init(tcon, server, in query_info()
3830 smb2_set_replay(server, &rqst); in query_info()
3832 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()
4087 static void cifs_renegotiate_iosize(struct TCP_Server_Info *server, in cifs_renegotiate_iosize() argument
4092 if (server == NULL || tcon == NULL) in cifs_renegotiate_iosize()
4097 cifs_negotiate_iosize(server, cifs_sb->ctx, tcon); in cifs_renegotiate_iosize()
4103 struct TCP_Server_Info *server = container_of(work, in smb2_reconnect_server() local
4116 if (!server->srv_count) { in smb2_reconnect_server()
4120 server->srv_count++; in smb2_reconnect_server()
4123 /* If server is a channel, select the primary channel */ in smb2_reconnect_server()
4124 pserver = SERVER_IS_CHAN(server) ? server->primary_server : server; in smb2_reconnect_server()
4129 /* if the server is marked for termination, drop the ref count here */ in smb2_reconnect_server()
4130 if (server->terminate) { in smb2_reconnect_server()
4131 cifs_put_tcp_session(server, true); in smb2_reconnect_server()
4175 if (!tcon_selected && cifs_chan_needs_reconnect(ses, server)) { in smb2_reconnect_server()
4185 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server, true); in smb2_reconnect_server()
4187 cifs_renegotiate_iosize(server, tcon); in smb2_reconnect_server()
4219 rc = smb2_reconnect(SMB2_INTERNAL_CMD, tcon, server, true); in smb2_reconnect_server()
4230 queue_delayed_work(cifsiod_wq, &server->reconnect, 2 * HZ); in smb2_reconnect_server()
4234 cifs_put_tcp_session(server, true); in smb2_reconnect_server()
4238 SMB2_echo(struct TCP_Server_Info *server) in SMB2_echo() argument
4247 cifs_dbg(FYI, "In echo request for conn_id %lld\n", server->conn_id); in SMB2_echo()
4249 spin_lock(&server->srv_lock); in SMB2_echo()
4250 if (server->ops->need_neg && in SMB2_echo()
4251 server->ops->need_neg(server)) { in SMB2_echo()
4252 spin_unlock(&server->srv_lock); in SMB2_echo()
4254 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in SMB2_echo()
4257 spin_unlock(&server->srv_lock); in SMB2_echo()
4259 rc = smb2_plain_req_init(SMB2_ECHO, NULL, server, in SMB2_echo()
4269 rc = cifs_call_async(server, &rqst, NULL, smb2_echo_callback, NULL, in SMB2_echo()
4270 server, CIFS_ECHO_OP, NULL); in SMB2_echo()
4287 struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_flush_init() argument
4295 rc = smb2_plain_req_init(SMB2_FLUSH, tcon, server, in SMB2_flush_init()
4317 struct TCP_Server_Info *server; in SMB2_flush() local
4326 server = cifs_pick_channel(ses); in SMB2_flush()
4329 if (!ses || !(ses->server)) in SMB2_flush()
4340 rc = SMB2_flush_init(xid, &rqst, tcon, server, in SMB2_flush()
4348 smb2_set_replay(server, &rqst); in SMB2_flush()
4350 rc = cifs_send_recv(xid, ses, server, in SMB2_flush()
4375 struct TCP_Server_Info *server = io_parms->server; in smb3_use_rdma_offload() local
4379 if (!server || !tcon) in smb3_use_rdma_offload()
4383 if (!server->rdma || !server->smbd_conn) in smb3_use_rdma_offload()
4387 if (server->sign) in smb3_use_rdma_offload()
4395 if (io_parms->length < server->smbd_conn->rdma_readwrite_threshold) in smb3_use_rdma_offload()
4414 struct TCP_Server_Info *server = io_parms->server; in smb2_new_read_req() local
4416 rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server, in smb2_new_read_req()
4421 if (server == NULL) in smb2_new_read_req()
4449 bool need_invalidate = server->dialect == SMB30_PROT_ID; in smb2_new_read_req()
4451 rdata->mr = smbd_register_mr(server->smbd_conn, &rdata->subreq.io_iter, in smb2_new_read_req()
4505 struct TCP_Server_Info *server = rdata->server; in smb2_readv_callback() local
4522 WARN_ONCE(rdata->server != mid->server, in smb2_readv_callback()
4523 "rdata server %p != mid server %p", in smb2_readv_callback()
4524 rdata->server, mid->server); in smb2_readv_callback()
4533 credits.instance = server->reconnect_instance; in smb2_readv_callback()
4535 if (server->sign && !mid->decrypted) { in smb2_readv_callback()
4539 rc = smb2_verify_signature(&rqst, server); in smb2_readv_callback()
4552 if (server->sign && rdata->got_bytes) in smb2_readv_callback()
4561 credits.instance = server->reconnect_instance; in smb2_readv_callback()
4610 server->credits, server->in_flight, in smb2_readv_callback()
4619 server->credits, server->in_flight, in smb2_readv_callback()
4621 add_credits(server, &credits, 0); in smb2_readv_callback()
4635 struct TCP_Server_Info *server; in smb2_async_readv() local
4643 if (!rdata->server) in smb2_async_readv()
4644 rdata->server = cifs_pick_channel(tcon->ses); in smb2_async_readv()
4647 io_parms.server = server = rdata->server; in smb2_async_readv()
4673 if (server->credits >= server->max_credits) in smb2_async_readv()
4677 min_t(int, server->max_credits - in smb2_async_readv()
4678 server->credits, credit_request)); in smb2_async_readv()
4680 rc = adjust_credits(server, rdata, cifs_trace_rw_credits_call_readv_adjust); in smb2_async_readv()
4687 rc = cifs_call_async(server, &rqst, in smb2_async_readv()
4721 if (!io_parms->server) in SMB2_read()
4722 io_parms->server = cifs_pick_channel(io_parms->tcon->ses); in SMB2_read()
4739 rc = cifs_send_recv(xid, ses, io_parms->server, in SMB2_read()
4798 struct TCP_Server_Info *server = wdata->server; in smb2_writev_callback() local
4811 WARN_ONCE(wdata->server != mid->server, in smb2_writev_callback()
4812 "wdata server %p != mid server %p", in smb2_writev_callback()
4813 wdata->server, mid->server); in smb2_writev_callback()
4818 credits.instance = server->reconnect_instance; in smb2_writev_callback()
4819 result = smb2_check_receive(mid, server, 0); in smb2_writev_callback()
4826 * by the server is greater than bytes requested by the in smb2_writev_callback()
4848 credits.instance = server->reconnect_instance; in smb2_writev_callback()
4887 server->credits, server->in_flight, in smb2_writev_callback()
4894 server->credits, server->in_flight, in smb2_writev_callback()
4896 add_credits(server, &credits, 0); in smb2_writev_callback()
4907 struct TCP_Server_Info *server = wdata->server; in smb2_async_writev() local
4921 .server = server, in smb2_async_writev()
4930 rc = smb2_plain_req_init(SMB2_WRITE, tcon, server, in smb2_async_writev()
4970 * If we want to do a server RDMA read, fill in and append in smb2_async_writev()
4975 bool need_invalidate = server->dialect == SMB30_PROT_ID; in smb2_async_writev()
4977 wdata->mr = smbd_register_mr(server->smbd_conn, &wdata->subreq.io_iter, in smb2_async_writev()
5010 smb2_set_replay(server, &rqst); in smb2_async_writev()
5019 if (server->credits >= server->max_credits) in smb2_async_writev()
5023 min_t(int, server->max_credits - in smb2_async_writev()
5024 server->credits, credit_request)); in smb2_async_writev()
5026 rc = adjust_credits(server, wdata, cifs_trace_rw_credits_call_writev_adjust); in smb2_async_writev()
5037 rc = cifs_call_async(server, &rqst, NULL, smb2_writev_callback, NULL, in smb2_async_writev()
5060 server->credits, server->in_flight, in smb2_async_writev()
5063 add_credits_and_wake_if(wdata->server, &wdata->credits, 0); in smb2_async_writev()
5086 struct TCP_Server_Info *server; in SMB2_write() local
5093 if (!io_parms->server) in SMB2_write()
5094 io_parms->server = cifs_pick_channel(io_parms->tcon->ses); in SMB2_write()
5095 server = io_parms->server; in SMB2_write()
5096 if (server == NULL) in SMB2_write()
5102 rc = smb2_plain_req_init(SMB2_WRITE, io_parms->tcon, server, in SMB2_write()
5136 smb2_set_replay(server, &rqst); in SMB2_write()
5138 rc = cifs_send_recv(xid, io_parms->tcon->ses, server, in SMB2_write()
5320 struct TCP_Server_Info *server, in SMB2_query_directory_init() argument
5335 rc = smb2_plain_req_init(SMB2_QUERY_DIRECTORY, tcon, server, in SMB2_query_directory_init()
5374 output_size = min_t(unsigned int, output_size, server->maxBuf); in SMB2_query_directory_init()
5485 struct TCP_Server_Info *server; in SMB2_query_directory() local
5492 server = cifs_pick_channel(ses); in SMB2_query_directory()
5494 if (!ses || !(ses->server)) in SMB2_query_directory()
5505 rc = SMB2_query_directory_init(xid, tcon, server, in SMB2_query_directory()
5513 smb2_set_replay(server, &rqst); in SMB2_query_directory()
5515 rc = cifs_send_recv(xid, ses, server, in SMB2_query_directory()
5558 SMB2_set_info_init(struct cifs_tcon *tcon, struct TCP_Server_Info *server, in SMB2_set_info_init() argument
5569 rc = smb2_plain_req_init(SMB2_SET_INFO, tcon, server, in SMB2_set_info_init()
5620 struct TCP_Server_Info *server; in send_set_info() local
5627 server = cifs_pick_channel(ses); in send_set_info()
5629 if (!ses || !server) in send_set_info()
5646 rc = SMB2_set_info_init(tcon, server, in send_set_info()
5656 smb2_set_replay(server, &rqst); in send_set_info()
5658 rc = cifs_send_recv(xid, ses, server, in send_set_info()
5729 struct TCP_Server_Info *server; in SMB2_oplock_break() local
5740 server = cifs_pick_channel(ses); in SMB2_oplock_break()
5743 rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, server, in SMB2_oplock_break()
5766 smb2_set_replay(server, &rqst); in SMB2_oplock_break()
5768 rc = cifs_send_recv(xid, ses, server, in SMB2_oplock_break()
5816 struct TCP_Server_Info *server, in build_qfs_info_req() argument
5826 if ((tcon->ses == NULL) || server == NULL) in build_qfs_info_req()
5829 rc = smb2_plain_req_init(SMB2_QUERY_INFO, tcon, server, in build_qfs_info_req()
5865 struct TCP_Server_Info *server; in SMB311_posix_qfs_info() local
5873 server = cifs_pick_channel(ses); in SMB311_posix_qfs_info()
5875 rc = build_qfs_info_req(&iov, tcon, server, in SMB311_posix_qfs_info()
5890 smb2_set_replay(server, &rqst); in SMB311_posix_qfs_info()
5892 rc = cifs_send_recv(xid, ses, server, in SMB311_posix_qfs_info()
5930 struct TCP_Server_Info *server; in SMB2_QFS_info() local
5938 server = cifs_pick_channel(ses); in SMB2_QFS_info()
5940 rc = build_qfs_info_req(&iov, tcon, server, in SMB2_QFS_info()
5955 smb2_set_replay(server, &rqst); in SMB2_QFS_info()
5957 rc = cifs_send_recv(xid, ses, server, in SMB2_QFS_info()
5995 struct TCP_Server_Info *server; in SMB2_QFS_attr() local
6003 server = cifs_pick_channel(ses); in SMB2_QFS_attr()
6022 rc = build_qfs_info_req(&iov, tcon, server, in SMB2_QFS_attr()
6036 smb2_set_replay(server, &rqst); in SMB2_QFS_attr()
6038 rc = cifs_send_recv(xid, ses, server, in SMB2_QFS_attr()
6097 struct TCP_Server_Info *server; in smb2_lockv() local
6103 server = cifs_pick_channel(tcon->ses); in smb2_lockv()
6107 rc = smb2_plain_req_init(SMB2_LOCK, tcon, server, in smb2_lockv()
6135 smb2_set_replay(server, &rqst); in smb2_lockv()
6137 rc = cifs_send_recv(xid, tcon->ses, server, in smb2_lockv()
6187 struct TCP_Server_Info *server = cifs_pick_channel(tcon->ses); in SMB2_lease_break() local
6190 rc = smb2_plain_req_init(SMB2_OPLOCK_BREAK, tcon, server, in SMB2_lease_break()
6214 rc = cifs_send_recv(xid, ses, server, in SMB2_lease_break()