Lines Matching refs:serv

153 		   struct svc_xprt *xprt, struct svc_serv *serv)  in svc_xprt_init()  argument
159 xprt->xpt_server = serv; in svc_xprt_init()
173 struct svc_serv *serv, in __svc_xpo_create() argument
209 return xcl->xcl_ops->xpo_create(serv, net, sap, len, flags); in __svc_xpo_create()
237 void svc_add_new_perm_xprt(struct svc_serv *serv, struct svc_xprt *new) in svc_add_new_perm_xprt() argument
240 spin_lock_bh(&serv->sv_lock); in svc_add_new_perm_xprt()
241 list_add(&new->xpt_list, &serv->sv_permsocks); in svc_add_new_perm_xprt()
242 spin_unlock_bh(&serv->sv_lock); in svc_add_new_perm_xprt()
246 int svc_create_xprt(struct svc_serv *serv, const char *xprt_name, in svc_create_xprt() argument
265 newxprt = __svc_xpo_create(xcl, serv, net, family, port, flags); in svc_create_xprt()
270 svc_add_new_perm_xprt(serv, newxprt); in svc_create_xprt()
508 void svc_wake_up(struct svc_serv *serv) in svc_wake_up() argument
513 pool = &serv->sv_pools[0]; in svc_wake_up()
567 static void svc_check_conn_limits(struct svc_serv *serv) in svc_check_conn_limits() argument
569 unsigned int limit = serv->sv_maxconn ? serv->sv_maxconn : in svc_check_conn_limits()
570 (serv->sv_nrthreads+3) * 20; in svc_check_conn_limits()
572 if (serv->sv_tmpcnt > limit) { in svc_check_conn_limits()
574 spin_lock_bh(&serv->sv_lock); in svc_check_conn_limits()
575 if (!list_empty(&serv->sv_tempsocks)) { in svc_check_conn_limits()
578 serv->sv_name, serv->sv_maxconn ? in svc_check_conn_limits()
585 xprt = list_entry(serv->sv_tempsocks.prev, in svc_check_conn_limits()
591 spin_unlock_bh(&serv->sv_lock); in svc_check_conn_limits()
602 struct svc_serv *serv = rqstp->rq_server; in svc_alloc_arg() local
608 pages = (serv->sv_max_mesg + PAGE_SIZE) / PAGE_SIZE; in svc_alloc_arg()
724 static void svc_add_new_temp_xprt(struct svc_serv *serv, struct svc_xprt *newxpt) in svc_add_new_temp_xprt() argument
726 spin_lock_bh(&serv->sv_lock); in svc_add_new_temp_xprt()
728 list_add(&newxpt->xpt_list, &serv->sv_tempsocks); in svc_add_new_temp_xprt()
729 serv->sv_tmpcnt++; in svc_add_new_temp_xprt()
730 if (serv->sv_temptimer.function == NULL) { in svc_add_new_temp_xprt()
732 setup_timer(&serv->sv_temptimer, svc_age_temp_xprts, in svc_add_new_temp_xprt()
733 (unsigned long)serv); in svc_add_new_temp_xprt()
734 mod_timer(&serv->sv_temptimer, in svc_add_new_temp_xprt()
737 spin_unlock_bh(&serv->sv_lock); in svc_add_new_temp_xprt()
743 struct svc_serv *serv = rqstp->rq_server; in svc_handle_xprt() local
762 svc_add_new_temp_xprt(serv, newxpt); in svc_handle_xprt()
776 rqstp->rq_reserved = serv->sv_max_mesg; in svc_handle_xprt()
794 struct svc_serv *serv = rqstp->rq_server; in svc_recv() local
837 if (serv->sv_stats) in svc_recv()
838 serv->sv_stats->netcnt++; in svc_recv()
906 struct svc_serv *serv = (struct svc_serv *)closure; in svc_age_temp_xprts() local
912 if (!spin_trylock_bh(&serv->sv_lock)) { in svc_age_temp_xprts()
915 mod_timer(&serv->sv_temptimer, jiffies + HZ); in svc_age_temp_xprts()
919 list_for_each_safe(le, next, &serv->sv_tempsocks) { in svc_age_temp_xprts()
936 spin_unlock_bh(&serv->sv_lock); in svc_age_temp_xprts()
938 mod_timer(&serv->sv_temptimer, jiffies + svc_conn_age_period * HZ); in svc_age_temp_xprts()
959 struct svc_serv *serv = xprt->xpt_server; in svc_delete_xprt() local
969 spin_lock_bh(&serv->sv_lock); in svc_delete_xprt()
973 serv->sv_tmpcnt--; in svc_delete_xprt()
974 spin_unlock_bh(&serv->sv_lock); in svc_delete_xprt()
999 static int svc_close_list(struct svc_serv *serv, struct list_head *xprt_list, struct net *net) in svc_close_list() argument
1004 spin_lock(&serv->sv_lock); in svc_close_list()
1012 spin_unlock(&serv->sv_lock); in svc_close_list()
1016 static struct svc_xprt *svc_dequeue_net(struct svc_serv *serv, struct net *net) in svc_dequeue_net() argument
1023 for (i = 0; i < serv->sv_nrpools; i++) { in svc_dequeue_net()
1024 pool = &serv->sv_pools[i]; in svc_dequeue_net()
1039 static void svc_clean_up_xprts(struct svc_serv *serv, struct net *net) in svc_clean_up_xprts() argument
1043 while ((xprt = svc_dequeue_net(serv, net))) { in svc_clean_up_xprts()
1061 void svc_close_net(struct svc_serv *serv, struct net *net) in svc_close_net() argument
1065 while (svc_close_list(serv, &serv->sv_permsocks, net) + in svc_close_net()
1066 svc_close_list(serv, &serv->sv_tempsocks, net)) { in svc_close_net()
1068 svc_clean_up_xprts(serv, net); in svc_close_net()
1208 struct svc_xprt *svc_find_xprt(struct svc_serv *serv, const char *xcl_name, in svc_find_xprt() argument
1216 if (serv == NULL || xcl_name == NULL) in svc_find_xprt()
1219 spin_lock_bh(&serv->sv_lock); in svc_find_xprt()
1220 list_for_each_entry(xprt, &serv->sv_permsocks, xpt_list) { in svc_find_xprt()
1233 spin_unlock_bh(&serv->sv_lock); in svc_find_xprt()
1263 int svc_xprt_names(struct svc_serv *serv, char *buf, const int buflen) in svc_xprt_names() argument
1270 if (!serv) in svc_xprt_names()
1273 spin_lock_bh(&serv->sv_lock); in svc_xprt_names()
1277 list_for_each_entry(xprt, &serv->sv_permsocks, xpt_list) { in svc_xprt_names()
1290 spin_unlock_bh(&serv->sv_lock); in svc_xprt_names()
1301 struct svc_serv *serv = m->private; in svc_pool_stats_start() local
1307 return (pidx > serv->sv_nrpools ? NULL : &serv->sv_pools[pidx-1]); in svc_pool_stats_start()
1313 struct svc_serv *serv = m->private; in svc_pool_stats_next() local
1318 pool = &serv->sv_pools[0]; in svc_pool_stats_next()
1320 unsigned int pidx = (pool - &serv->sv_pools[0]); in svc_pool_stats_next()
1321 if (pidx < serv->sv_nrpools-1) in svc_pool_stats_next()
1322 pool = &serv->sv_pools[pidx+1]; in svc_pool_stats_next()
1360 int svc_pool_stats_open(struct svc_serv *serv, struct file *file) in svc_pool_stats_open() argument
1366 ((struct seq_file *) file->private_data)->private = serv; in svc_pool_stats_open()