Skip to content

Commit

Permalink
NFS: split cache creation and PipeFS registration
Browse files Browse the repository at this point in the history
This precursor patch splits NFS cache creation and PipeFS registartion.
It's required for latter split of NFS DNS resolver cache creation per network
namespace context and PipeFS registration/unregistration on MOUNT/UMOUNT
events.

Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
  • Loading branch information
Stanislav Kinsbursky authored and Trond Myklebust committed Jan 31, 2012
1 parent 820f944 commit 9222b95
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
11 changes: 9 additions & 2 deletions fs/nfs/cache_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
}
Expand All @@ -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);
}
2 changes: 2 additions & 0 deletions fs/nfs/cache_lib.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
11 changes: 10 additions & 1 deletion fs/nfs/dns_resolve.c
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 9222b95

Please sign in to comment.