diff options
Diffstat (limited to 'fs/lockd/svcsubs.c')
| -rw-r--r-- | fs/lockd/svcsubs.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/lockd/svcsubs.c b/fs/lockd/svcsubs.c index 2a4df9b3779a..01b4db9e5466 100644 --- a/fs/lockd/svcsubs.c +++ b/fs/lockd/svcsubs.c | |||
| @@ -237,19 +237,22 @@ static int | |||
| 237 | nlm_traverse_files(struct nlm_host *host, int action) | 237 | nlm_traverse_files(struct nlm_host *host, int action) |
| 238 | { | 238 | { |
| 239 | struct nlm_file *file, **fp; | 239 | struct nlm_file *file, **fp; |
| 240 | int i; | 240 | int i, ret = 0; |
| 241 | 241 | ||
| 242 | mutex_lock(&nlm_file_mutex); | 242 | mutex_lock(&nlm_file_mutex); |
| 243 | for (i = 0; i < FILE_NRHASH; i++) { | 243 | for (i = 0; i < FILE_NRHASH; i++) { |
| 244 | fp = nlm_files + i; | 244 | fp = nlm_files + i; |
| 245 | while ((file = *fp) != NULL) { | 245 | while ((file = *fp) != NULL) { |
| 246 | file->f_count++; | ||
| 247 | mutex_unlock(&nlm_file_mutex); | ||
| 248 | |||
| 246 | /* Traverse locks, blocks and shares of this file | 249 | /* Traverse locks, blocks and shares of this file |
| 247 | * and update file->f_locks count */ | 250 | * and update file->f_locks count */ |
| 248 | if (nlm_inspect_file(host, file, action)) { | 251 | if (nlm_inspect_file(host, file, action)) |
| 249 | mutex_unlock(&nlm_file_mutex); | 252 | ret = 1; |
| 250 | return 1; | ||
| 251 | } | ||
| 252 | 253 | ||
| 254 | mutex_lock(&nlm_file_mutex); | ||
| 255 | file->f_count--; | ||
| 253 | /* No more references to this file. Let go of it. */ | 256 | /* No more references to this file. Let go of it. */ |
| 254 | if (!file->f_blocks && !file->f_locks | 257 | if (!file->f_blocks && !file->f_locks |
| 255 | && !file->f_shares && !file->f_count) { | 258 | && !file->f_shares && !file->f_count) { |
| @@ -262,7 +265,7 @@ nlm_traverse_files(struct nlm_host *host, int action) | |||
| 262 | } | 265 | } |
| 263 | } | 266 | } |
| 264 | mutex_unlock(&nlm_file_mutex); | 267 | mutex_unlock(&nlm_file_mutex); |
| 265 | return 0; | 268 | return ret; |
| 266 | } | 269 | } |
| 267 | 270 | ||
| 268 | /* | 271 | /* |
