aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/lockd/host.c27
-rw-r--r--fs/lockd/svcsubs.c10
-rw-r--r--include/linux/lockd/lockd.h4
3 files changed, 2 insertions, 39 deletions
diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index 3b55fe5e94a2..1bf384307d15 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -192,33 +192,6 @@ nlm_destroy_host(struct nlm_host *host)
192 kfree(host); 192 kfree(host);
193} 193}
194 194
195struct nlm_host *
196nlm_find_client(void)
197{
198 struct hlist_head *chain;
199 struct hlist_node *pos;
200
201 /* find a nlm_host for a client for which h_killed == 0.
202 * and return it
203 */
204 mutex_lock(&nlm_host_mutex);
205 for (chain = nlm_hosts; chain < nlm_hosts + NLM_HOST_NRHASH; ++chain) {
206 struct nlm_host *host;
207
208 hlist_for_each_entry(host, pos, chain, h_hash) {
209 if (host->h_server &&
210 host->h_killed == 0) {
211 nlm_get_host(host);
212 mutex_unlock(&nlm_host_mutex);
213 return host;
214 }
215 }
216 }
217 mutex_unlock(&nlm_host_mutex);
218 return NULL;
219}
220
221
222/* 195/*
223 * Create the NLM RPC client for an NLM peer 196 * Create the NLM RPC client for an NLM peer
224 */ 197 */
diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c
index bb13a48210f5..a1c7c0848415 100644
--- a/fs/lockd/svcsubs.c
+++ b/fs/lockd/svcsubs.c
@@ -354,13 +354,11 @@ nlmsvc_free_host_resources(struct nlm_host *host)
354} 354}
355 355
356/* 356/*
357 * delete all hosts structs for clients 357 * Remove all locks held for clients
358 */ 358 */
359void 359void
360nlmsvc_invalidate_all(void) 360nlmsvc_invalidate_all(void)
361{ 361{
362 struct nlm_host *host;
363
364 /* Release all locks held by NFS clients. 362 /* Release all locks held by NFS clients.
365 * Previously, the code would call 363 * Previously, the code would call
366 * nlmsvc_free_host_resources for each client in 364 * nlmsvc_free_host_resources for each client in
@@ -368,10 +366,4 @@ nlmsvc_invalidate_all(void)
368 * Now we just do it once in nlm_traverse_files. 366 * Now we just do it once in nlm_traverse_files.
369 */ 367 */
370 nlm_traverse_files(NULL, nlmsvc_is_client); 368 nlm_traverse_files(NULL, nlmsvc_is_client);
371
372 while ((host = nlm_find_client()) != NULL) {
373 host->h_expires = 0;
374 host->h_killed = 1;
375 nlm_release_host(host);
376 }
377} 369}
diff --git a/include/linux/lockd/lockd.h b/include/linux/lockd/lockd.h
index 8c1145669d06..1fcf936d75b9 100644
--- a/include/linux/lockd/lockd.h
+++ b/include/linux/lockd/lockd.h
@@ -45,8 +45,7 @@ struct nlm_host {
45 unsigned short h_proto; /* transport proto */ 45 unsigned short h_proto; /* transport proto */
46 unsigned short h_reclaiming : 1, 46 unsigned short h_reclaiming : 1,
47 h_server : 1, /* server side, not client side */ 47 h_server : 1, /* server side, not client side */
48 h_inuse : 1, 48 h_inuse : 1;
49 h_killed : 1;
50 wait_queue_head_t h_gracewait; /* wait while reclaiming */ 49 wait_queue_head_t h_gracewait; /* wait while reclaiming */
51 struct rw_semaphore h_rwsem; /* Reboot recovery lock */ 50 struct rw_semaphore h_rwsem; /* Reboot recovery lock */
52 u32 h_state; /* pseudo-state counter */ 51 u32 h_state; /* pseudo-state counter */
@@ -169,7 +168,6 @@ void nlm_rebind_host(struct nlm_host *);
169struct nlm_host * nlm_get_host(struct nlm_host *); 168struct nlm_host * nlm_get_host(struct nlm_host *);
170void nlm_release_host(struct nlm_host *); 169void nlm_release_host(struct nlm_host *);
171void nlm_shutdown_hosts(void); 170void nlm_shutdown_hosts(void);
172extern struct nlm_host *nlm_find_client(void);
173extern void nlm_host_rebooted(const struct sockaddr_in *, const char *, int, u32); 171extern void nlm_host_rebooted(const struct sockaddr_in *, const char *, int, u32);
174struct nsm_handle *nsm_find(const struct sockaddr_in *, const char *, int); 172struct nsm_handle *nsm_find(const struct sockaddr_in *, const char *, int);
175void nsm_release(struct nsm_handle *); 173void nsm_release(struct nsm_handle *);