summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/nfs/cache_lib.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/fs/nfs/cache_lib.c b/fs/nfs/cache_lib.c
index 5905a31211e5..dded26368111 100644
--- a/fs/nfs/cache_lib.c
+++ b/fs/nfs/cache_lib.c
@@ -126,24 +126,14 @@ int nfs_cache_register_sb(struct super_block *sb, struct cache_detail *cd)
126 126
127int nfs_cache_register_net(struct net *net, struct cache_detail *cd) 127int nfs_cache_register_net(struct net *net, struct cache_detail *cd)
128{ 128{
129 struct vfsmount *mnt;
130 struct super_block *pipefs_sb; 129 struct super_block *pipefs_sb;
131 int ret; 130 int ret = 0;
132 131
133 mnt = rpc_get_mount();
134 if (IS_ERR(mnt))
135 return PTR_ERR(mnt);
136 pipefs_sb = rpc_get_sb_net(net); 132 pipefs_sb = rpc_get_sb_net(net);
137 if (!pipefs_sb) { 133 if (pipefs_sb) {
138 ret = -ENOENT; 134 ret = nfs_cache_register_sb(pipefs_sb, cd);
139 goto err; 135 rpc_put_sb_net(net);
140 } 136 }
141 ret = nfs_cache_register_sb(pipefs_sb, cd);
142 rpc_put_sb_net(net);
143 if (!ret)
144 return ret;
145err:
146 rpc_put_mount();
147 return ret; 137 return ret;
148} 138}
149 139
@@ -162,7 +152,6 @@ void nfs_cache_unregister_net(struct net *net, struct cache_detail *cd)
162 nfs_cache_unregister_sb(pipefs_sb, cd); 152 nfs_cache_unregister_sb(pipefs_sb, cd);
163 rpc_put_sb_net(net); 153 rpc_put_sb_net(net);
164 } 154 }
165 rpc_put_mount();
166} 155}
167 156
168void nfs_cache_init(struct cache_detail *cd) 157void nfs_cache_init(struct cache_detail *cd)