diff options
Diffstat (limited to 'fs/nfs/callback.c')
| -rw-r--r-- | fs/nfs/callback.c | 40 | 
1 files changed, 8 insertions, 32 deletions
| diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 75f7c0a7538a..a7f2e6e33305 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c @@ -99,17 +99,6 @@ nfs4_callback_up(struct svc_serv *serv)  }  #if defined(CONFIG_NFS_V4_1) -static int nfs41_callback_up_net(struct svc_serv *serv, struct net *net) -{ -	/* -	 * Create an svc_sock for the back channel service that shares the -	 * fore channel connection. -	 * Returns the input port (0) and sets the svc_serv bc_xprt on success -	 */ -	return svc_create_xprt(serv, "tcp-bc", net, PF_INET, 0, -			      SVC_SOCK_ANONYMOUS); -} -  /*   * The callback service for NFSv4.1 callbacks   */ @@ -184,11 +173,6 @@ static inline void nfs_callback_bc_serv(u32 minorversion, struct rpc_xprt *xprt,  		xprt->bc_serv = serv;  }  #else -static int nfs41_callback_up_net(struct svc_serv *serv, struct net *net) -{ -	return 0; -} -  static void nfs_minorversion_callback_svc_setup(struct svc_serv *serv,  		struct svc_rqst **rqstpp, int (**callback_svc)(void *vrqstp))  { @@ -259,7 +243,8 @@ static void nfs_callback_down_net(u32 minorversion, struct svc_serv *serv, struc  	svc_shutdown_net(serv, net);  } -static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct net *net) +static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, +			       struct net *net, struct rpc_xprt *xprt)  {  	struct nfs_net *nn = net_generic(net, nfs_net_id);  	int ret; @@ -275,20 +260,11 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct n  		goto err_bind;  	} -	switch (minorversion) { -		case 0: -			ret = nfs4_callback_up_net(serv, net); -			break; -		case 1: -		case 2: -			ret = nfs41_callback_up_net(serv, net); -			break; -		default: -			printk(KERN_ERR "NFS: unknown callback version: %d\n", -					minorversion); -			ret = -EINVAL; -			break; -	} +	ret = -EPROTONOSUPPORT; +	if (minorversion == 0) +		ret = nfs4_callback_up_net(serv, net); +	else if (xprt->ops->bc_up) +		ret = xprt->ops->bc_up(serv, net);  	if (ret < 0) {  		printk(KERN_ERR "NFS: callback service start failed\n"); @@ -364,7 +340,7 @@ int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt)  		goto err_create;  	} -	ret = nfs_callback_up_net(minorversion, serv, net); +	ret = nfs_callback_up_net(minorversion, serv, net, xprt);  	if (ret < 0)  		goto err_net; |