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
@@ -17,6 +17,7 @@
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/sunrpc/svcauth_gss.h>
|
||||
#include <linux/sunrpc/bc_xprt.h>
|
||||
#include <linux/nsproxy.h>
|
||||
|
||||
#include <net/inet_sock.h>
|
||||
|
||||
@@ -253,6 +254,7 @@ int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt)
|
||||
char svc_name[12];
|
||||
int ret = 0;
|
||||
int minorversion_setup;
|
||||
struct net *net = current->nsproxy->net_ns;
|
||||
|
||||
mutex_lock(&nfs_callback_mutex);
|
||||
if (cb_info->users++ || cb_info->task != NULL) {
|
||||
@@ -265,6 +267,12 @@ int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt)
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
ret = svc_bind(serv, net);
|
||||
if (ret < 0) {
|
||||
printk(KERN_WARNING "NFS: bind callback service failed\n");
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
minorversion_setup = nfs_minorversion_callback_svc_setup(minorversion,
|
||||
serv, xprt, &rqstp, &callback_svc);
|
||||
if (!minorversion_setup) {
|
||||
|
Reference in New Issue
Block a user