Skip to content

Commit

Permalink
SUNRPC: clear svc pools lists helper introduced
Browse files Browse the repository at this point in the history
This patch moves removing of service transport from it's pools ready lists to
separated function. Also this clear is now done with list_for_each_entry_safe()
helper.
This is a precursor patch, which would be usefull with service shutdown in
network namespace context, introduced later in the series.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Stanislav Kinsbursky authored and Trond Myklebust committed Feb 15, 2012
1 parent ef159e9 commit 6f51336
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions net/sunrpc/svc_xprt.c
Original file line number Diff line number Diff line change
Expand Up @@ -932,26 +932,33 @@ static void svc_close_list(struct list_head *xprt_list)
}
}

void svc_close_all(struct svc_serv *serv)
static void svc_clear_pools(struct svc_serv *serv)
{
struct svc_pool *pool;
struct svc_xprt *xprt;
struct svc_xprt *tmp;
int i;

svc_close_list(&serv->sv_tempsocks);
svc_close_list(&serv->sv_permsocks);

for (i = 0; i < serv->sv_nrpools; i++) {
pool = &serv->sv_pools[i];

spin_lock_bh(&pool->sp_lock);
while (!list_empty(&pool->sp_sockets)) {
xprt = list_first_entry(&pool->sp_sockets, struct svc_xprt, xpt_ready);
list_for_each_entry_safe(xprt, tmp, &pool->sp_sockets, xpt_ready) {
list_del_init(&xprt->xpt_ready);
}
spin_unlock_bh(&pool->sp_lock);
}
}

void svc_close_all(struct svc_serv *serv)
{
struct svc_xprt *xprt;
struct svc_xprt *tmp;

svc_close_list(&serv->sv_tempsocks);
svc_close_list(&serv->sv_permsocks);

svc_clear_pools(serv);
/*
* At this point the sp_sockets lists will stay empty, since
* svc_enqueue will not add new entries without taking the
Expand Down

0 comments on commit 6f51336

Please sign in to comment.