Commit c738b218 authored by Chuck Lever's avatar Chuck Lever

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: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent ab04de60
...@@ -3980,6 +3980,7 @@ static __be32 ...@@ -3980,6 +3980,7 @@ static __be32
nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
struct nfsd4_read *read) struct nfsd4_read *read)
{ {
bool splice_ok = test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags);
unsigned long maxcount; unsigned long maxcount;
struct xdr_stream *xdr = resp->xdr; struct xdr_stream *xdr = resp->xdr;
struct file *file; struct file *file;
...@@ -3992,11 +3993,10 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, ...@@ -3992,11 +3993,10 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
p = xdr_reserve_space(xdr, 8); /* eof flag and byte count */ p = xdr_reserve_space(xdr, 8); /* eof flag and byte count */
if (!p) { if (!p) {
WARN_ON_ONCE(test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)); WARN_ON_ONCE(splice_ok);
return nfserr_resource; return nfserr_resource;
} }
if (resp->xdr->buf->page_len && if (resp->xdr->buf->page_len && splice_ok) {
test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags)) {
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
return nfserr_resource; return nfserr_resource;
} }
...@@ -4005,8 +4005,7 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr, ...@@ -4005,8 +4005,7 @@ nfsd4_encode_read(struct nfsd4_compoundres *resp, __be32 nfserr,
maxcount = min_t(unsigned long, read->rd_length, maxcount = min_t(unsigned long, read->rd_length,
(xdr->buf->buflen - xdr->buf->len)); (xdr->buf->buflen - xdr->buf->len));
if (file->f_op->splice_read && if (file->f_op->splice_read && splice_ok)
test_bit(RQ_SPLICE_OK, &resp->rqstp->rq_flags))
nfserr = nfsd4_encode_splice_read(resp, read, file, maxcount); nfserr = nfsd4_encode_splice_read(resp, read, file, maxcount);
else else
nfserr = nfsd4_encode_readv(resp, read, file, maxcount); nfserr = nfsd4_encode_readv(resp, read, file, maxcount);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment