SUNRPC: setup rpcbind clients if service requires it
New function ("svc_uses_rpcbind") will be used to detect, that new service will send portmapper register calls. For such services we will create rpcbind clients and remove all stale portmap registrations. Also, svc_rpcb_cleanup() will be set as sv_shutdown callback for such services in case of this field wasn't initialized earlier. This will allow to destroy rpcbind clients when no other users of them left. Note: Currently, any creating service will be detected as portmap user. Probably, this is wrong. But now it depends on program versions "vs_hidden" flag. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
d99085605c
commit
e40f5e29ef
@ -454,8 +454,15 @@ __svc_create(struct svc_program *prog, unsigned int bufsize, int npools,
|
||||
spin_lock_init(&pool->sp_lock);
|
||||
}
|
||||
|
||||
/* Remove any stale portmap registrations */
|
||||
svc_unregister(serv);
|
||||
if (svc_uses_rpcbind(serv)) {
|
||||
if (svc_rpcb_setup(serv) < 0) {
|
||||
kfree(serv->sv_pools);
|
||||
kfree(serv);
|
||||
return NULL;
|
||||
}
|
||||
if (!serv->sv_shutdown)
|
||||
serv->sv_shutdown = svc_rpcb_cleanup;
|
||||
}
|
||||
|
||||
return serv;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user