• Home
  • Raw
  • Download

Lines Matching refs:req

185 	struct rpc_rqst *req = task->tk_rqstp;  in xprt_reserve_xprt()  local
194 if (req != NULL) in xprt_reserve_xprt()
195 req->rq_ntrans++; in xprt_reserve_xprt()
204 if (req == NULL) in xprt_reserve_xprt()
206 else if (!req->rq_ntrans) in xprt_reserve_xprt()
236 struct rpc_rqst *req = task->tk_rqstp; in xprt_reserve_xprt_cong() local
244 if (req == NULL) { in xprt_reserve_xprt_cong()
250 req->rq_ntrans++; in xprt_reserve_xprt_cong()
255 if (req) in xprt_reserve_xprt_cong()
256 __xprt_put_cong(xprt, req); in xprt_reserve_xprt_cong()
260 if (req == NULL) in xprt_reserve_xprt_cong()
262 else if (!req->rq_ntrans) in xprt_reserve_xprt_cong()
284 struct rpc_rqst *req; in __xprt_lock_write_func() local
286 req = task->tk_rqstp; in __xprt_lock_write_func()
288 if (req) in __xprt_lock_write_func()
289 req->rq_ntrans++; in __xprt_lock_write_func()
307 struct rpc_rqst *req; in __xprt_lock_write_cong_func() local
309 req = task->tk_rqstp; in __xprt_lock_write_cong_func()
310 if (req == NULL) { in __xprt_lock_write_cong_func()
316 req->rq_ntrans++; in __xprt_lock_write_cong_func()
338 struct rpc_rqst *req = task->tk_rqstp; in xprt_task_clear_bytes_sent() local
339 if (req != NULL) in xprt_task_clear_bytes_sent()
340 req->rq_bytes_sent = 0; in xprt_task_clear_bytes_sent()
393 struct rpc_rqst *req = task->tk_rqstp; in __xprt_get_cong() local
395 if (req->rq_cong) in __xprt_get_cong()
401 req->rq_cong = 1; in __xprt_get_cong()
411 __xprt_put_cong(struct rpc_xprt *xprt, struct rpc_rqst *req) in __xprt_put_cong() argument
413 if (!req->rq_cong) in __xprt_put_cong()
415 req->rq_cong = 0; in __xprt_put_cong()
428 struct rpc_rqst *req = task->tk_rqstp; in xprt_release_rqst_cong() local
430 __xprt_put_cong(req->rq_xprt, req); in xprt_release_rqst_cong()
452 struct rpc_rqst *req = task->tk_rqstp; in xprt_adjust_cwnd() local
470 __xprt_put_cong(xprt, req); in xprt_adjust_cwnd()
500 struct rpc_rqst *req = task->tk_rqstp; in xprt_wait_for_buffer_space() local
501 struct rpc_xprt *xprt = req->rq_xprt; in xprt_wait_for_buffer_space()
503 task->tk_timeout = RPC_IS_SOFT(task) ? req->rq_timeout : 0; in xprt_wait_for_buffer_space()
551 struct rpc_rqst *req = task->tk_rqstp; in xprt_set_retrans_timeout_rtt() local
555 task->tk_timeout <<= rpc_ntimeo(rtt, timer) + req->rq_retries; in xprt_set_retrans_timeout_rtt()
561 static void xprt_reset_majortimeo(struct rpc_rqst *req) in xprt_reset_majortimeo() argument
563 const struct rpc_timeout *to = req->rq_task->tk_client->cl_timeout; in xprt_reset_majortimeo()
565 req->rq_majortimeo = req->rq_timeout; in xprt_reset_majortimeo()
567 req->rq_majortimeo <<= to->to_retries; in xprt_reset_majortimeo()
569 req->rq_majortimeo += to->to_increment * to->to_retries; in xprt_reset_majortimeo()
570 if (req->rq_majortimeo > to->to_maxval || req->rq_majortimeo == 0) in xprt_reset_majortimeo()
571 req->rq_majortimeo = to->to_maxval; in xprt_reset_majortimeo()
572 req->rq_majortimeo += jiffies; in xprt_reset_majortimeo()
580 int xprt_adjust_timeout(struct rpc_rqst *req) in xprt_adjust_timeout() argument
582 struct rpc_xprt *xprt = req->rq_xprt; in xprt_adjust_timeout()
583 const struct rpc_timeout *to = req->rq_task->tk_client->cl_timeout; in xprt_adjust_timeout()
586 if (time_before(jiffies, req->rq_majortimeo)) { in xprt_adjust_timeout()
588 req->rq_timeout <<= 1; in xprt_adjust_timeout()
590 req->rq_timeout += to->to_increment; in xprt_adjust_timeout()
591 if (to->to_maxval && req->rq_timeout >= to->to_maxval) in xprt_adjust_timeout()
592 req->rq_timeout = to->to_maxval; in xprt_adjust_timeout()
593 req->rq_retries++; in xprt_adjust_timeout()
595 req->rq_timeout = to->to_initval; in xprt_adjust_timeout()
596 req->rq_retries = 0; in xprt_adjust_timeout()
597 xprt_reset_majortimeo(req); in xprt_adjust_timeout()
600 rpc_init_rtt(req->rq_task->tk_client->cl_rtt, to->to_initval); in xprt_adjust_timeout()
605 if (req->rq_timeout == 0) { in xprt_adjust_timeout()
607 req->rq_timeout = 5 * HZ; in xprt_adjust_timeout()
855 void xprt_pin_rqst(struct rpc_rqst *req) in xprt_pin_rqst() argument
857 set_bit(RPC_TASK_MSG_RECV, &req->rq_task->tk_runstate); in xprt_pin_rqst()
867 void xprt_unpin_rqst(struct rpc_rqst *req) in xprt_unpin_rqst() argument
869 struct rpc_task *task = req->rq_task; in xprt_unpin_rqst()
877 static void xprt_wait_on_pinned_rqst(struct rpc_rqst *req) in xprt_wait_on_pinned_rqst() argument
878 __must_hold(&req->rq_xprt->recv_lock) in xprt_wait_on_pinned_rqst()
880 struct rpc_task *task = req->rq_task; in xprt_wait_on_pinned_rqst()
883 spin_unlock(&req->rq_xprt->recv_lock); in xprt_wait_on_pinned_rqst()
888 spin_lock(&req->rq_xprt->recv_lock); in xprt_wait_on_pinned_rqst()
894 struct rpc_rqst *req = task->tk_rqstp; in xprt_update_rtt() local
897 long m = usecs_to_jiffies(ktime_to_us(req->rq_rtt)); in xprt_update_rtt()
900 if (req->rq_ntrans == 1) in xprt_update_rtt()
902 rpc_set_timeo(rtt, timer, req->rq_ntrans - 1); in xprt_update_rtt()
915 struct rpc_rqst *req = task->tk_rqstp; in xprt_complete_rqst() local
916 struct rpc_xprt *xprt = req->rq_xprt; in xprt_complete_rqst()
919 task->tk_pid, ntohl(req->rq_xid), copied); in xprt_complete_rqst()
920 trace_xprt_complete_rqst(xprt, req->rq_xid, copied); in xprt_complete_rqst()
923 req->rq_rtt = ktime_sub(ktime_get(), req->rq_xtime); in xprt_complete_rqst()
927 list_del_init(&req->rq_list); in xprt_complete_rqst()
928 req->rq_private_buf.len = copied; in xprt_complete_rqst()
932 req->rq_reply_bytes_recvd = copied; in xprt_complete_rqst()
939 struct rpc_rqst *req = task->tk_rqstp; in xprt_timer() local
940 struct rpc_xprt *xprt = req->rq_xprt; in xprt_timer()
946 if (!req->rq_reply_bytes_recvd) { in xprt_timer()
960 struct rpc_rqst *req = task->tk_rqstp; in xprt_prepare_transmit() local
961 struct rpc_xprt *xprt = req->rq_xprt; in xprt_prepare_transmit()
967 if (!req->rq_bytes_sent) { in xprt_prepare_transmit()
968 if (req->rq_reply_bytes_recvd) { in xprt_prepare_transmit()
969 task->tk_status = req->rq_reply_bytes_recvd; in xprt_prepare_transmit()
974 && req->rq_connect_cookie == xprt->connect_cookie) { in xprt_prepare_transmit()
1003 struct rpc_rqst *req = task->tk_rqstp; in xprt_transmit() local
1004 struct rpc_xprt *xprt = req->rq_xprt; in xprt_transmit()
1008 dprintk("RPC: %5u xprt_transmit(%u)\n", task->tk_pid, req->rq_slen); in xprt_transmit()
1010 if (!req->rq_reply_bytes_recvd) { in xprt_transmit()
1011 if (list_empty(&req->rq_list) && rpc_reply_expected(task)) { in xprt_transmit()
1016 memcpy(&req->rq_private_buf, &req->rq_rcv_buf, in xprt_transmit()
1017 sizeof(req->rq_private_buf)); in xprt_transmit()
1020 list_add_tail(&req->rq_list, &xprt->recv); in xprt_transmit()
1022 xprt_reset_majortimeo(req); in xprt_transmit()
1026 } else if (!req->rq_bytes_sent) in xprt_transmit()
1030 req->rq_xtime = ktime_get(); in xprt_transmit()
1032 trace_xprt_transmit(xprt, req->rq_xid, status); in xprt_transmit()
1055 req->rq_connect_cookie = connect_cookie; in xprt_transmit()
1056 if (rpc_reply_expected(task) && !READ_ONCE(req->rq_reply_bytes_recvd)) { in xprt_transmit()
1063 if (!req->rq_reply_bytes_recvd) { in xprt_transmit()
1107 struct rpc_rqst *req = ERR_PTR(-EAGAIN); in xprt_dynamic_alloc_slot() local
1112 req = kzalloc(sizeof(struct rpc_rqst), GFP_NOFS); in xprt_dynamic_alloc_slot()
1114 if (req != NULL) in xprt_dynamic_alloc_slot()
1117 req = ERR_PTR(-ENOMEM); in xprt_dynamic_alloc_slot()
1119 return req; in xprt_dynamic_alloc_slot()
1122 static bool xprt_dynamic_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req) in xprt_dynamic_free_slot() argument
1125 kfree(req); in xprt_dynamic_free_slot()
1133 struct rpc_rqst *req; in xprt_alloc_slot() local
1137 req = list_entry(xprt->free.next, struct rpc_rqst, rq_list); in xprt_alloc_slot()
1138 list_del(&req->rq_list); in xprt_alloc_slot()
1141 req = xprt_dynamic_alloc_slot(xprt); in xprt_alloc_slot()
1142 if (!IS_ERR(req)) in xprt_alloc_slot()
1144 switch (PTR_ERR(req)) { in xprt_alloc_slot()
1160 task->tk_rqstp = req; in xprt_alloc_slot()
1180 static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req) in xprt_free_slot() argument
1183 if (!xprt_dynamic_free_slot(xprt, req)) { in xprt_free_slot()
1184 memset(req, 0, sizeof(*req)); /* mark unused */ in xprt_free_slot()
1185 list_add(&req->rq_list, &xprt->free); in xprt_free_slot()
1193 struct rpc_rqst *req; in xprt_free_all_slots() local
1195 req = list_first_entry(&xprt->free, struct rpc_rqst, rq_list); in xprt_free_all_slots()
1196 list_del(&req->rq_list); in xprt_free_all_slots()
1197 kfree(req); in xprt_free_all_slots()
1206 struct rpc_rqst *req; in xprt_alloc() local
1216 req = kzalloc(sizeof(struct rpc_rqst), GFP_KERNEL); in xprt_alloc()
1217 if (!req) in xprt_alloc()
1219 list_add(&req->rq_list, &xprt->free); in xprt_alloc()
1301 struct rpc_rqst *req = task->tk_rqstp; in xprt_request_init() local
1303 INIT_LIST_HEAD(&req->rq_list); in xprt_request_init()
1304 req->rq_timeout = task->tk_client->cl_timeout->to_initval; in xprt_request_init()
1305 req->rq_task = task; in xprt_request_init()
1306 req->rq_xprt = xprt; in xprt_request_init()
1307 req->rq_buffer = NULL; in xprt_request_init()
1308 req->rq_xid = xprt_alloc_xid(xprt); in xprt_request_init()
1309 req->rq_connect_cookie = xprt->connect_cookie - 1; in xprt_request_init()
1310 req->rq_bytes_sent = 0; in xprt_request_init()
1311 req->rq_snd_buf.len = 0; in xprt_request_init()
1312 req->rq_snd_buf.buflen = 0; in xprt_request_init()
1313 req->rq_rcv_buf.len = 0; in xprt_request_init()
1314 req->rq_rcv_buf.buflen = 0; in xprt_request_init()
1315 req->rq_release_snd_buf = NULL; in xprt_request_init()
1316 xprt_reset_majortimeo(req); in xprt_request_init()
1318 req, ntohl(req->rq_xid)); in xprt_request_init()
1329 struct rpc_rqst *req = task->tk_rqstp; in xprt_release() local
1331 if (req == NULL) { in xprt_release()
1340 xprt = req->rq_xprt; in xprt_release()
1346 if (!list_empty(&req->rq_list)) { in xprt_release()
1347 list_del_init(&req->rq_list); in xprt_release()
1348 xprt_wait_on_pinned_rqst(req); in xprt_release()
1358 if (req->rq_buffer) in xprt_release()
1361 if (req->rq_cred != NULL) in xprt_release()
1362 put_rpccred(req->rq_cred); in xprt_release()
1364 if (req->rq_release_snd_buf) in xprt_release()
1365 req->rq_release_snd_buf(req); in xprt_release()
1367 dprintk("RPC: %5u release request %p\n", task->tk_pid, req); in xprt_release()
1368 if (likely(!bc_prealloc(req))) in xprt_release()
1369 xprt_free_slot(xprt, req); in xprt_release()
1371 xprt_free_bc_request(req); in xprt_release()