aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2011-02-07 16:53:46 -0500
committerJ. Bruce Fields <bfields@redhat.com>2011-02-14 10:35:19 -0500
commit5d926e8c2f46dc09f4ddde86644a5f1d0726a470 (patch)
treeef30c949c75ee204c3108159caf9eeb22daf8418 /fs/nfsd/nfs4state.c
parent65bc58f5187e2ff4011ef1bd3082e83cd1b036f1 (diff)
nfsd4: modify fi_delegations under recall_lock
Modify fi_delegations only under the recall_lock, allowing us to use that list on lease breaks. Also some trivial cleanup to simplify later changes. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index d978192838a3..8b6cd3cf4835 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -277,9 +277,9 @@ nfs4_close_delegation(struct nfs4_delegation *dp)
277static void 277static void
278unhash_delegation(struct nfs4_delegation *dp) 278unhash_delegation(struct nfs4_delegation *dp)
279{ 279{
280 list_del_init(&dp->dl_perfile);
281 list_del_init(&dp->dl_perclnt); 280 list_del_init(&dp->dl_perclnt);
282 spin_lock(&recall_lock); 281 spin_lock(&recall_lock);
282 list_del_init(&dp->dl_perfile);
283 list_del_init(&dp->dl_recall_lru); 283 list_del_init(&dp->dl_recall_lru);
284 spin_unlock(&recall_lock); 284 spin_unlock(&recall_lock);
285 nfs4_close_delegation(dp); 285 nfs4_close_delegation(dp);
@@ -2336,9 +2336,7 @@ static void nfsd_break_one_deleg(struct nfs4_delegation *dp)
2336 * it's safe to take a reference: */ 2336 * it's safe to take a reference: */
2337 atomic_inc(&dp->dl_count); 2337 atomic_inc(&dp->dl_count);
2338 2338
2339 spin_lock(&recall_lock);
2340 list_add_tail(&dp->dl_recall_lru, &del_recall_lru); 2339 list_add_tail(&dp->dl_recall_lru, &del_recall_lru);
2341 spin_unlock(&recall_lock);
2342 2340
2343 /* only place dl_time is set. protected by lock_flocks*/ 2341 /* only place dl_time is set. protected by lock_flocks*/
2344 dp->dl_time = get_seconds(); 2342 dp->dl_time = get_seconds();
@@ -2363,8 +2361,10 @@ static void nfsd_break_deleg_cb(struct file_lock *fl)
2363 */ 2361 */
2364 fl->fl_break_time = 0; 2362 fl->fl_break_time = 0;
2365 2363
2366 nfsd_break_one_deleg(dp); 2364 spin_lock(&recall_lock);
2367 dp->dl_file->fi_had_conflict = true; 2365 dp->dl_file->fi_had_conflict = true;
2366 nfsd_break_one_deleg(dp);
2367 spin_unlock(&recall_lock);
2368} 2368}
2369 2369
2370static 2370static