mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 02:33:57 +00:00
NFSv4.0: Fix the wake up of the next waiter in nfs_release_seqid()
There is no need to wake up another waiter on the seqid list unless the seqid being removed is at the head of the list, and so is relinquishing control of the sequence counter to the next entry. Reviewed-by: Yang Erkun <yangerkun@huawei.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
675d4566e5
commit
c968fd23c6
@ -1083,14 +1083,12 @@ void nfs_release_seqid(struct nfs_seqid *seqid)
|
||||
return;
|
||||
sequence = seqid->sequence;
|
||||
spin_lock(&sequence->lock);
|
||||
list_del_init(&seqid->list);
|
||||
if (!list_empty(&sequence->list)) {
|
||||
struct nfs_seqid *next;
|
||||
|
||||
next = list_first_entry(&sequence->list,
|
||||
struct nfs_seqid, list);
|
||||
if (list_is_first(&seqid->list, &sequence->list) &&
|
||||
!list_is_singular(&sequence->list)) {
|
||||
struct nfs_seqid *next = list_next_entry(seqid, list);
|
||||
rpc_wake_up_queued_task(&sequence->wait, next->task);
|
||||
}
|
||||
list_del_init(&seqid->list);
|
||||
spin_unlock(&sequence->lock);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user