mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
NFSD: Clean up SPLICE_OK in nfsd4_encode_read()
Do the test_bit() once -- this reduces the number of locked-bus operations and makes the function a little easier to read. Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
ab04de60ae
commit
c738b218a2
@ -3980,6 +3980,7 @@ static __be32
|
||||
nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
|
||||
struct nfsd4_read *read)
|
||||
{
|
||||
bool splice_ok = test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags);
|
||||
unsigned long maxcount;
|
||||
struct xdr_stream *xdr = resp->xdr;
|
||||
struct file *file;
|
||||
@ -3992,11 +3993,10 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
|
||||
|
||||
p = xdr_reserve_space(xdr, 8); /* eof flag and byte count */
|
||||
if (!p) {
|
||||
WARN_ON_ONCE(test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags));
|
||||
WARN_ON_ONCE(splice_ok);
|
||||
return nfserr_resource;
|
||||
}
|
||||
if (resp->xdr->buf->page_len &&
|
||||
test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)) {
|
||||
if (resp->xdr->buf->page_len && splice_ok) {
|
||||
WARN_ON_ONCE(1);
|
||||
return nfserr_resource;
|
||||
}
|
||||
@ -4005,8 +4005,7 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
|
||||
maxcount = min_t(unsigned long, read->rd_length,
|
||||
(xdr->buf->buflen - xdr->buf->len));
|
||||
|
||||
if (file->f_op->splice_read &&
|
||||
test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags))
|
||||
if (file->f_op->splice_read && splice_ok)
|
||||
nfserr = nfsd4_encode_splice_read(resp, read, file, maxcount);
|
||||
else
|
||||
nfserr = nfsd4_encode_readv(resp, read, file, maxcount);
|
||||
|
Loading…
Reference in New Issue
Block a user