Commit 5304930d authored by Chuck Lever's avatar Chuck Lever
Browse files

NFSD: Use set_bit(RQ_DROPME)



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: 93155647 ("NFSD: Use only RQ_DROPME to signal the need to drop a reply")
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent 7827c81f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
}