mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
NFSD: Use set_bit(RQ_DROPME)
[ Upstream commit5304930dba] 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:9315564747("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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5c6c2fb3c1
commit
ce606d5334
@@ -211,7 +211,7 @@ nfsd_proc_read(struct svc_rqst *rqstp)
|
|||||||
if (resp->status == nfs_ok)
|
if (resp->status == nfs_ok)
|
||||||
resp->status = fh_getattr(&resp->fh, &resp->stat);
|
resp->status = fh_getattr(&resp->fh, &resp->stat);
|
||||||
else if (resp->status == nfserr_jukebox)
|
else if (resp->status == nfserr_jukebox)
|
||||||
__set_bit(RQ_DROPME, &rqstp->rq_flags);
|
set_bit(RQ_DROPME, &rqstp->rq_flags);
|
||||||
return rpc_success;
|
return rpc_success;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ nfsd_proc_write(struct svc_rqst *rqstp)
|
|||||||
if (resp->status == nfs_ok)
|
if (resp->status == nfs_ok)
|
||||||
resp->status = fh_getattr(&resp->fh, &resp->stat);
|
resp->status = fh_getattr(&resp->fh, &resp->stat);
|
||||||
else if (resp->status == nfserr_jukebox)
|
else if (resp->status == nfserr_jukebox)
|
||||||
__set_bit(RQ_DROPME, &rqstp->rq_flags);
|
set_bit(RQ_DROPME, &rqstp->rq_flags);
|
||||||
return rpc_success;
|
return rpc_success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user