NFSD: Use set_bit(RQ_DROPME)
[ Upstream commit 5304930dbae82d259bcf7e5611db7c81e7a42eff ] The premise that "Once an svc thread is scheduled and executing an RPC, no other processes will touch svc_rqst::rq_flags" is false. svc_xprt_enqueue() examines the RQ_BUSY flag in scheduled nfsd threads when determining which thread to wake up next. Fixes: 9315564747cb ("NFSD: Use only RQ_DROPME to signal the need to drop a reply") Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
5b133c1ad1
commit
f06c52431e
1 changed files with 2 additions and 2 deletions
|
@ -211,7 +211,7 @@ nfsd_proc_read(struct svc_rqst *rqstp)
|
|||
if (resp->status == nfs_ok)
|
||||
resp->status = fh_getattr(&resp->fh, &resp->stat);
|
||||
else if (resp->status == nfserr_jukebox)
|
||||
__set_bit(RQ_DROPME, &rqstp->rq_flags);
|
||||
set_bit(RQ_DROPME, &rqstp->rq_flags);
|
||||
return rpc_success;
|
||||
}
|
||||
|
||||
|
@ -246,7 +246,7 @@ nfsd_proc_write(struct svc_rqst *rqstp)
|
|||
if (resp->status == nfs_ok)
|
||||
resp->status = fh_getattr(&resp->fh, &resp->stat);
|
||||
else if (resp->status == nfserr_jukebox)
|
||||
__set_bit(RQ_DROPME, &rqstp->rq_flags);
|
||||
set_bit(RQ_DROPME, &rqstp->rq_flags);
|
||||
return rpc_success;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue