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>
This commit is contained in:
parent
65bc58f518
commit
5d926e8c2f
1 changed files with 4 additions and 4 deletions
|
@ -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)
|
||||||
* 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)
|
||||||
*/
|
*/
|
||||||
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
|
||||||
|
|
Loading…
Add table
Reference in a new issue