diff options
Diffstat (limited to 'fs/nfs/dns_resolve.c')
-rw-r--r-- | fs/nfs/dns_resolve.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/fs/nfs/dns_resolve.c b/fs/nfs/dns_resolve.c index 945527092295..fc0f95ec7358 100644 --- a/fs/nfs/dns_resolve.c +++ b/fs/nfs/dns_resolve.c | |||
@@ -29,7 +29,6 @@ ssize_t nfs_dns_resolve_name(struct net *net, char *name, size_t namelen, | |||
29 | kfree(ip_addr); | 29 | kfree(ip_addr); |
30 | return ret; | 30 | return ret; |
31 | } | 31 | } |
32 | EXPORT_SYMBOL_GPL(nfs_dns_resolve_name); | ||
33 | 32 | ||
34 | #else | 33 | #else |
35 | 34 | ||
@@ -351,7 +350,6 @@ ssize_t nfs_dns_resolve_name(struct net *net, char *name, | |||
351 | ret = -ESRCH; | 350 | ret = -ESRCH; |
352 | return ret; | 351 | return ret; |
353 | } | 352 | } |
354 | EXPORT_SYMBOL_GPL(nfs_dns_resolve_name); | ||
355 | 353 | ||
356 | static struct cache_detail nfs_dns_resolve_template = { | 354 | static struct cache_detail nfs_dns_resolve_template = { |
357 | .owner = THIS_MODULE, | 355 | .owner = THIS_MODULE, |
@@ -396,6 +394,21 @@ void nfs_dns_resolver_cache_destroy(struct net *net) | |||
396 | cache_destroy_net(nn->nfs_dns_resolve, net); | 394 | cache_destroy_net(nn->nfs_dns_resolve, net); |
397 | } | 395 | } |
398 | 396 | ||
397 | static int nfs4_dns_net_init(struct net *net) | ||
398 | { | ||
399 | return nfs_dns_resolver_cache_init(net); | ||
400 | } | ||
401 | |||
402 | static void nfs4_dns_net_exit(struct net *net) | ||
403 | { | ||
404 | nfs_dns_resolver_cache_destroy(net); | ||
405 | } | ||
406 | |||
407 | static struct pernet_operations nfs4_dns_resolver_ops = { | ||
408 | .init = nfs4_dns_net_init, | ||
409 | .exit = nfs4_dns_net_exit, | ||
410 | }; | ||
411 | |||
399 | static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event, | 412 | static int rpc_pipefs_event(struct notifier_block *nb, unsigned long event, |
400 | void *ptr) | 413 | void *ptr) |
401 | { | 414 | { |
@@ -432,11 +445,24 @@ static struct notifier_block nfs_dns_resolver_block = { | |||
432 | 445 | ||
433 | int nfs_dns_resolver_init(void) | 446 | int nfs_dns_resolver_init(void) |
434 | { | 447 | { |
435 | return rpc_pipefs_notifier_register(&nfs_dns_resolver_block); | 448 | int err; |
449 | |||
450 | err = register_pernet_subsys(&nfs4_dns_resolver_ops); | ||
451 | if (err < 0) | ||
452 | goto out; | ||
453 | err = rpc_pipefs_notifier_register(&nfs_dns_resolver_block); | ||
454 | if (err < 0) | ||
455 | goto out1; | ||
456 | return 0; | ||
457 | out1: | ||
458 | unregister_pernet_subsys(&nfs4_dns_resolver_ops); | ||
459 | out: | ||
460 | return err; | ||
436 | } | 461 | } |
437 | 462 | ||
438 | void nfs_dns_resolver_destroy(void) | 463 | void nfs_dns_resolver_destroy(void) |
439 | { | 464 | { |
440 | rpc_pipefs_notifier_unregister(&nfs_dns_resolver_block); | 465 | rpc_pipefs_notifier_unregister(&nfs_dns_resolver_block); |
466 | unregister_pernet_subsys(&nfs4_dns_resolver_ops); | ||
441 | } | 467 | } |
442 | #endif | 468 | #endif |