aboutsummaryrefslogtreecommitdiffstats
path: root/fs/lockd
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2006-10-04 05:16:00 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-04 10:55:17 -0400
commit350fce8dbf43f7d441b77366851c9ce3cd28d6dc (patch)
treea47f7e875bb9c06b93df30b84de9ca97d66740b2 /fs/lockd
parentc53c1bb94f30cecee79ca0a8e9977640338283be (diff)
[PATCH] knfsd: simplify nlmsvc_invalidate_all
As a result of previous patches, the loop in nlmsvc_invalidate_all just sets h_expires for all client/hosts to 0 (though does it in a very complicated way). This was possibly meant to trigger early garbage collection but half the time '0' is in the future and so it infact delays garbage collection. Pre-aging the 'hosts' is not really needed at this point anyway so we throw out the loop and nlm_find_client which is no longer needed. Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/lockd')
-rw-r--r--fs/lockd/host.c27
-rw-r--r--fs/lockd/svcsubs.c10
2 files changed, 1 insertions, 36 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}