diff options
author | NeilBrown <neilb@suse.de> | 2006-10-04 02:16:00 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 07:55:17 -0700 |
commit | 350fce8dbf43f7d441b77366851c9ce3cd28d6dc (patch) | |
tree | a47f7e875bb9c06b93df30b84de9ca97d66740b2 /fs | |
parent | c53c1bb94f30cecee79ca0a8e9977640338283be (diff) | |
download | blackbird-op-linux-350fce8dbf43f7d441b77366851c9ce3cd28d6dc.tar.gz blackbird-op-linux-350fce8dbf43f7d441b77366851c9ce3cd28d6dc.zip |
[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')
-rw-r--r-- | fs/lockd/host.c | 27 | ||||
-rw-r--r-- | fs/lockd/svcsubs.c | 10 |
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) kfree(host); } -struct nlm_host * -nlm_find_client(void) -{ - struct hlist_head *chain; - struct hlist_node *pos; - - /* find a nlm_host for a client for which h_killed == 0. - * and return it - */ - mutex_lock(&nlm_host_mutex); - for (chain = nlm_hosts; chain < nlm_hosts + NLM_HOST_NRHASH; ++chain) { - struct nlm_host *host; - - hlist_for_each_entry(host, pos, chain, h_hash) { - if (host->h_server && - host->h_killed == 0) { - nlm_get_host(host); - mutex_unlock(&nlm_host_mutex); - return host; - } - } - } - mutex_unlock(&nlm_host_mutex); - return NULL; -} - - /* * Create the NLM RPC client for an NLM peer */ 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) } /* - * delete all hosts structs for clients + * Remove all locks held for clients */ void nlmsvc_invalidate_all(void) { - struct nlm_host *host; - /* Release all locks held by NFS clients. * Previously, the code would call * nlmsvc_free_host_resources for each client in @@ -368,10 +366,4 @@ nlmsvc_invalidate_all(void) * Now we just do it once in nlm_traverse_files. */ nlm_traverse_files(NULL, nlmsvc_is_client); - - while ((host = nlm_find_client()) != NULL) { - host->h_expires = 0; - host->h_killed = 1; - nlm_release_host(host); - } } |