Lines Matching refs:serv
171 struct svc_xprt *xprt, struct svc_serv *serv) in svc_xprt_init() argument
177 xprt->xpt_server = serv; in svc_xprt_init()
191 struct svc_serv *serv, in __svc_xpo_create() argument
227 return xcl->xcl_ops->xpo_create(serv, net, sap, len, flags); in __svc_xpo_create()
255 void svc_add_new_perm_xprt(struct svc_serv *serv, struct svc_xprt *new) in svc_add_new_perm_xprt() argument
258 spin_lock_bh(&serv->sv_lock); in svc_add_new_perm_xprt()
259 list_add(&new->xpt_list, &serv->sv_permsocks); in svc_add_new_perm_xprt()
260 spin_unlock_bh(&serv->sv_lock); in svc_add_new_perm_xprt()
264 static int _svc_create_xprt(struct svc_serv *serv, const char *xprt_name, in _svc_create_xprt() argument
283 newxprt = __svc_xpo_create(xcl, serv, net, family, port, flags); in _svc_create_xprt()
289 svc_add_new_perm_xprt(serv, newxprt); in _svc_create_xprt()
300 int svc_create_xprt(struct svc_serv *serv, const char *xprt_name, in svc_create_xprt() argument
308 err = _svc_create_xprt(serv, xprt_name, net, family, port, flags, cred); in svc_create_xprt()
311 err = _svc_create_xprt(serv, xprt_name, net, family, port, flags, cred); in svc_create_xprt()
549 void svc_wake_up(struct svc_serv *serv) in svc_wake_up() argument
554 pool = &serv->sv_pools[0]; in svc_wake_up()
607 static void svc_check_conn_limits(struct svc_serv *serv) in svc_check_conn_limits() argument
609 unsigned int limit = serv->sv_maxconn ? serv->sv_maxconn : in svc_check_conn_limits()
610 (serv->sv_nrthreads+3) * 20; in svc_check_conn_limits()
612 if (serv->sv_tmpcnt > limit) { in svc_check_conn_limits()
614 spin_lock_bh(&serv->sv_lock); in svc_check_conn_limits()
615 if (!list_empty(&serv->sv_tempsocks)) { in svc_check_conn_limits()
618 serv->sv_name, serv->sv_maxconn ? in svc_check_conn_limits()
625 xprt = list_entry(serv->sv_tempsocks.prev, in svc_check_conn_limits()
631 spin_unlock_bh(&serv->sv_lock); in svc_check_conn_limits()
642 struct svc_serv *serv = rqstp->rq_server; in svc_alloc_arg() local
648 pages = (serv->sv_max_mesg + 2 * PAGE_SIZE) >> PAGE_SHIFT; in svc_alloc_arg()
761 static void svc_add_new_temp_xprt(struct svc_serv *serv, struct svc_xprt *newxpt) in svc_add_new_temp_xprt() argument
763 spin_lock_bh(&serv->sv_lock); in svc_add_new_temp_xprt()
765 list_add(&newxpt->xpt_list, &serv->sv_tempsocks); in svc_add_new_temp_xprt()
766 serv->sv_tmpcnt++; in svc_add_new_temp_xprt()
767 if (serv->sv_temptimer.function == NULL) { in svc_add_new_temp_xprt()
769 serv->sv_temptimer.function = svc_age_temp_xprts; in svc_add_new_temp_xprt()
770 mod_timer(&serv->sv_temptimer, in svc_add_new_temp_xprt()
773 spin_unlock_bh(&serv->sv_lock); in svc_add_new_temp_xprt()
779 struct svc_serv *serv = rqstp->rq_server; in svc_handle_xprt() local
801 svc_add_new_temp_xprt(serv, newxpt); in svc_handle_xprt()
815 rqstp->rq_reserved = serv->sv_max_mesg; in svc_handle_xprt()
833 struct svc_serv *serv = rqstp->rq_server; in svc_recv() local
873 if (serv->sv_stats) in svc_recv()
874 serv->sv_stats->netcnt++; in svc_recv()
939 struct svc_serv *serv = from_timer(serv, t, sv_temptimer); in svc_age_temp_xprts() local
945 if (!spin_trylock_bh(&serv->sv_lock)) { in svc_age_temp_xprts()
948 mod_timer(&serv->sv_temptimer, jiffies + HZ); in svc_age_temp_xprts()
952 list_for_each_safe(le, next, &serv->sv_tempsocks) { in svc_age_temp_xprts()
969 spin_unlock_bh(&serv->sv_lock); in svc_age_temp_xprts()
971 mod_timer(&serv->sv_temptimer, jiffies + svc_conn_age_period * HZ); in svc_age_temp_xprts()
980 void svc_age_temp_xprts_now(struct svc_serv *serv, struct sockaddr *server_addr) in svc_age_temp_xprts_now() argument
986 spin_lock_bh(&serv->sv_lock); in svc_age_temp_xprts_now()
987 list_for_each_safe(le, next, &serv->sv_tempsocks) { in svc_age_temp_xprts_now()
995 spin_unlock_bh(&serv->sv_lock); in svc_age_temp_xprts_now()
1028 struct svc_serv *serv = xprt->xpt_server; in svc_delete_xprt() local
1040 spin_lock_bh(&serv->sv_lock); in svc_delete_xprt()
1044 serv->sv_tmpcnt--; in svc_delete_xprt()
1045 spin_unlock_bh(&serv->sv_lock); in svc_delete_xprt()
1070 static int svc_close_list(struct svc_serv *serv, struct list_head *xprt_list, struct net *net) in svc_close_list() argument
1075 spin_lock_bh(&serv->sv_lock); in svc_close_list()
1083 spin_unlock_bh(&serv->sv_lock); in svc_close_list()
1087 static struct svc_xprt *svc_dequeue_net(struct svc_serv *serv, struct net *net) in svc_dequeue_net() argument
1094 for (i = 0; i < serv->sv_nrpools; i++) { in svc_dequeue_net()
1095 pool = &serv->sv_pools[i]; in svc_dequeue_net()
1110 static void svc_clean_up_xprts(struct svc_serv *serv, struct net *net) in svc_clean_up_xprts() argument
1114 while ((xprt = svc_dequeue_net(serv, net))) { in svc_clean_up_xprts()
1132 void svc_close_net(struct svc_serv *serv, struct net *net) in svc_close_net() argument
1136 while (svc_close_list(serv, &serv->sv_permsocks, net) + in svc_close_net()
1137 svc_close_list(serv, &serv->sv_tempsocks, net)) { in svc_close_net()
1139 svc_clean_up_xprts(serv, net); in svc_close_net()
1282 struct svc_xprt *svc_find_xprt(struct svc_serv *serv, const char *xcl_name, in svc_find_xprt() argument
1290 if (serv == NULL || xcl_name == NULL) in svc_find_xprt()
1293 spin_lock_bh(&serv->sv_lock); in svc_find_xprt()
1294 list_for_each_entry(xprt, &serv->sv_permsocks, xpt_list) { in svc_find_xprt()
1307 spin_unlock_bh(&serv->sv_lock); in svc_find_xprt()
1337 int svc_xprt_names(struct svc_serv *serv, char *buf, const int buflen) in svc_xprt_names() argument
1344 if (!serv) in svc_xprt_names()
1347 spin_lock_bh(&serv->sv_lock); in svc_xprt_names()
1351 list_for_each_entry(xprt, &serv->sv_permsocks, xpt_list) { in svc_xprt_names()
1364 spin_unlock_bh(&serv->sv_lock); in svc_xprt_names()
1375 struct svc_serv *serv = m->private; in svc_pool_stats_start() local
1381 return (pidx > serv->sv_nrpools ? NULL : &serv->sv_pools[pidx-1]); in svc_pool_stats_start()
1387 struct svc_serv *serv = m->private; in svc_pool_stats_next() local
1392 pool = &serv->sv_pools[0]; in svc_pool_stats_next()
1394 unsigned int pidx = (pool - &serv->sv_pools[0]); in svc_pool_stats_next()
1395 if (pidx < serv->sv_nrpools-1) in svc_pool_stats_next()
1396 pool = &serv->sv_pools[pidx+1]; in svc_pool_stats_next()
1434 int svc_pool_stats_open(struct svc_serv *serv, struct file *file) in svc_pool_stats_open() argument
1440 ((struct seq_file *) file->private_data)->private = serv; in svc_pool_stats_open()