diff options
| author | NeilBrown <neilb@suse.de> | 2006-10-04 05:16:00 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 10:55:17 -0400 |
| commit | 350fce8dbf43f7d441b77366851c9ce3cd28d6dc (patch) | |
| tree | a47f7e875bb9c06b93df30b84de9ca97d66740b2 /fs/lockd | |
| parent | c53c1bb94f30cecee79ca0a8e9977640338283be (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.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 3b55fe5e94..1bf384307d 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 | ||
| 195 | struct nlm_host * | ||
| 196 | nlm_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 bb13a48210..a1c7c08484 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 | */ |
| 359 | void | 359 | void |
| 360 | nlmsvc_invalidate_all(void) | 360 | nlmsvc_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 | } |
