Commit 5d926e8c authored by J. Bruce Fields's avatar J. Bruce Fields

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: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 65bc58f5
...@@ -277,9 +277,9 @@ nfs4_close_delegation(struct nfs4_delegation *dp) ...@@ -277,9 +277,9 @@ nfs4_close_delegation(struct nfs4_delegation *dp)
static void static void
unhash_delegation(struct nfs4_delegation *dp) unhash_delegation(struct nfs4_delegation *dp)
{ {
list_del_init(&dp->dl_perfile);
list_del_init(&dp->dl_perclnt); list_del_init(&dp->dl_perclnt);
spin_lock(&recall_lock); spin_lock(&recall_lock);
list_del_init(&dp->dl_perfile);
list_del_init(&dp->dl_recall_lru); list_del_init(&dp->dl_recall_lru);
spin_unlock(&recall_lock); spin_unlock(&recall_lock);
nfs4_close_delegation(dp); nfs4_close_delegation(dp);
...@@ -2336,9 +2336,7 @@ static void nfsd_break_one_deleg(struct nfs4_delegation *dp) ...@@ -2336,9 +2336,7 @@ static void nfsd_break_one_deleg(struct nfs4_delegation *dp)
* it's safe to take a reference: */ * it's safe to take a reference: */
atomic_inc(&dp->dl_count); atomic_inc(&dp->dl_count);
spin_lock(&recall_lock);
list_add_tail(&dp->dl_recall_lru, &del_recall_lru); list_add_tail(&dp->dl_recall_lru, &del_recall_lru);
spin_unlock(&recall_lock);
/* only place dl_time is set. protected by lock_flocks*/ /* only place dl_time is set. protected by lock_flocks*/
dp->dl_time = get_seconds(); dp->dl_time = get_seconds();
...@@ -2363,8 +2361,10 @@ static void nfsd_break_deleg_cb(struct file_lock *fl) ...@@ -2363,8 +2361,10 @@ static void nfsd_break_deleg_cb(struct file_lock *fl)
*/ */
fl->fl_break_time = 0; fl->fl_break_time = 0;
nfsd_break_one_deleg(dp); spin_lock(&recall_lock);
dp->dl_file->fi_had_conflict = true; dp->dl_file->fi_had_conflict = true;
nfsd_break_one_deleg(dp);
spin_unlock(&recall_lock);
} }
static static
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment