Lines Matching refs:server

68 	struct TCP_Server_Info *server;  member
78 static int ip_connect(struct TCP_Server_Info *server);
79 static int generic_ip_connect(struct TCP_Server_Info *server);
89 static int reconn_set_ipaddr_from_hostname(struct TCP_Server_Info *server) in reconn_set_ipaddr_from_hostname() argument
97 if (!server->hostname) in reconn_set_ipaddr_from_hostname()
101 if (server->hostname[0] == '\0') in reconn_set_ipaddr_from_hostname()
104 len = strlen(server->hostname) + 3; in reconn_set_ipaddr_from_hostname()
111 scnprintf(unc, len, "\\\\%s", server->hostname); in reconn_set_ipaddr_from_hostname()
118 __func__, server->hostname, rc); in reconn_set_ipaddr_from_hostname()
122 spin_lock(&server->srv_lock); in reconn_set_ipaddr_from_hostname()
123 rc = cifs_convert_address((struct sockaddr *)&server->dstaddr, ipaddr, in reconn_set_ipaddr_from_hostname()
125 spin_unlock(&server->srv_lock); in reconn_set_ipaddr_from_hostname()
143 mod_delayed_work(cifsiod_wq, &server->resolve, (ttl * HZ)); in reconn_set_ipaddr_from_hostname()
171 struct TCP_Server_Info *server = container_of(work, in cifs_resolve_server() local
174 cifs_server_lock(server); in cifs_resolve_server()
179 rc = reconn_set_ipaddr_from_hostname(server); in cifs_resolve_server()
185 cifs_server_unlock(server); in cifs_resolve_server()
198 cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server, in cifs_signal_cifsd_for_reconnect() argument
206 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server; in cifs_signal_cifsd_for_reconnect()
220 spin_lock(&ses->chans[i].server->srv_lock); in cifs_signal_cifsd_for_reconnect()
221 ses->chans[i].server->tcpStatus = CifsNeedReconnect; in cifs_signal_cifsd_for_reconnect()
222 spin_unlock(&ses->chans[i].server->srv_lock); in cifs_signal_cifsd_for_reconnect()
240 cifs_mark_tcp_ses_conns_for_reconnect(struct TCP_Server_Info *server, in cifs_mark_tcp_ses_conns_for_reconnect() argument
254 pserver = CIFS_SERVER_IS_CHAN(server) ? server->primary_server : server; in cifs_mark_tcp_ses_conns_for_reconnect()
260 if (!cifs_chan_is_iface_active(ses, server)) in cifs_mark_tcp_ses_conns_for_reconnect()
261 cifs_chan_update_iface(ses, server); in cifs_mark_tcp_ses_conns_for_reconnect()
264 if (!mark_smb_session && cifs_chan_needs_reconnect(ses, server)) in cifs_mark_tcp_ses_conns_for_reconnect()
270 cifs_chan_set_need_reconnect(ses, server); in cifs_mark_tcp_ses_conns_for_reconnect()
292 cifs_abort_connection(struct TCP_Server_Info *server) in cifs_abort_connection() argument
297 server->maxBuf = 0; in cifs_abort_connection()
298 server->max_read = 0; in cifs_abort_connection()
302 cifs_server_lock(server); in cifs_abort_connection()
303 if (server->ssocket) { in cifs_abort_connection()
304 cifs_dbg(FYI, "State: 0x%x Flags: 0x%lx\n", server->ssocket->state, in cifs_abort_connection()
305 server->ssocket->flags); in cifs_abort_connection()
306 kernel_sock_shutdown(server->ssocket, SHUT_WR); in cifs_abort_connection()
307 cifs_dbg(FYI, "Post shutdown state: 0x%x Flags: 0x%lx\n", server->ssocket->state, in cifs_abort_connection()
308 server->ssocket->flags); in cifs_abort_connection()
309 sock_release(server->ssocket); in cifs_abort_connection()
310 server->ssocket = NULL; in cifs_abort_connection()
312 server->sequence_number = 0; in cifs_abort_connection()
313 server->session_estab = false; in cifs_abort_connection()
314 kfree_sensitive(server->session_key.response); in cifs_abort_connection()
315 server->session_key.response = NULL; in cifs_abort_connection()
316 server->session_key.len = 0; in cifs_abort_connection()
317 server->lstrp = jiffies; in cifs_abort_connection()
322 spin_lock(&server->mid_lock); in cifs_abort_connection()
323 list_for_each_entry_safe(mid, nmid, &server->pending_mid_q, qhead) { in cifs_abort_connection()
330 spin_unlock(&server->mid_lock); in cifs_abort_connection()
331 cifs_server_unlock(server); in cifs_abort_connection()
340 if (cifs_rdma_enabled(server)) { in cifs_abort_connection()
341 cifs_server_lock(server); in cifs_abort_connection()
342 smbd_destroy(server); in cifs_abort_connection()
343 cifs_server_unlock(server); in cifs_abort_connection()
347 static bool cifs_tcp_ses_needs_reconnect(struct TCP_Server_Info *server, int num_targets) in cifs_tcp_ses_needs_reconnect() argument
349 spin_lock(&server->srv_lock); in cifs_tcp_ses_needs_reconnect()
350 server->nr_targets = num_targets; in cifs_tcp_ses_needs_reconnect()
351 if (server->tcpStatus == CifsExiting) { in cifs_tcp_ses_needs_reconnect()
353 spin_unlock(&server->srv_lock); in cifs_tcp_ses_needs_reconnect()
354 wake_up(&server->response_q); in cifs_tcp_ses_needs_reconnect()
359 trace_smb3_reconnect(server->CurrentMid, server->conn_id, in cifs_tcp_ses_needs_reconnect()
360 server->hostname); in cifs_tcp_ses_needs_reconnect()
361 server->tcpStatus = CifsNeedReconnect; in cifs_tcp_ses_needs_reconnect()
363 spin_unlock(&server->srv_lock); in cifs_tcp_ses_needs_reconnect()
380 static int __cifs_reconnect(struct TCP_Server_Info *server, in __cifs_reconnect() argument
385 if (!cifs_tcp_ses_needs_reconnect(server, 1)) in __cifs_reconnect()
388 cifs_mark_tcp_ses_conns_for_reconnect(server, mark_smb_session); in __cifs_reconnect()
390 cifs_abort_connection(server); in __cifs_reconnect()
394 cifs_server_lock(server); in __cifs_reconnect()
396 if (!cifs_swn_set_server_dstaddr(server)) { in __cifs_reconnect()
398 rc = reconn_set_ipaddr_from_hostname(server); in __cifs_reconnect()
402 if (cifs_rdma_enabled(server)) in __cifs_reconnect()
403 rc = smbd_reconnect(server); in __cifs_reconnect()
405 rc = generic_ip_connect(server); in __cifs_reconnect()
407 cifs_server_unlock(server); in __cifs_reconnect()
412 set_credits(server, 1); in __cifs_reconnect()
413 spin_lock(&server->srv_lock); in __cifs_reconnect()
414 if (server->tcpStatus != CifsExiting) in __cifs_reconnect()
415 server->tcpStatus = CifsNeedNegotiate; in __cifs_reconnect()
416 spin_unlock(&server->srv_lock); in __cifs_reconnect()
417 cifs_swn_reset_server_dstaddr(server); in __cifs_reconnect()
418 cifs_server_unlock(server); in __cifs_reconnect()
419 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in __cifs_reconnect()
421 } while (server->tcpStatus == CifsNeedReconnect); in __cifs_reconnect()
423 spin_lock(&server->srv_lock); in __cifs_reconnect()
424 if (server->tcpStatus == CifsNeedNegotiate) in __cifs_reconnect()
425 mod_delayed_work(cifsiod_wq, &server->echo, 0); in __cifs_reconnect()
426 spin_unlock(&server->srv_lock); in __cifs_reconnect()
428 wake_up(&server->response_q); in __cifs_reconnect()
433 static int __reconnect_target_unlocked(struct TCP_Server_Info *server, const char *target) in __reconnect_target_unlocked() argument
438 if (!cifs_swn_set_server_dstaddr(server)) { in __reconnect_target_unlocked()
439 if (server->hostname != target) { in __reconnect_target_unlocked()
442 kfree(server->hostname); in __reconnect_target_unlocked()
443 server->hostname = hostname; in __reconnect_target_unlocked()
448 server->hostname); in __reconnect_target_unlocked()
452 rc = reconn_set_ipaddr_from_hostname(server); in __reconnect_target_unlocked()
456 if (cifs_rdma_enabled(server)) in __reconnect_target_unlocked()
457 rc = smbd_reconnect(server); in __reconnect_target_unlocked()
459 rc = generic_ip_connect(server); in __reconnect_target_unlocked()
464 static int reconnect_target_unlocked(struct TCP_Server_Info *server, struct dfs_cache_tgt_list *tl, in reconnect_target_unlocked() argument
475 return __reconnect_target_unlocked(server, server->hostname); in reconnect_target_unlocked()
479 rc = __reconnect_target_unlocked(server, dfs_cache_get_tgt_name(tit)); in reconnect_target_unlocked()
488 static int reconnect_dfs_server(struct TCP_Server_Info *server) in reconnect_dfs_server() argument
491 const char *refpath = server->current_fullpath + 1; in reconnect_dfs_server()
509 if (!cifs_tcp_ses_needs_reconnect(server, num_targets)) in reconnect_dfs_server()
517 cifs_mark_tcp_ses_conns_for_reconnect(server, true); in reconnect_dfs_server()
519 cifs_abort_connection(server); in reconnect_dfs_server()
523 cifs_server_lock(server); in reconnect_dfs_server()
525 rc = reconnect_target_unlocked(server, &tl, &target_hint); in reconnect_dfs_server()
528 cifs_server_unlock(server); in reconnect_dfs_server()
539 set_credits(server, 1); in reconnect_dfs_server()
540 spin_lock(&server->srv_lock); in reconnect_dfs_server()
541 if (server->tcpStatus != CifsExiting) in reconnect_dfs_server()
542 server->tcpStatus = CifsNeedNegotiate; in reconnect_dfs_server()
543 spin_unlock(&server->srv_lock); in reconnect_dfs_server()
544 cifs_swn_reset_server_dstaddr(server); in reconnect_dfs_server()
545 cifs_server_unlock(server); in reconnect_dfs_server()
546 mod_delayed_work(cifsiod_wq, &server->reconnect, 0); in reconnect_dfs_server()
547 } while (server->tcpStatus == CifsNeedReconnect); in reconnect_dfs_server()
555 spin_lock(&server->srv_lock); in reconnect_dfs_server()
556 if (server->tcpStatus == CifsNeedNegotiate) in reconnect_dfs_server()
557 mod_delayed_work(cifsiod_wq, &server->echo, 0); in reconnect_dfs_server()
558 spin_unlock(&server->srv_lock); in reconnect_dfs_server()
560 wake_up(&server->response_q); in reconnect_dfs_server()
564 int cifs_reconnect(struct TCP_Server_Info *server, bool mark_smb_session) in cifs_reconnect() argument
567 spin_lock(&server->srv_lock); in cifs_reconnect()
568 if (!server->is_dfs_conn) { in cifs_reconnect()
569 spin_unlock(&server->srv_lock); in cifs_reconnect()
570 return __cifs_reconnect(server, mark_smb_session); in cifs_reconnect()
572 spin_unlock(&server->srv_lock); in cifs_reconnect()
574 mutex_lock(&server->refpath_lock); in cifs_reconnect()
575 if (!server->origin_fullpath || !server->leaf_fullpath) { in cifs_reconnect()
576 mutex_unlock(&server->refpath_lock); in cifs_reconnect()
577 return __cifs_reconnect(server, mark_smb_session); in cifs_reconnect()
579 mutex_unlock(&server->refpath_lock); in cifs_reconnect()
581 return reconnect_dfs_server(server); in cifs_reconnect()
584 int cifs_reconnect(struct TCP_Server_Info *server, bool mark_smb_session) in cifs_reconnect() argument
586 return __cifs_reconnect(server, mark_smb_session); in cifs_reconnect()
594 struct TCP_Server_Info *server = container_of(work, in cifs_echo_request() local
602 if (server->tcpStatus == CifsNeedReconnect || in cifs_echo_request()
603 server->tcpStatus == CifsExiting || in cifs_echo_request()
604 server->tcpStatus == CifsNew || in cifs_echo_request()
605 (server->ops->can_echo && !server->ops->can_echo(server)) || in cifs_echo_request()
606 time_before(jiffies, server->lstrp + server->echo_interval - HZ)) in cifs_echo_request()
609 rc = server->ops->echo ? server->ops->echo(server) : -ENOSYS; in cifs_echo_request()
612 server->hostname); in cifs_echo_request()
618 queue_delayed_work(cifsiod_wq, &server->echo, server->echo_interval); in cifs_echo_request()
622 allocate_buffers(struct TCP_Server_Info *server) in allocate_buffers() argument
624 if (!server->bigbuf) { in allocate_buffers()
625 server->bigbuf = (char *)cifs_buf_get(); in allocate_buffers()
626 if (!server->bigbuf) { in allocate_buffers()
632 } else if (server->large_buf) { in allocate_buffers()
634 memset(server->bigbuf, 0, HEADER_SIZE(server)); in allocate_buffers()
637 if (!server->smallbuf) { in allocate_buffers()
638 server->smallbuf = (char *)cifs_small_buf_get(); in allocate_buffers()
639 if (!server->smallbuf) { in allocate_buffers()
648 memset(server->smallbuf, 0, HEADER_SIZE(server)); in allocate_buffers()
655 server_unresponsive(struct TCP_Server_Info *server) in server_unresponsive() argument
668 spin_lock(&server->srv_lock); in server_unresponsive()
669 if ((server->tcpStatus == CifsGood || in server_unresponsive()
670 server->tcpStatus == CifsNeedNegotiate) && in server_unresponsive()
671 (!server->ops->can_echo || server->ops->can_echo(server)) && in server_unresponsive()
672 time_after(jiffies, server->lstrp + 3 * server->echo_interval)) { in server_unresponsive()
673 spin_unlock(&server->srv_lock); in server_unresponsive()
675 (3 * server->echo_interval) / HZ); in server_unresponsive()
676 cifs_reconnect(server, false); in server_unresponsive()
679 spin_unlock(&server->srv_lock); in server_unresponsive()
685 zero_credits(struct TCP_Server_Info *server) in zero_credits() argument
689 spin_lock(&server->req_lock); in zero_credits()
690 val = server->credits + server->echo_credits + server->oplock_credits; in zero_credits()
691 if (server->in_flight == 0 && val == 0) { in zero_credits()
692 spin_unlock(&server->req_lock); in zero_credits()
695 spin_unlock(&server->req_lock); in zero_credits()
700 cifs_readv_from_socket(struct TCP_Server_Info *server, struct msghdr *smb_msg) in cifs_readv_from_socket() argument
709 if (zero_credits(server)) { in cifs_readv_from_socket()
710 cifs_reconnect(server, false); in cifs_readv_from_socket()
714 if (server_unresponsive(server)) in cifs_readv_from_socket()
716 if (cifs_rdma_enabled(server) && server->smbd_conn) in cifs_readv_from_socket()
717 length = smbd_recv(server->smbd_conn, smb_msg); in cifs_readv_from_socket()
719 length = sock_recvmsg(server->ssocket, smb_msg, 0); in cifs_readv_from_socket()
721 spin_lock(&server->srv_lock); in cifs_readv_from_socket()
722 if (server->tcpStatus == CifsExiting) { in cifs_readv_from_socket()
723 spin_unlock(&server->srv_lock); in cifs_readv_from_socket()
727 if (server->tcpStatus == CifsNeedReconnect) { in cifs_readv_from_socket()
728 spin_unlock(&server->srv_lock); in cifs_readv_from_socket()
729 cifs_reconnect(server, false); in cifs_readv_from_socket()
732 spin_unlock(&server->srv_lock); in cifs_readv_from_socket()
749 cifs_reconnect(server, false); in cifs_readv_from_socket()
757 cifs_read_from_socket(struct TCP_Server_Info *server, char *buf, in cifs_read_from_socket() argument
764 return cifs_readv_from_socket(server, &smb_msg); in cifs_read_from_socket()
768 cifs_discard_from_socket(struct TCP_Server_Info *server, size_t to_read) in cifs_discard_from_socket() argument
779 return cifs_readv_from_socket(server, &smb_msg); in cifs_discard_from_socket()
783 cifs_read_page_from_socket(struct TCP_Server_Info *server, struct page *page, in cifs_read_page_from_socket() argument
790 return cifs_readv_from_socket(server, &smb_msg); in cifs_read_page_from_socket()
794 is_smb_response(struct TCP_Server_Info *server, unsigned char type) in is_smb_response() argument
825 cifs_set_port((struct sockaddr *)&server->dstaddr, CIFS_PORT); in is_smb_response()
826 cifs_reconnect(server, true); in is_smb_response()
830 cifs_reconnect(server, true); in is_smb_response()
842 spin_lock(&mid->server->mid_lock); in dequeue_mid()
852 spin_unlock(&mid->server->mid_lock); in dequeue_mid()
857 spin_unlock(&mid->server->mid_lock); in dequeue_mid()
862 smb2_get_credits_from_hdr(char *buffer, struct TCP_Server_Info *server) in smb2_get_credits_from_hdr() argument
869 if (is_smb1(server)) in smb2_get_credits_from_hdr()
876 handle_mid(struct mid_q_entry *mid, struct TCP_Server_Info *server, in handle_mid() argument
879 if (server->ops->check_trans2 && in handle_mid()
880 server->ops->check_trans2(mid, server, buf, malformed)) in handle_mid()
882 mid->credits_received = smb2_get_credits_from_hdr(buf, server); in handle_mid()
884 mid->large_buf = server->large_buf; in handle_mid()
888 if (server->large_buf) in handle_mid()
889 server->bigbuf = NULL; in handle_mid()
891 server->smallbuf = NULL; in handle_mid()
897 cifs_enable_signing(struct TCP_Server_Info *server, bool mnt_sign_required) in cifs_enable_signing() argument
899 bool srv_sign_required = server->sec_mode & server->vals->signing_required; in cifs_enable_signing()
900 bool srv_sign_enabled = server->sec_mode & server->vals->signing_enabled; in cifs_enable_signing()
924 server->sign = true; in cifs_enable_signing()
933 server->sign = true; in cifs_enable_signing()
936 if (cifs_rdma_enabled(server) && server->sign) in cifs_enable_signing()
943 static void clean_demultiplex_info(struct TCP_Server_Info *server) in clean_demultiplex_info() argument
948 spin_lock(&server->srv_lock); in clean_demultiplex_info()
949 list_del_init(&server->tcp_ses_list); in clean_demultiplex_info()
950 spin_unlock(&server->srv_lock); in clean_demultiplex_info()
952 cancel_delayed_work_sync(&server->echo); in clean_demultiplex_info()
953 cancel_delayed_work_sync(&server->resolve); in clean_demultiplex_info()
955 spin_lock(&server->srv_lock); in clean_demultiplex_info()
956 server->tcpStatus = CifsExiting; in clean_demultiplex_info()
957 spin_unlock(&server->srv_lock); in clean_demultiplex_info()
958 wake_up_all(&server->response_q); in clean_demultiplex_info()
961 spin_lock(&server->req_lock); in clean_demultiplex_info()
962 if (server->credits <= 0) in clean_demultiplex_info()
963 server->credits = 1; in clean_demultiplex_info()
964 spin_unlock(&server->req_lock); in clean_demultiplex_info()
972 wake_up_all(&server->request_q); in clean_demultiplex_info()
975 if (cifs_rdma_enabled(server)) in clean_demultiplex_info()
976 smbd_destroy(server); in clean_demultiplex_info()
977 if (server->ssocket) { in clean_demultiplex_info()
978 sock_release(server->ssocket); in clean_demultiplex_info()
979 server->ssocket = NULL; in clean_demultiplex_info()
982 if (!list_empty(&server->pending_mid_q)) { in clean_demultiplex_info()
988 spin_lock(&server->mid_lock); in clean_demultiplex_info()
989 list_for_each_safe(tmp, tmp2, &server->pending_mid_q) { in clean_demultiplex_info()
997 spin_unlock(&server->mid_lock); in clean_demultiplex_info()
1011 if (!list_empty(&server->pending_mid_q)) { in clean_demultiplex_info()
1029 kfree(server->origin_fullpath); in clean_demultiplex_info()
1030 kfree(server->leaf_fullpath); in clean_demultiplex_info()
1032 kfree(server); in clean_demultiplex_info()
1040 standard_receive3(struct TCP_Server_Info *server, struct mid_q_entry *mid) in standard_receive3() argument
1043 char *buf = server->smallbuf; in standard_receive3()
1044 unsigned int pdu_length = server->pdu_size; in standard_receive3()
1047 if (pdu_length > CIFSMaxBufSize + MAX_HEADER_SIZE(server) - in standard_receive3()
1048 HEADER_PREAMBLE_SIZE(server)) { in standard_receive3()
1050 cifs_reconnect(server, true); in standard_receive3()
1056 server->large_buf = true; in standard_receive3()
1057 memcpy(server->bigbuf, buf, server->total_read); in standard_receive3()
1058 buf = server->bigbuf; in standard_receive3()
1062 length = cifs_read_from_socket(server, buf + HEADER_SIZE(server) - 1, in standard_receive3()
1063 pdu_length - MID_HEADER_SIZE(server)); in standard_receive3()
1067 server->total_read += length; in standard_receive3()
1069 dump_smb(buf, server->total_read); in standard_receive3()
1071 return cifs_handle_standard(server, mid); in standard_receive3()
1075 cifs_handle_standard(struct TCP_Server_Info *server, struct mid_q_entry *mid) in cifs_handle_standard() argument
1077 char *buf = server->large_buf ? server->bigbuf : server->smallbuf; in cifs_handle_standard()
1088 rc = server->ops->check_message(buf, server->total_read, server); in cifs_handle_standard()
1091 min_t(unsigned int, server->total_read, 48)); in cifs_handle_standard()
1093 if (server->ops->is_session_expired && in cifs_handle_standard()
1094 server->ops->is_session_expired(buf)) { in cifs_handle_standard()
1095 cifs_reconnect(server, true); in cifs_handle_standard()
1099 if (server->ops->is_status_pending && in cifs_handle_standard()
1100 server->ops->is_status_pending(buf, server)) in cifs_handle_standard()
1106 handle_mid(mid, server, buf, rc); in cifs_handle_standard()
1111 smb2_add_credits_from_hdr(char *buffer, struct TCP_Server_Info *server) in smb2_add_credits_from_hdr() argument
1119 if (is_smb1(server)) in smb2_add_credits_from_hdr()
1123 spin_lock(&server->req_lock); in smb2_add_credits_from_hdr()
1124 server->credits += le16_to_cpu(shdr->CreditRequest); in smb2_add_credits_from_hdr()
1125 scredits = server->credits; in smb2_add_credits_from_hdr()
1126 in_flight = server->in_flight; in smb2_add_credits_from_hdr()
1127 spin_unlock(&server->req_lock); in smb2_add_credits_from_hdr()
1128 wake_up(&server->request_q); in smb2_add_credits_from_hdr()
1130 trace_smb3_hdr_credits(server->CurrentMid, in smb2_add_credits_from_hdr()
1131 server->conn_id, server->hostname, scredits, in smb2_add_credits_from_hdr()
1144 struct TCP_Server_Info *server = p; in cifs_demultiplex_thread() local
1162 while (server->tcpStatus != CifsExiting) { in cifs_demultiplex_thread()
1166 if (!allocate_buffers(server)) in cifs_demultiplex_thread()
1169 server->large_buf = false; in cifs_demultiplex_thread()
1170 buf = server->smallbuf; in cifs_demultiplex_thread()
1173 length = cifs_read_from_socket(server, buf, pdu_length); in cifs_demultiplex_thread()
1177 if (is_smb1(server)) in cifs_demultiplex_thread()
1178 server->total_read = length; in cifs_demultiplex_thread()
1180 server->total_read = 0; in cifs_demultiplex_thread()
1189 if (!is_smb_response(server, buf[0])) in cifs_demultiplex_thread()
1192 server->pdu_size = pdu_length; in cifs_demultiplex_thread()
1195 if (server->pdu_size < MID_HEADER_SIZE(server)) { in cifs_demultiplex_thread()
1197 server->pdu_size); in cifs_demultiplex_thread()
1198 cifs_reconnect(server, true); in cifs_demultiplex_thread()
1203 length = cifs_read_from_socket(server, in cifs_demultiplex_thread()
1204 buf + HEADER_PREAMBLE_SIZE(server), in cifs_demultiplex_thread()
1205 MID_HEADER_SIZE(server)); in cifs_demultiplex_thread()
1208 server->total_read += length; in cifs_demultiplex_thread()
1210 if (server->ops->next_header) { in cifs_demultiplex_thread()
1211 next_offset = server->ops->next_header(buf); in cifs_demultiplex_thread()
1213 server->pdu_size = next_offset; in cifs_demultiplex_thread()
1220 if (server->ops->is_transform_hdr && in cifs_demultiplex_thread()
1221 server->ops->receive_transform && in cifs_demultiplex_thread()
1222 server->ops->is_transform_hdr(buf)) { in cifs_demultiplex_thread()
1223 length = server->ops->receive_transform(server, in cifs_demultiplex_thread()
1228 mids[0] = server->ops->find_mid(server, buf); in cifs_demultiplex_thread()
1233 length = standard_receive3(server, mids[0]); in cifs_demultiplex_thread()
1235 length = mids[0]->receive(server, mids[0]); in cifs_demultiplex_thread()
1245 if (server->ops->is_status_io_timeout && in cifs_demultiplex_thread()
1246 server->ops->is_status_io_timeout(buf)) { in cifs_demultiplex_thread()
1249 cifs_reconnect(server, false); in cifs_demultiplex_thread()
1255 server->lstrp = jiffies; in cifs_demultiplex_thread()
1259 mids[i]->resp_buf_size = server->pdu_size; in cifs_demultiplex_thread()
1261 if (bufs[i] && server->ops->is_network_name_deleted) in cifs_demultiplex_thread()
1262 server->ops->is_network_name_deleted(bufs[i], in cifs_demultiplex_thread()
1263 server); in cifs_demultiplex_thread()
1269 } else if (server->ops->is_oplock_break && in cifs_demultiplex_thread()
1270 server->ops->is_oplock_break(bufs[i], in cifs_demultiplex_thread()
1271 server)) { in cifs_demultiplex_thread()
1272 smb2_add_credits_from_hdr(bufs[i], server); in cifs_demultiplex_thread()
1278 HEADER_SIZE(server)); in cifs_demultiplex_thread()
1279 smb2_add_credits_from_hdr(bufs[i], server); in cifs_demultiplex_thread()
1281 if (server->ops->dump_detail) in cifs_demultiplex_thread()
1282 server->ops->dump_detail(bufs[i], in cifs_demultiplex_thread()
1283 server); in cifs_demultiplex_thread()
1284 cifs_dump_mids(server); in cifs_demultiplex_thread()
1289 if (pdu_length > server->pdu_size) { in cifs_demultiplex_thread()
1290 if (!allocate_buffers(server)) in cifs_demultiplex_thread()
1292 pdu_length -= server->pdu_size; in cifs_demultiplex_thread()
1293 server->total_read = 0; in cifs_demultiplex_thread()
1294 server->large_buf = false; in cifs_demultiplex_thread()
1295 buf = server->smallbuf; in cifs_demultiplex_thread()
1301 cifs_buf_release(server->bigbuf); in cifs_demultiplex_thread()
1302 if (server->smallbuf) /* no sense logging a debug message if NULL */ in cifs_demultiplex_thread()
1303 cifs_small_buf_release(server->smallbuf); in cifs_demultiplex_thread()
1305 task_to_wake = xchg(&server->tsk, NULL); in cifs_demultiplex_thread()
1306 clean_demultiplex_info(server); in cifs_demultiplex_thread()
1354 match_port(struct TCP_Server_Info *server, struct sockaddr *addr) in match_port() argument
1359 if (server->rdma) in match_port()
1364 sport = &((struct sockaddr_in *) &server->dstaddr)->sin_port; in match_port()
1368 sport = &((struct sockaddr_in6 *) &server->dstaddr)->sin6_port; in match_port()
1388 match_address(struct TCP_Server_Info *server, struct sockaddr *addr, in match_address() argument
1395 (struct sockaddr_in *)&server->dstaddr; in match_address()
1404 (struct sockaddr_in6 *)&server->dstaddr; in match_address()
1418 if (!cifs_match_ipaddr(srcaddr, (struct sockaddr *)&server->srcaddr)) in match_address()
1425 match_security(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) in match_security() argument
1432 if (server->ops->select_sectype(server, ctx->sectype) in match_security()
1441 if (ctx->sign && !server->sign) in match_security()
1448 static int match_server(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) in match_server() argument
1456 if (server->nosharesock) in match_server()
1461 if (server->vals->protocol_id < SMB30_PROT_ID) in match_server()
1465 if (server->vals->protocol_id < SMB21_PROT_ID) in match_server()
1467 } else if ((server->vals != ctx->vals) || (server->ops != ctx->ops)) in match_server()
1470 if (!net_eq(cifs_net_ns(server), current->nsproxy->net_ns)) in match_server()
1473 if (strcasecmp(server->hostname, ctx->server_hostname)) in match_server()
1476 if (!match_address(server, addr, in match_server()
1480 if (!match_port(server, addr)) in match_server()
1483 if (!match_security(server, ctx)) in match_server()
1486 if (server->echo_interval != ctx->echo_interval * HZ) in match_server()
1489 if (server->rdma != ctx->rdma) in match_server()
1492 if (server->ignore_signature != ctx->ignore_signature) in match_server()
1495 if (server->min_offload != ctx->min_offload) in match_server()
1504 struct TCP_Server_Info *server; in cifs_find_tcp_session() local
1507 list_for_each_entry(server, &cifs_tcp_ses_list, tcp_ses_list) { in cifs_find_tcp_session()
1508 spin_lock(&server->srv_lock); in cifs_find_tcp_session()
1516 if (server->is_dfs_conn) { in cifs_find_tcp_session()
1517 spin_unlock(&server->srv_lock); in cifs_find_tcp_session()
1525 if (CIFS_SERVER_IS_CHAN(server) || !match_server(server, ctx)) { in cifs_find_tcp_session()
1526 spin_unlock(&server->srv_lock); in cifs_find_tcp_session()
1529 spin_unlock(&server->srv_lock); in cifs_find_tcp_session()
1531 ++server->srv_count; in cifs_find_tcp_session()
1534 return server; in cifs_find_tcp_session()
1541 cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect) in cifs_put_tcp_session() argument
1546 if (--server->srv_count > 0) { in cifs_put_tcp_session()
1552 WARN_ON(server->srv_count < 0); in cifs_put_tcp_session()
1554 put_net(cifs_net_ns(server)); in cifs_put_tcp_session()
1556 list_del_init(&server->tcp_ses_list); in cifs_put_tcp_session()
1560 if (CIFS_SERVER_IS_CHAN(server)) in cifs_put_tcp_session()
1561 cifs_put_tcp_session(server->primary_server, from_reconnect); in cifs_put_tcp_session()
1563 cancel_delayed_work_sync(&server->echo); in cifs_put_tcp_session()
1564 cancel_delayed_work_sync(&server->resolve); in cifs_put_tcp_session()
1573 cancel_delayed_work(&server->reconnect); in cifs_put_tcp_session()
1575 cancel_delayed_work_sync(&server->reconnect); in cifs_put_tcp_session()
1577 spin_lock(&server->srv_lock); in cifs_put_tcp_session()
1578 server->tcpStatus = CifsExiting; in cifs_put_tcp_session()
1579 spin_unlock(&server->srv_lock); in cifs_put_tcp_session()
1581 cifs_crypto_secmech_release(server); in cifs_put_tcp_session()
1583 kfree_sensitive(server->session_key.response); in cifs_put_tcp_session()
1584 server->session_key.response = NULL; in cifs_put_tcp_session()
1585 server->session_key.len = 0; in cifs_put_tcp_session()
1586 kfree(server->hostname); in cifs_put_tcp_session()
1587 server->hostname = NULL; in cifs_put_tcp_session()
1589 task = xchg(&server->tsk, NULL); in cifs_put_tcp_session()
1837 struct TCP_Server_Info *server = ses->server; in cifs_setup_ipc() local
1844 if (server->capabilities & SMB2_GLOBAL_CAP_ENCRYPTION) in cifs_setup_ipc()
1857 scnprintf(unc, sizeof(unc), "\\\\%s\\IPC$", server->hostname); in cifs_setup_ipc()
1863 rc = server->ops->tree_connect(xid, ses, unc, tcon, ctx->local_nls); in cifs_setup_ipc()
1905 cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) in cifs_find_smb_ses() argument
1910 list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) { in cifs_find_smb_ses()
1934 struct TCP_Server_Info *server = ses->server; in cifs_put_smb_ses() local
1962 if (ses->ses_status == SES_EXITING && server->ops->logoff) { in cifs_put_smb_ses()
1964 rc = server->ops->logoff(xid, ses); in cifs_put_smb_ses()
1986 cifs_put_tcp_session(ses->chans[i].server, 0); in cifs_put_smb_ses()
1987 ses->chans[i].server = NULL; in cifs_put_smb_ses()
1992 cifs_put_tcp_session(server, 0); in cifs_put_smb_ses()
2010 struct TCP_Server_Info *server = ses->server; in cifs_set_cifscreds() local
2020 switch (server->dstaddr.ss_family) { in cifs_set_cifscreds()
2022 sa = (struct sockaddr_in *)&server->dstaddr; in cifs_set_cifscreds()
2026 sa6 = (struct sockaddr_in6 *)&server->dstaddr; in cifs_set_cifscreds()
2031 server->dstaddr.ss_family); in cifs_set_cifscreds()
2158 cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) in cifs_get_smb_ses() argument
2163 struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; in cifs_get_smb_ses()
2164 struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; in cifs_get_smb_ses()
2168 ses = cifs_find_smb_ses(server, ctx); in cifs_get_smb_ses()
2174 if (cifs_chan_needs_reconnect(ses, server)) { in cifs_get_smb_ses()
2179 rc = cifs_negotiate_protocol(xid, ses, server); in cifs_get_smb_ses()
2188 rc = cifs_setup_session(xid, ses, server, in cifs_get_smb_ses()
2204 cifs_put_tcp_session(server, 0); in cifs_get_smb_ses()
2215 ses->server = server; in cifs_get_smb_ses()
2216 if (server->dstaddr.ss_family == AF_INET6) in cifs_get_smb_ses()
2251 ses->chans[0].server = server; in cifs_get_smb_ses()
2258 rc = cifs_negotiate_protocol(xid, ses, server); in cifs_get_smb_ses()
2260 rc = cifs_setup_session(xid, ses, server, ctx->local_nls); in cifs_get_smb_ses()
2278 list_add(&ses->smb_ses_list, &server->smb_ses_list); in cifs_get_smb_ses()
2378 if (ses->server->ops->tree_disconnect) in cifs_put_tcon()
2379 ses->server->ops->tree_disconnect(xid, tcon); in cifs_put_tcon()
2426 if (!ses->server->ops->tree_connect) { in cifs_get_tcon()
2438 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2448 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2467 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2472 } else if (tcon->ses->server->capabilities & in cifs_get_tcon()
2483 if (ses->server->posix_ext_supported) { in cifs_get_tcon()
2486 } else if ((ses->server->vals->protocol_id == SMB311_PROT_ID) || in cifs_get_tcon()
2487 (strcmp(ses->server->vals->version_string, in cifs_get_tcon()
2489 (strcmp(ses->server->vals->version_string, in cifs_get_tcon()
2503 rc = ses->server->ops->tree_connect(xid, ses, ctx->UNC, tcon, in cifs_get_tcon()
2513 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2518 } else if (ses->server->capabilities & in cifs_get_tcon()
2528 && (ses->server->capabilities & SMB2_GLOBAL_CAP_PERSISTENT_HANDLES) in cifs_get_tcon()
2533 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2544 if (ses->server->vals->protocol_id >= SMB30_PROT_ID) { in cifs_get_tcon()
2579 if (ses->server->vals->protocol_id == 0) { in cifs_get_tcon()
2596 if (ses->server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING) in cifs_get_tcon()
2727 tcp_srv = ses->server; in cifs_match_super()
2801 bind_socket(struct TCP_Server_Info *server) in bind_socket() argument
2804 if (server->srcaddr.ss_family != AF_UNSPEC) { in bind_socket()
2806 struct socket *socket = server->ssocket; in bind_socket()
2808 (struct sockaddr *) &server->srcaddr, in bind_socket()
2809 sizeof(server->srcaddr)); in bind_socket()
2813 saddr4 = (struct sockaddr_in *)&server->srcaddr; in bind_socket()
2814 saddr6 = (struct sockaddr_in6 *)&server->srcaddr; in bind_socket()
2827 ip_rfc1001_connect(struct TCP_Server_Info *server) in ip_rfc1001_connect() argument
2845 if (server->server_RFC1001_name[0] != 0) in ip_rfc1001_connect()
2848 server->server_RFC1001_name, in ip_rfc1001_connect()
2862 if (server->workstation_RFC1001_name[0] != 0) in ip_rfc1001_connect()
2865 server->workstation_RFC1001_name, in ip_rfc1001_connect()
2883 rc = smb_send(server, smb_buf, 0x44); in ip_rfc1001_connect()
2906 generic_ip_connect(struct TCP_Server_Info *server) in generic_ip_connect() argument
2911 struct socket *socket = server->ssocket; in generic_ip_connect()
2914 saddr = (struct sockaddr *) &server->dstaddr; in generic_ip_connect()
2916 if (server->dstaddr.ss_family == AF_INET6) { in generic_ip_connect()
2917 struct sockaddr_in6 *ipv6 = (struct sockaddr_in6 *)&server->dstaddr; in generic_ip_connect()
2925 struct sockaddr_in *ipv4 = (struct sockaddr_in *)&server->dstaddr; in generic_ip_connect()
2935 rc = __sock_create(cifs_net_ns(server), sfamily, SOCK_STREAM, in generic_ip_connect()
2939 server->ssocket = NULL; in generic_ip_connect()
2945 server->ssocket = socket; in generic_ip_connect()
2953 rc = bind_socket(server); in generic_ip_connect()
2966 if (server->noautotune) { in generic_ip_connect()
2973 if (server->tcp_nodelay) in generic_ip_connect()
2981 server->noblockcnt ? O_NONBLOCK : 0); in generic_ip_connect()
2987 if (server->noblockcnt && rc == -EINPROGRESS) in generic_ip_connect()
2991 trace_smb3_connect_err(server->hostname, server->conn_id, &server->dstaddr, rc); in generic_ip_connect()
2993 server->ssocket = NULL; in generic_ip_connect()
2996 trace_smb3_connect_done(server->hostname, server->conn_id, &server->dstaddr); in generic_ip_connect()
2998 rc = ip_rfc1001_connect(server); in generic_ip_connect()
3004 ip_connect(struct TCP_Server_Info *server) in ip_connect() argument
3007 struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; in ip_connect()
3008 struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; in ip_connect()
3010 if (server->dstaddr.ss_family == AF_INET6) in ip_connect()
3021 rc = generic_ip_connect(server); in ip_connect()
3029 return generic_ip_connect(server); in ip_connect()
3201 else if (mnt_ctx->server) in mount_put_conns()
3202 cifs_put_tcp_session(mnt_ctx->server, 0); in mount_put_conns()
3211 struct TCP_Server_Info *server = NULL; in mount_get_conns() local
3221 server = cifs_get_tcp_session(ctx, NULL); in mount_get_conns()
3222 if (IS_ERR(server)) { in mount_get_conns()
3223 rc = PTR_ERR(server); in mount_get_conns()
3224 server = NULL; in mount_get_conns()
3229 ses = cifs_get_smb_ses(server, ctx); in mount_get_conns()
3236 if ((ctx->persistent == true) && (!(ses->server->capabilities & in mount_get_conns()
3263 spin_lock(&tcon->ses->server->srv_lock); in mount_get_conns()
3264 if ((tcon->ses->server->tcpStatus == CifsNeedReconnect) && in mount_get_conns()
3267 spin_unlock(&tcon->ses->server->srv_lock); in mount_get_conns()
3271 spin_unlock(&tcon->ses->server->srv_lock); in mount_get_conns()
3277 if (!tcon->pipe && server->ops->qfs_tcon) { in mount_get_conns()
3278 server->ops->qfs_tcon(xid, tcon, cifs_sb); in mount_get_conns()
3296 (cifs_sb->ctx->wsize > server->ops->negotiate_wsize(tcon, ctx))) in mount_get_conns()
3297 cifs_sb->ctx->wsize = server->ops->negotiate_wsize(tcon, ctx); in mount_get_conns()
3299 (cifs_sb->ctx->rsize > server->ops->negotiate_rsize(tcon, ctx))) in mount_get_conns()
3300 cifs_sb->ctx->rsize = server->ops->negotiate_rsize(tcon, ctx); in mount_get_conns()
3311 mnt_ctx->server = server; in mount_get_conns()
3353 if (mnt_ctx->server) { in mount_get_dfs_conns()
3355 spin_lock(&mnt_ctx->server->srv_lock); in mount_get_dfs_conns()
3356 mnt_ctx->server->is_dfs_conn = true; in mount_get_dfs_conns()
3357 spin_unlock(&mnt_ctx->server->srv_lock); in mount_get_dfs_conns()
3486 cifs_are_all_path_components_accessible(struct TCP_Server_Info *server, in cifs_are_all_path_components_accessible() argument
3501 rc = server->ops->is_path_accessible(xid, tcon, cifs_sb, ""); in cifs_are_all_path_components_accessible()
3525 rc = server->ops->is_path_accessible(xid, tcon, cifs_sb, in cifs_are_all_path_components_accessible()
3541 struct TCP_Server_Info *server = mnt_ctx->server; in is_path_remote() local
3550 if (!server->ops->is_path_accessible) in is_path_remote()
3563 rc = server->ops->is_path_accessible(xid, tcon, cifs_sb, in is_path_remote()
3582 rc = cifs_are_all_path_components_accessible(server, xid, tcon, in is_path_remote()
3804 struct TCP_Server_Info *server = mnt_ctx->server; in setup_server_referral_paths() local
3806 mutex_lock(&server->refpath_lock); in setup_server_referral_paths()
3807 server->origin_fullpath = mnt_ctx->origin_fullpath; in setup_server_referral_paths()
3808 server->leaf_fullpath = mnt_ctx->leaf_fullpath; in setup_server_referral_paths()
3809 server->current_fullpath = mnt_ctx->leaf_fullpath; in setup_server_referral_paths()
3810 mutex_unlock(&server->refpath_lock); in setup_server_referral_paths()
3933 smb_buffer->Mid = get_next_mid(ses->server); in CIFSTCon()
3947 if (ses->server->sign) in CIFSTCon()
4071 struct TCP_Server_Info *server) in cifs_negotiate_protocol() argument
4075 if (!server->ops->need_neg || !server->ops->negotiate) in cifs_negotiate_protocol()
4079 spin_lock(&server->srv_lock); in cifs_negotiate_protocol()
4080 if (!server->ops->need_neg(server) || in cifs_negotiate_protocol()
4081 server->tcpStatus != CifsNeedNegotiate) { in cifs_negotiate_protocol()
4082 spin_unlock(&server->srv_lock); in cifs_negotiate_protocol()
4085 server->tcpStatus = CifsInNegotiate; in cifs_negotiate_protocol()
4086 spin_unlock(&server->srv_lock); in cifs_negotiate_protocol()
4088 rc = server->ops->negotiate(xid, ses, server); in cifs_negotiate_protocol()
4090 spin_lock(&server->srv_lock); in cifs_negotiate_protocol()
4091 if (server->tcpStatus == CifsInNegotiate) in cifs_negotiate_protocol()
4092 server->tcpStatus = CifsGood; in cifs_negotiate_protocol()
4095 spin_unlock(&server->srv_lock); in cifs_negotiate_protocol()
4097 spin_lock(&server->srv_lock); in cifs_negotiate_protocol()
4098 if (server->tcpStatus == CifsInNegotiate) in cifs_negotiate_protocol()
4099 server->tcpStatus = CifsNeedNegotiate; in cifs_negotiate_protocol()
4100 spin_unlock(&server->srv_lock); in cifs_negotiate_protocol()
4108 struct TCP_Server_Info *server, in cifs_setup_session() argument
4112 struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; in cifs_setup_session()
4113 struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; in cifs_setup_session()
4117 if (server->dstaddr.ss_family == AF_INET6) in cifs_setup_session()
4132 cifs_chan_in_reconnect(ses, server)) { in cifs_setup_session()
4138 cifs_chan_set_in_reconnect(ses, server); in cifs_setup_session()
4146 ses->capabilities = server->capabilities; in cifs_setup_session()
4148 ses->capabilities &= (~server->vals->cap_unix); in cifs_setup_session()
4160 server->sec_mode, server->capabilities, server->timeAdj); in cifs_setup_session()
4162 if (server->ops->sess_setup) in cifs_setup_session()
4163 rc = server->ops->sess_setup(xid, ses, server, nls_info); in cifs_setup_session()
4171 cifs_chan_clear_in_reconnect(ses, server); in cifs_setup_session()
4179 cifs_chan_clear_in_reconnect(ses, server); in cifs_setup_session()
4180 cifs_chan_clear_need_reconnect(ses, server); in cifs_setup_session()
4240 ++master_tcon->ses->server->srv_count; in cifs_construct_tcon()
4243 ses = cifs_get_smb_ses(master_tcon->ses->server, ctx); in cifs_construct_tcon()
4246 cifs_put_tcp_session(master_tcon->ses->server, 0); in cifs_construct_tcon()
4454 static int update_server_fullpath(struct TCP_Server_Info *server, struct cifs_sb_info *cifs_sb, in update_server_fullpath() argument
4486 mutex_lock(&server->refpath_lock); in update_server_fullpath()
4487 kfree(server->leaf_fullpath); in update_server_fullpath()
4488 server->leaf_fullpath = npath; in update_server_fullpath()
4489 mutex_unlock(&server->refpath_lock); in update_server_fullpath()
4490 server->current_fullpath = server->leaf_fullpath; in update_server_fullpath()
4495 static int target_share_matches_server(struct TCP_Server_Info *server, const char *tcp_host, in target_share_matches_server() argument
4509 rc = match_target_ip(server, dfs_host, dfs_host_len, target_match); in target_share_matches_server()
4521 struct TCP_Server_Info *server = tcon->ses->server; in __tree_connect_dfs_target() local
4522 const struct smb_version_operations *ops = server->ops; in __tree_connect_dfs_target()
4530 extract_unc_hostname(server->hostname, &tcp_host, &tcp_host_len); in __tree_connect_dfs_target()
4548 rc = dfs_cache_get_tgt_share(server->current_fullpath + 1, tit, &share, &prefix); in __tree_connect_dfs_target()
4554 rc = target_share_matches_server(server, tcp_host, tcp_host_len, share, in __tree_connect_dfs_target()
4564 scnprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$", server->hostname); in __tree_connect_dfs_target()
4586 rc = dfs_cache_noreq_update_tgthint(server->current_fullpath + 1, tit); in __tree_connect_dfs_target()
4591 rc = update_server_fullpath(server, cifs_sb, target); in __tree_connect_dfs_target()
4616 struct TCP_Server_Info *server = tcon->ses->server; in tree_connect_dfs_target() local
4627 if (rc && server->current_fullpath != server->origin_fullpath) { in tree_connect_dfs_target()
4628 server->current_fullpath = server->origin_fullpath; in tree_connect_dfs_target()
4629 cifs_signal_cifsd_for_reconnect(server, true); in tree_connect_dfs_target()
4639 struct TCP_Server_Info *server = tcon->ses->server; in cifs_tree_connect() local
4640 const struct smb_version_operations *ops = server->ops; in cifs_tree_connect()
4665 scnprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$", server->hostname); in cifs_tree_connect()
4670 sb = cifs_get_tcp_super(server); in cifs_tree_connect()
4680 if (!server->current_fullpath || in cifs_tree_connect()
4681 dfs_cache_noreq_find(server->current_fullpath + 1, &ref, &tl)) { in cifs_tree_connect()
4713 const struct smb_version_operations *ops = tcon->ses->server->ops; in cifs_tree_connect()