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) | |||
99 | } | 99 | } |
100 | 100 | ||
101 | #if defined(CONFIG_NFS_V4_1) | 101 | #if defined(CONFIG_NFS_V4_1) |
102 | static int nfs41_callback_up_net(struct svc_serv *serv, struct net *net) | ||
103 | { | ||
104 | /* | ||
105 | * Create an svc_sock for the back channel service that shares the | ||
106 | * fore channel connection. | ||
107 | * Returns the input port (0) and sets the svc_serv bc_xprt on success | ||
108 | */ | ||
109 | return svc_create_xprt(serv, "tcp-bc", net, PF_INET, 0, | ||
110 | SVC_SOCK_ANONYMOUS); | ||
111 | } | ||
112 | |||
113 | /* | 102 | /* |
114 | * The callback service for NFSv4.1 callbacks | 103 | * The callback service for NFSv4.1 callbacks |
115 | */ | 104 | */ |
@@ -184,11 +173,6 @@ static inline void nfs_callback_bc_serv(u32 minorversion, struct rpc_xprt *xprt, | |||
184 | xprt->bc_serv = serv; | 173 | xprt->bc_serv = serv; |
185 | } | 174 | } |
186 | #else | 175 | #else |
187 | static int nfs41_callback_up_net(struct svc_serv *serv, struct net *net) | ||
188 | { | ||
189 | return 0; | ||
190 | } | ||
191 | |||
192 | static void nfs_minorversion_callback_svc_setup(struct svc_serv *serv, | 176 | static void nfs_minorversion_callback_svc_setup(struct svc_serv *serv, |
193 | struct svc_rqst **rqstpp, int (**callback_svc)(void *vrqstp)) | 177 | struct svc_rqst **rqstpp, int (**callback_svc)(void *vrqstp)) |
194 | { | 178 | { |
@@ -259,7 +243,8 @@ static void nfs_callback_down_net(u32 minorversion, struct svc_serv *serv, struc | |||
259 | svc_shutdown_net(serv, net); | 243 | svc_shutdown_net(serv, net); |
260 | } | 244 | } |
261 | 245 | ||
262 | static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct net *net) | 246 | static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, |
247 | struct net *net, struct rpc_xprt *xprt) | ||
263 | { | 248 | { |
264 | struct nfs_net *nn = net_generic(net, nfs_net_id); | 249 | struct nfs_net *nn = net_generic(net, nfs_net_id); |
265 | int ret; | 250 | int ret; |
@@ -275,20 +260,11 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct n | |||
275 | goto err_bind; | 260 | goto err_bind; |
276 | } | 261 | } |
277 | 262 | ||
278 | switch (minorversion) { | 263 | ret = -EPROTONOSUPPORT; |
279 | case 0: | 264 | if (minorversion == 0) |
280 | ret = nfs4_callback_up_net(serv, net); | 265 | ret = nfs4_callback_up_net(serv, net); |
281 | break; | 266 | else if (xprt->ops->bc_up) |
282 | case 1: | 267 | ret = xprt->ops->bc_up(serv, net); |
283 | case 2: | ||
284 | ret = nfs41_callback_up_net(serv, net); | ||
285 | break; | ||
286 | default: | ||
287 | printk(KERN_ERR "NFS: unknown callback version: %d\n", | ||
288 | minorversion); | ||
289 | ret = -EINVAL; | ||
290 | break; | ||
291 | } | ||
292 | 268 | ||
293 | if (ret < 0) { | 269 | if (ret < 0) { |
294 | printk(KERN_ERR "NFS: callback service start failed\n"); | 270 | printk(KERN_ERR "NFS: callback service start failed\n"); |
@@ -364,7 +340,7 @@ int nfs_callback_up(u32 minorversion, struct rpc_xprt *xprt) | |||
364 | goto err_create; | 340 | goto err_create; |
365 | } | 341 | } |
366 | 342 | ||
367 | ret = nfs_callback_up_net(minorversion, serv, net); | 343 | ret = nfs_callback_up_net(minorversion, serv, net, xprt); |
368 | if (ret < 0) | 344 | if (ret < 0) |
369 | goto err_net; | 345 | goto err_net; |
370 | 346 | ||