Lines Matching refs:xprt
38 static inline int xprt_need_to_requeue(struct rpc_xprt *xprt) in xprt_need_to_requeue() argument
40 return xprt->bc_alloc_count > 0; in xprt_need_to_requeue()
43 static inline void xprt_inc_alloc_count(struct rpc_xprt *xprt, unsigned int n) in xprt_inc_alloc_count() argument
45 xprt->bc_alloc_count += n; in xprt_inc_alloc_count()
48 static inline int xprt_dec_alloc_count(struct rpc_xprt *xprt, unsigned int n) in xprt_dec_alloc_count() argument
50 return xprt->bc_alloc_count -= n; in xprt_dec_alloc_count()
88 int xprt_setup_backchannel(struct rpc_xprt *xprt, unsigned int min_reqs) in xprt_setup_backchannel() argument
119 req->rq_xprt = xprt; in xprt_setup_backchannel()
158 spin_lock_bh(&xprt->bc_pa_lock); in xprt_setup_backchannel()
159 list_splice(&tmp_list, &xprt->bc_pa_list); in xprt_setup_backchannel()
160 xprt_inc_alloc_count(xprt, min_reqs); in xprt_setup_backchannel()
161 spin_unlock_bh(&xprt->bc_pa_lock); in xprt_setup_backchannel()
189 void xprt_destroy_backchannel(struct rpc_xprt *xprt, unsigned int max_reqs) in xprt_destroy_backchannel() argument
198 spin_lock_bh(&xprt->bc_pa_lock); in xprt_destroy_backchannel()
199 xprt_dec_alloc_count(xprt, max_reqs); in xprt_destroy_backchannel()
200 list_for_each_entry_safe(req, tmp, &xprt->bc_pa_list, rq_bc_pa_list) { in xprt_destroy_backchannel()
207 spin_unlock_bh(&xprt->bc_pa_lock); in xprt_destroy_backchannel()
211 list_empty(&xprt->bc_pa_list) ? "true" : "false"); in xprt_destroy_backchannel()
215 static struct rpc_rqst *xprt_alloc_bc_request(struct rpc_xprt *xprt, __be32 xid) in xprt_alloc_bc_request() argument
220 if (list_empty(&xprt->bc_pa_list)) in xprt_alloc_bc_request()
223 req = list_first_entry(&xprt->bc_pa_list, struct rpc_rqst, in xprt_alloc_bc_request()
230 req->rq_connect_cookie = xprt->connect_cookie; in xprt_alloc_bc_request()
242 struct rpc_xprt *xprt = req->rq_xprt; in xprt_free_bc_request() local
246 req->rq_connect_cookie = xprt->connect_cookie - 1; in xprt_free_bc_request()
252 if (!xprt_need_to_requeue(xprt)) { in xprt_free_bc_request()
268 spin_lock_bh(&xprt->bc_pa_lock); in xprt_free_bc_request()
269 list_add_tail(&req->rq_bc_pa_list, &xprt->bc_pa_list); in xprt_free_bc_request()
270 spin_unlock_bh(&xprt->bc_pa_lock); in xprt_free_bc_request()
284 struct rpc_rqst *xprt_lookup_bc_request(struct rpc_xprt *xprt, __be32 xid) in xprt_lookup_bc_request() argument
288 spin_lock(&xprt->bc_pa_lock); in xprt_lookup_bc_request()
289 list_for_each_entry(req, &xprt->bc_pa_list, rq_bc_pa_list) { in xprt_lookup_bc_request()
290 if (req->rq_connect_cookie != xprt->connect_cookie) in xprt_lookup_bc_request()
295 req = xprt_alloc_bc_request(xprt, xid); in xprt_lookup_bc_request()
297 spin_unlock(&xprt->bc_pa_lock); in xprt_lookup_bc_request()
309 struct rpc_xprt *xprt = req->rq_xprt; in xprt_complete_bc_request() local
310 struct svc_serv *bc_serv = xprt->bc_serv; in xprt_complete_bc_request()
312 spin_lock(&xprt->bc_pa_lock); in xprt_complete_bc_request()
314 spin_unlock(&xprt->bc_pa_lock); in xprt_complete_bc_request()