Commit 24c7fb85 authored by Chuck Lever's avatar Chuck Lever
Browse files

NFSD: Add an nfsd4_read::rd_eof field



Refactor: Make the EOF result available in the entire NFSv4 READ
path.

Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent c738b218
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -3879,7 +3879,6 @@ static __be32 nfsd4_encode_splice_read(
	struct xdr_stream *xdr = resp->xdr;
	struct xdr_buf *buf = xdr->buf;
	int status, space_left;
	u32 eof;
	__be32 nfserr;
	__be32 *p = xdr->p - 2;

@@ -3888,7 +3887,8 @@ static __be32 nfsd4_encode_splice_read(
		return nfserr_resource;

	nfserr = nfsd_splice_read(read->rd_rqstp, read->rd_fhp,
				  file, read->rd_offset, &maxcount, &eof);
				  file, read->rd_offset, &maxcount,
				  &read->rd_eof);
	read->rd_length = maxcount;
	if (nfserr)
		goto out_err;
@@ -3899,7 +3899,7 @@ static __be32 nfsd4_encode_splice_read(
		goto out_err;
	}

	*(p++) = htonl(eof);
	*(p++) = htonl(read->rd_eof);
	*(p++) = htonl(maxcount);

	buf->page_len = maxcount;
@@ -3943,7 +3943,6 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
				 struct file *file, unsigned long maxcount)
{
	struct xdr_stream *xdr = resp->xdr;
	u32 eof;
	int starting_len = xdr->buf->len - 8;
	__be32 nfserr;
	__be32 tmp;
@@ -3955,7 +3954,7 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,

	nfserr = nfsd_readv(resp->rqstp, read->rd_fhp, file, read->rd_offset,
			    resp->rqstp->rq_vec, read->rd_vlen, &maxcount,
			    &eof);
			    &read->rd_eof);
	read->rd_length = maxcount;
	if (nfserr)
		return nfserr;
@@ -3963,7 +3962,7 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
		return nfserr_io;
	xdr_truncate_encode(xdr, starting_len + 8 + xdr_align_size(maxcount));

	tmp = htonl(eof);
	tmp = htonl(read->rd_eof);
	write_bytes_to_xdr_buf(xdr->buf, starting_len    , &tmp, 4);
	tmp = htonl(maxcount);
	write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp, 4);
+3 −2
Original line number Diff line number Diff line
@@ -305,6 +305,7 @@ struct nfsd4_read {

	struct svc_rqst		*rd_rqstp;          /* response */
	struct svc_fh		*rd_fhp;            /* response */
	u32			rd_eof;             /* response */
};

struct nfsd4_readdir {