Lines Matching refs:server

46 	__le16 command = midEntry->server->vals->lock_cmd;  in __release_mid()
51 struct TCP_Server_Info *server = midEntry->server; in __release_mid() local
56 server->ops->handle_cancelled_mid) in __release_mid()
57 server->ops->handle_cancelled_mid(midEntry, server); in __release_mid()
72 if (atomic_read(&server->num_cmds[smb_cmd]) == 0) { in __release_mid()
73 server->slowest_cmd[smb_cmd] = roundtrip_time; in __release_mid()
74 server->fastest_cmd[smb_cmd] = roundtrip_time; in __release_mid()
76 if (server->slowest_cmd[smb_cmd] < roundtrip_time) in __release_mid()
77 server->slowest_cmd[smb_cmd] = roundtrip_time; in __release_mid()
78 else if (server->fastest_cmd[smb_cmd] > roundtrip_time) in __release_mid()
79 server->fastest_cmd[smb_cmd] = roundtrip_time; in __release_mid()
81 cifs_stats_inc(&server->num_cmds[smb_cmd]); in __release_mid()
82 server->time_per_cmd[smb_cmd] += roundtrip_time; in __release_mid()
102 cifs_stats_inc(&server->smb2slowcmd[smb_cmd]); in __release_mid()
124 spin_lock(&mid->server->mid_queue_lock); in delete_mid()
129 spin_unlock(&mid->server->mid_queue_lock); in delete_mid()
144 smb_send_kvec(struct TCP_Server_Info *server, struct msghdr *smb_msg, in smb_send_kvec() argument
149 struct socket *ssocket = server->ssocket; in smb_send_kvec()
153 if (server->noblocksnd) in smb_send_kvec()
181 (!server->noblocksnd && (retries > 2))) { in smb_send_kvec()
209 smb_rqst_len(struct TCP_Server_Info *server, struct smb_rqst *rqst) in smb_rqst_len() argument
216 if (!is_smb1(server) && rqst->rq_nvec >= 2 && in smb_rqst_len()
233 int __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst, in __smb_send_rqst() argument
243 struct socket *ssocket = server->ssocket; in __smb_send_rqst()
247 cifs_in_send_inc(server); in __smb_send_rqst()
248 if (cifs_rdma_enabled(server)) { in __smb_send_rqst()
251 if (server->smbd_conn) in __smb_send_rqst()
252 rc = smbd_send(server, num_rqst, rqst); in __smb_send_rqst()
271 send_length += smb_rqst_len(server, &rqst[j]); in __smb_send_rqst()
285 if (!is_smb1(server)) { in __smb_send_rqst()
291 rc = smb_send_kvec(server, &smb_msg, &sent); in __smb_send_rqst()
313 rc = smb_send_kvec(server, &smb_msg, &sent); in __smb_send_rqst()
321 rc = smb_send_kvec(server, &smb_msg, &sent); in __smb_send_rqst()
359 cifs_signal_cifsd_for_reconnect(server, false); in __smb_send_rqst()
360 trace_smb3_partial_send_reconnect(server->current_mid, in __smb_send_rqst()
361 server->conn_id, server->hostname); in __smb_send_rqst()
373 cifs_signal_cifsd_for_reconnect(server, false); in __smb_send_rqst()
377 cifs_in_send_dec(server); in __smb_send_rqst()
382 smb_send_rqst(struct TCP_Server_Info *server, int num_rqst, in smb_send_rqst() argument
394 return smb_compress(server, &rqst[0], __smb_send_rqst); in smb_send_rqst()
397 return __smb_send_rqst(server, num_rqst, rqst); in smb_send_rqst()
402 if (!server->ops->init_transform_rq) { in smb_send_rqst()
410 rc = server->ops->init_transform_rq(server, num_rqst + 1, in smb_send_rqst()
413 rc = __smb_send_rqst(server, num_rqst + 1, new_rqst); in smb_send_rqst()
420 wait_for_free_credits(struct TCP_Server_Info *server, const int num_credits, in wait_for_free_credits() argument
439 credits = server->ops->get_credits_field(server, optype); in wait_for_free_credits()
444 spin_lock(&server->req_lock); in wait_for_free_credits()
447 server->in_flight++; in wait_for_free_credits()
448 if (server->in_flight > server->max_in_flight) in wait_for_free_credits()
449 server->max_in_flight = server->in_flight; in wait_for_free_credits()
451 *instance = server->reconnect_instance; in wait_for_free_credits()
453 in_flight = server->in_flight; in wait_for_free_credits()
454 spin_unlock(&server->req_lock); in wait_for_free_credits()
456 trace_smb3_nblk_credits(server->current_mid, in wait_for_free_credits()
457 server->conn_id, server->hostname, scredits, -1, in_flight); in wait_for_free_credits()
465 spin_unlock(&server->req_lock); in wait_for_free_credits()
467 spin_lock(&server->srv_lock); in wait_for_free_credits()
468 if (server->tcpStatus == CifsExiting) { in wait_for_free_credits()
469 spin_unlock(&server->srv_lock); in wait_for_free_credits()
472 spin_unlock(&server->srv_lock); in wait_for_free_credits()
474 spin_lock(&server->req_lock); in wait_for_free_credits()
477 spin_unlock(&server->req_lock); in wait_for_free_credits()
479 cifs_num_waiters_inc(server); in wait_for_free_credits()
480 rc = wait_event_killable_timeout(server->request_q, in wait_for_free_credits()
481 has_credits(server, credits, num_credits), t); in wait_for_free_credits()
482 cifs_num_waiters_dec(server); in wait_for_free_credits()
484 spin_lock(&server->req_lock); in wait_for_free_credits()
486 in_flight = server->in_flight; in wait_for_free_credits()
487 spin_unlock(&server->req_lock); in wait_for_free_credits()
489 trace_smb3_credit_timeout(server->current_mid, in wait_for_free_credits()
490 server->conn_id, server->hostname, scredits, in wait_for_free_credits()
498 spin_lock(&server->req_lock); in wait_for_free_credits()
514 server->in_flight > 2 * MAX_COMPOUND && in wait_for_free_credits()
516 spin_unlock(&server->req_lock); in wait_for_free_credits()
518 cifs_num_waiters_inc(server); in wait_for_free_credits()
520 server->request_q, in wait_for_free_credits()
521 has_credits(server, credits, in wait_for_free_credits()
524 cifs_num_waiters_dec(server); in wait_for_free_credits()
526 spin_lock(&server->req_lock); in wait_for_free_credits()
528 in_flight = server->in_flight; in wait_for_free_credits()
529 spin_unlock(&server->req_lock); in wait_for_free_credits()
532 server->current_mid, in wait_for_free_credits()
533 server->conn_id, server->hostname, in wait_for_free_credits()
541 spin_lock(&server->req_lock); in wait_for_free_credits()
553 server->in_flight += num_credits; in wait_for_free_credits()
554 if (server->in_flight > server->max_in_flight) in wait_for_free_credits()
555 server->max_in_flight = server->in_flight; in wait_for_free_credits()
556 *instance = server->reconnect_instance; in wait_for_free_credits()
559 in_flight = server->in_flight; in wait_for_free_credits()
560 spin_unlock(&server->req_lock); in wait_for_free_credits()
562 trace_smb3_waitff_credits(server->current_mid, in wait_for_free_credits()
563 server->conn_id, server->hostname, scredits, in wait_for_free_credits()
573 int wait_for_free_request(struct TCP_Server_Info *server, const int flags, in wait_for_free_request() argument
576 return wait_for_free_credits(server, 1, -1, flags, in wait_for_free_request()
581 wait_for_compound_request(struct TCP_Server_Info *server, int num, in wait_for_compound_request() argument
587 credits = server->ops->get_credits_field(server, flags & CIFS_OP_MASK); in wait_for_compound_request()
589 spin_lock(&server->req_lock); in wait_for_compound_request()
591 in_flight = server->in_flight; in wait_for_compound_request()
610 if (server->in_flight == 0) { in wait_for_compound_request()
611 spin_unlock(&server->req_lock); in wait_for_compound_request()
612 trace_smb3_insufficient_credits(server->current_mid, in wait_for_compound_request()
613 server->conn_id, server->hostname, scredits, in wait_for_compound_request()
620 spin_unlock(&server->req_lock); in wait_for_compound_request()
622 return wait_for_free_credits(server, num, 60000, flags, in wait_for_compound_request()
627 cifs_wait_mtu_credits(struct TCP_Server_Info *server, size_t size, in cifs_wait_mtu_credits() argument
632 credits->instance = server->reconnect_instance; in cifs_wait_mtu_credits()
636 int wait_for_response(struct TCP_Server_Info *server, struct mid_q_entry *midQ) in wait_for_response() argument
640 error = wait_event_state(server->response_q, in wait_for_response()
655 cifs_call_async(struct TCP_Server_Info *server, struct smb_rqst *rqst, in cifs_call_async() argument
669 rc = wait_for_free_request(server, flags, &instance); in cifs_call_async()
677 cifs_server_lock(server); in cifs_call_async()
684 if (instance != server->reconnect_instance) { in cifs_call_async()
685 cifs_server_unlock(server); in cifs_call_async()
686 add_credits_and_wake_if(server, &credits, optype); in cifs_call_async()
690 mid = server->ops->setup_async_request(server, rqst); in cifs_call_async()
692 cifs_server_unlock(server); in cifs_call_async()
693 add_credits_and_wake_if(server, &credits, optype); in cifs_call_async()
704 spin_lock(&server->mid_queue_lock); in cifs_call_async()
705 list_add_tail(&mid->qhead, &server->pending_mid_q); in cifs_call_async()
706 spin_unlock(&server->mid_queue_lock); in cifs_call_async()
713 rc = smb_send_rqst(server, 1, rqst, flags); in cifs_call_async()
716 revert_current_mid(server, mid->credits); in cifs_call_async()
717 server->sequence_number -= 2; in cifs_call_async()
721 cifs_server_unlock(server); in cifs_call_async()
726 add_credits_and_wake_if(server, &credits, optype); in cifs_call_async()
730 int cifs_sync_mid_result(struct mid_q_entry *mid, struct TCP_Server_Info *server) in cifs_sync_mid_result() argument
737 spin_lock(&server->mid_queue_lock); in cifs_sync_mid_result()
740 spin_unlock(&server->mid_queue_lock); in cifs_sync_mid_result()
759 spin_unlock(&server->mid_queue_lock); in cifs_sync_mid_result()
765 spin_unlock(&server->mid_queue_lock); in cifs_sync_mid_result()
775 struct TCP_Server_Info *server = mid->server; in cifs_compound_callback() local
777 .value = server->ops->get_credits(mid), in cifs_compound_callback()
778 .instance = server->reconnect_instance, in cifs_compound_callback()
781 add_credits(server, &credits, mid->optype); in cifs_compound_callback()
812 struct TCP_Server_Info *server = NULL; in cifs_pick_channel() local
822 server = ses->chans[cur].server; in cifs_pick_channel()
823 if (!server || server->terminate) in cifs_pick_channel()
837 if (server->in_flight < min_in_flight) { in cifs_pick_channel()
838 min_in_flight = server->in_flight; in cifs_pick_channel()
841 if (server->in_flight > max_in_flight) in cifs_pick_channel()
842 max_in_flight = server->in_flight; in cifs_pick_channel()
849 server = ses->chans[index].server; in cifs_pick_channel()
852 return server; in cifs_pick_channel()
857 struct TCP_Server_Info *server, in compound_send_recv() argument
875 if (!ses || !ses->server || !server) { in compound_send_recv()
880 spin_lock(&server->srv_lock); in compound_send_recv()
881 if (server->tcpStatus == CifsExiting) { in compound_send_recv()
882 spin_unlock(&server->srv_lock); in compound_send_recv()
885 spin_unlock(&server->srv_lock); in compound_send_recv()
895 rc = wait_for_compound_request(server, num_rqst, flags, in compound_send_recv()
911 cifs_server_lock(server); in compound_send_recv()
920 if (instance != server->reconnect_instance) { in compound_send_recv()
921 cifs_server_unlock(server); in compound_send_recv()
923 add_credits(server, &credits[j], optype); in compound_send_recv()
928 midQ[i] = server->ops->setup_request(ses, server, &rqst[i]); in compound_send_recv()
930 revert_current_mid(server, i); in compound_send_recv()
933 cifs_server_unlock(server); in compound_send_recv()
937 add_credits(server, &credits[j], optype); in compound_send_recv()
953 rc = smb_send_rqst(server, num_rqst, rqst, flags); in compound_send_recv()
959 revert_current_mid(server, num_rqst); in compound_send_recv()
960 server->sequence_number -= 2; in compound_send_recv()
963 cifs_server_unlock(server); in compound_send_recv()
971 add_credits(server, &credits[i], optype); in compound_send_recv()
990 cifs_server_lock(server); in compound_send_recv()
991 smb311_update_preauth_hash(ses, server, rqst[0].rq_iov, rqst[0].rq_nvec); in compound_send_recv()
992 cifs_server_unlock(server); in compound_send_recv()
999 rc = wait_for_response(server, midQ[i]); in compound_send_recv()
1007 send_cancel(server, &rqst[i], midQ[i]); in compound_send_recv()
1023 rc = cifs_sync_mid_result(midQ[i], server); in compound_send_recv()
1040 HEADER_PREAMBLE_SIZE(server); in compound_send_recv()
1047 rc = server->ops->check_receive(midQ[i], server, in compound_send_recv()
1066 cifs_server_lock(server); in compound_send_recv()
1067 smb311_update_preauth_hash(ses, server, &iov, 1); in compound_send_recv()
1068 cifs_server_unlock(server); in compound_send_recv()
1090 struct TCP_Server_Info *server, in cifs_send_recv() argument
1094 return compound_send_recv(xid, ses, server, flags, 1, in cifs_send_recv()
1104 cifs_discard_remaining_data(struct TCP_Server_Info *server) in cifs_discard_remaining_data() argument
1106 unsigned int rfclen = server->pdu_size; in cifs_discard_remaining_data()
1107 size_t remaining = rfclen + HEADER_PREAMBLE_SIZE(server) - in cifs_discard_remaining_data()
1108 server->total_read; in cifs_discard_remaining_data()
1113 length = cifs_discard_from_socket(server, in cifs_discard_remaining_data()
1115 CIFSMaxBufSize + MAX_HEADER_SIZE(server))); in cifs_discard_remaining_data()
1118 server->total_read += length; in cifs_discard_remaining_data()
1126 __cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid, in __cifs_readv_discard() argument
1131 length = cifs_discard_remaining_data(server); in __cifs_readv_discard()
1133 mid->resp_buf = server->smallbuf; in __cifs_readv_discard()
1134 server->smallbuf = NULL; in __cifs_readv_discard()
1139 cifs_readv_discard(struct TCP_Server_Info *server, struct mid_q_entry *mid) in cifs_readv_discard() argument
1143 return __cifs_readv_discard(server, mid, rdata->result); in cifs_readv_discard()
1147 cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid) in cifs_readv_receive() argument
1152 char *buf = server->smallbuf; in cifs_readv_receive()
1153 unsigned int buflen = server->pdu_size + HEADER_PREAMBLE_SIZE(server); in cifs_readv_receive()
1164 len = min_t(unsigned int, buflen, server->vals->read_rsp_size) - in cifs_readv_receive()
1165 HEADER_SIZE(server) + 1; in cifs_readv_receive()
1167 length = cifs_read_from_socket(server, in cifs_readv_receive()
1168 buf + HEADER_SIZE(server) - 1, len); in cifs_readv_receive()
1171 server->total_read += length; in cifs_readv_receive()
1173 if (server->ops->is_session_expired && in cifs_readv_receive()
1174 server->ops->is_session_expired(buf)) { in cifs_readv_receive()
1175 cifs_reconnect(server, true); in cifs_readv_receive()
1179 if (server->ops->is_status_pending && in cifs_readv_receive()
1180 server->ops->is_status_pending(buf, server)) { in cifs_readv_receive()
1181 cifs_discard_remaining_data(server); in cifs_readv_receive()
1187 rdata->iov[0].iov_len = HEADER_PREAMBLE_SIZE(server); in cifs_readv_receive()
1188 rdata->iov[1].iov_base = buf + HEADER_PREAMBLE_SIZE(server); in cifs_readv_receive()
1190 server->total_read - HEADER_PREAMBLE_SIZE(server); in cifs_readv_receive()
1197 rdata->result = server->ops->map_error(buf, false); in cifs_readv_receive()
1202 return __cifs_readv_discard(server, mid, false); in cifs_readv_receive()
1206 if (server->total_read < server->vals->read_rsp_size) { in cifs_readv_receive()
1208 __func__, server->total_read, in cifs_readv_receive()
1209 server->vals->read_rsp_size); in cifs_readv_receive()
1211 return cifs_readv_discard(server, mid); in cifs_readv_receive()
1214 data_offset = server->ops->read_data_offset(buf) + in cifs_readv_receive()
1215 HEADER_PREAMBLE_SIZE(server); in cifs_readv_receive()
1216 if (data_offset < server->total_read) { in cifs_readv_receive()
1224 data_offset = server->total_read; in cifs_readv_receive()
1230 return cifs_readv_discard(server, mid); in cifs_readv_receive()
1234 __func__, server->total_read, data_offset); in cifs_readv_receive()
1236 len = data_offset - server->total_read; in cifs_readv_receive()
1239 length = cifs_read_from_socket(server, in cifs_readv_receive()
1240 buf + server->total_read, len); in cifs_readv_receive()
1243 server->total_read += length; in cifs_readv_receive()
1250 data_len = server->ops->read_data_length(buf, use_rdma_mr); in cifs_readv_receive()
1254 return cifs_readv_discard(server, mid); in cifs_readv_receive()
1262 length = cifs_read_iter_from_socket(server, &rdata->subreq.io_iter, in cifs_readv_receive()
1266 server->total_read += length; in cifs_readv_receive()
1269 server->total_read, buflen, data_len); in cifs_readv_receive()
1272 if (server->total_read < buflen) in cifs_readv_receive()
1273 return cifs_readv_discard(server, mid); in cifs_readv_receive()
1276 mid->resp_buf = server->smallbuf; in cifs_readv_receive()
1277 server->smallbuf = NULL; in cifs_readv_receive()