SUNRPC: new svc_bind() routine introduced
This new routine is responsible for service registration in a specified network context. The idea is to separate service creation from per-net operations. Note also: since registering service with svc_bind() can fail, the service will be destroyed and during destruction it will try to unregister itself from rpcbind. In this case unregistration has to be skipped. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
committed by
J. Bruce Fields
parent
c52226daf5
commit
9793f7c889
@@ -180,14 +180,16 @@ void rpcb_put_local(struct net *net)
|
||||
struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
|
||||
struct rpc_clnt *clnt = sn->rpcb_local_clnt;
|
||||
struct rpc_clnt *clnt4 = sn->rpcb_local_clnt4;
|
||||
int shutdown;
|
||||
int shutdown = 0;
|
||||
|
||||
spin_lock(&sn->rpcb_clnt_lock);
|
||||
if (--sn->rpcb_users == 0) {
|
||||
sn->rpcb_local_clnt = NULL;
|
||||
sn->rpcb_local_clnt4 = NULL;
|
||||
if (sn->rpcb_users) {
|
||||
if (--sn->rpcb_users == 0) {
|
||||
sn->rpcb_local_clnt = NULL;
|
||||
sn->rpcb_local_clnt4 = NULL;
|
||||
}
|
||||
shutdown = !sn->rpcb_users;
|
||||
}
|
||||
shutdown = !sn->rpcb_users;
|
||||
spin_unlock(&sn->rpcb_clnt_lock);
|
||||
|
||||
if (shutdown) {
|
||||
|
||||
Reference in New Issue
Block a user