Lines Matching refs:hostp

71 get_nlm_rpc_fromcache(struct nlm_host *hostp, int vers)
76 ASSERT(MUTEX_HELD(&hostp->nh_lock));
77 if (TAILQ_EMPTY(&hostp->nh_rpchc))
80 TAILQ_FOREACH(rpcp, &hostp->nh_rpchc, nr_link) {
90 TAILQ_REMOVE(&hostp->nh_rpchc, rpcp, nr_link);
99 update_host_rpcbinding(struct nlm_host *hostp, int vers)
103 ASSERT(MUTEX_HELD(&hostp->nh_lock));
110 hostp->nh_rpcb_state = NRPCB_UPDATE_INPROGRESS;
111 hostp->nh_rpcb_ustat = RPC_SUCCESS;
112 mutex_exit(&hostp->nh_lock);
114 stat = rpcbind_getaddr(&hostp->nh_knc, NLM_PROG, vers, &hostp->nh_addr);
115 mutex_enter(&hostp->nh_lock);
117 hostp->nh_rpcb_state = ((stat == RPC_SUCCESS) ?
120 hostp->nh_rpcb_ustat = stat;
121 cv_broadcast(&hostp->nh_rpcb_cv);
131 refresh_nlm_rpc(struct nlm_host *hostp, nlm_rpc_t *rpcp)
138 ret = clnt_tli_kcreate(&hostp->nh_knc, &hostp->nh_addr,
157 ret = clnt_tli_kinit(rpcp->nr_handle, &hostp->nh_knc,
158 &hostp->nh_addr, 0, NLM_RPC_RETRIES, CRED());
192 nlm_host_get_rpc(struct nlm_host *hostp, int vers, nlm_rpc_t **rpcpp)
197 mutex_enter(&hostp->nh_lock);
207 while (hostp->nh_rpcb_state != NRPCB_UPDATED) {
208 if (hostp->nh_rpcb_state == NRPCB_UPDATE_INPROGRESS) {
209 rc = cv_wait_sig(&hostp->nh_rpcb_cv, &hostp->nh_lock);
211 mutex_exit(&hostp->nh_lock);
222 if (hostp->nh_rpcb_state == NRPCB_NEED_UPDATE)
223 update_host_rpcbinding(hostp, vers);
230 if (hostp->nh_rpcb_ustat != RPC_SUCCESS) {
231 mutex_exit(&hostp->nh_lock);
236 rpcp = get_nlm_rpc_fromcache(hostp, vers);
237 mutex_exit(&hostp->nh_lock);
250 rc = refresh_nlm_rpc(hostp, rpcp);
259 mutex_enter(&hostp->nh_lock);
260 hostp->nh_rpcb_state = NRPCB_NEED_UPDATE;
261 nlm_host_rele_rpc_locked(hostp, rpcp);
269 DTRACE_PROBE2(end, struct nlm_host *, hostp,
277 nlm_host_rele_rpc(struct nlm_host *hostp, nlm_rpc_t *rpcp)
279 mutex_enter(&hostp->nh_lock);
280 nlm_host_rele_rpc_locked(hostp, rpcp);
281 mutex_exit(&hostp->nh_lock);
285 nlm_host_rele_rpc_locked(struct nlm_host *hostp, nlm_rpc_t *rpcp)
287 ASSERT(mutex_owned(&hostp->nh_lock));
288 TAILQ_INSERT_HEAD(&hostp->nh_rpchc, rpcp, nr_link);
301 nlm_host_invalidate_binding(struct nlm_host *hostp)
303 mutex_enter(&hostp->nh_lock);
304 hostp->nh_rpcb_state = NRPCB_NEED_UPDATE;
305 mutex_exit(&hostp->nh_lock);
317 nlm_rpc_cache_destroy(struct nlm_host *hostp)
328 while ((rpcp = TAILQ_FIRST(&hostp->nh_rpchc)) != NULL) {
329 TAILQ_REMOVE(&hostp->nh_rpchc, rpcp, nr_link);