From 2bfa57d0f65526277528f970f36e20ba7da7f59e Mon Sep 17 00:00:00 2001 From: Stanislav Kinsbursky Date: Fri, 25 Nov 2011 17:12:48 +0300 Subject: [PATCH] --- yaml --- r: 294379 b: refs/heads/master c: 9222b955065dbb047b8db9eb2431979bff3ce700 h: refs/heads/master i: 294377: 513b8099e95ae53746e40400f497690243797d4e 294375: 9ffd3c9656d302080e9819a616383821621b7ff9 v: v3 --- [refs] | 2 +- trunk/fs/nfs/cache_lib.c | 11 +++++++++-- trunk/fs/nfs/cache_lib.h | 2 ++ trunk/fs/nfs/dns_resolve.c | 11 ++++++++++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 40ef71ab75da..6b17d33b3906 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 820f9442e711a81749e70c40f149fc54c4ce0ca8 +refs/heads/master: 9222b955065dbb047b8db9eb2431979bff3ce700 diff --git a/trunk/fs/nfs/cache_lib.c b/trunk/fs/nfs/cache_lib.c index d62a8951cb12..9d79a2eaab27 100644 --- a/trunk/fs/nfs/cache_lib.c +++ b/trunk/fs/nfs/cache_lib.c @@ -120,7 +120,6 @@ int nfs_cache_register(struct cache_detail *cd) mnt = rpc_get_mount(); if (IS_ERR(mnt)) return PTR_ERR(mnt); - sunrpc_init_cache_detail(cd); ret = vfs_path_lookup(mnt->mnt_root, mnt, "/cache", 0, &path); if (ret) goto err; @@ -129,7 +128,6 @@ int nfs_cache_register(struct cache_detail *cd) if (!ret) return ret; err: - sunrpc_destroy_cache_detail(cd); rpc_put_mount(); return ret; } @@ -141,3 +139,12 @@ void nfs_cache_unregister(struct cache_detail *cd) rpc_put_mount(); } +void nfs_cache_init(struct cache_detail *cd) +{ + sunrpc_init_cache_detail(cd); +} + +void nfs_cache_destroy(struct cache_detail *cd) +{ + sunrpc_destroy_cache_detail(cd); +} diff --git a/trunk/fs/nfs/cache_lib.h b/trunk/fs/nfs/cache_lib.h index 7cf6cafcc007..815dd6651c9f 100644 --- a/trunk/fs/nfs/cache_lib.h +++ b/trunk/fs/nfs/cache_lib.h @@ -23,5 +23,7 @@ extern struct nfs_cache_defer_req *nfs_cache_defer_req_alloc(void); extern void nfs_cache_defer_req_put(struct nfs_cache_defer_req *dreq); extern int nfs_cache_wait_for_upcall(struct nfs_cache_defer_req *dreq); +extern void nfs_cache_init(struct cache_detail *cd); +extern void nfs_cache_destroy(struct cache_detail *cd); extern int nfs_cache_register(struct cache_detail *cd); extern void nfs_cache_unregister(struct cache_detail *cd); diff --git a/trunk/fs/nfs/dns_resolve.c b/trunk/fs/nfs/dns_resolve.c index a6e711ad130f..619dea6b5ccf 100644 --- a/trunk/fs/nfs/dns_resolve.c +++ b/trunk/fs/nfs/dns_resolve.c @@ -361,12 +361,21 @@ ssize_t nfs_dns_resolve_name(char *name, size_t namelen, int nfs_dns_resolver_init(void) { - return nfs_cache_register(&nfs_dns_resolve); + int err; + + nfs_cache_init(&nfs_dns_resolve); + err = nfs_cache_register(&nfs_dns_resolve); + if (err) { + nfs_cache_destroy(&nfs_dns_resolve); + return err; + } + return 0; } void nfs_dns_resolver_destroy(void) { nfs_cache_unregister(&nfs_dns_resolve); + nfs_cache_destroy(&nfs_dns_resolve); } #endif