From: Anna Schumaker <anna@kernel.org>
To: linux-nfs@vger.kernel.org, chuck.lever@oracle.com
Cc: anna@kernel.org
Subject: [PATCH 0/1] NFSD: Simplify READ_PLUS
Date: Thu, 1 Sep 2022 14:33:40 -0400 [thread overview]
Message-ID: <20220901183341.1543827-1-anna@kernel.org> (raw)
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
When we left off with READ_PLUS, Chuck had suggested reverting the
server to reply with a single NFS4_CONTENT_DATA segment essentially
mimicing how the READ operation behaves. Then, a future sparse read
function can be added and the server modified to support it without
needing to rip out the old READ_PLUS code at the same time.
This patch takes that first step. I was even able to re-use the
nfsd4_encode_readv() function to remove some duplicate code.
Chuck, I tried to add in sparse read support by adding this extra
change. Unfortunately it leads to a bunch of new failing xfstests. Do
you have any thoughts about what might be going on? Is the patch okay
without the splice support?
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index adbff7737c14..e21e6cfd1c6d 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -4733,6 +4733,7 @@ static __be32
nfsd4_encode_read_plus_data(struct nfsd4_compoundres *resp,
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 = read->rd_nf->nf_file;
@@ -4747,7 +4748,10 @@ nfsd4_encode_read_plus_data(struct nfsd4_compoundres *resp,
maxcount = min_t(unsigned long, read->rd_length,
(xdr->buf->buflen - xdr->buf->len));
- nfserr = nfsd4_encode_readv(resp, read, file, maxcount);
+ 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)
if (nfserr)
return nfserr;
Thanks,
Anna
Anna Schumaker (1):
NFSD: Simplify READ_PLUS
fs/nfsd/nfs4xdr.c | 122 ++++++++--------------------------------------
1 file changed, 20 insertions(+), 102 deletions(-)
--
2.37.2
next reply other threads:[~2022-09-01 18:33 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-01 18:33 Anna Schumaker [this message]
2022-09-01 18:33 ` [PATCH 1/1] NFSD: Simplify READ_PLUS Anna Schumaker
2022-09-01 19:05 ` Chuck Lever III
2022-09-01 19:44 ` Anna Schumaker
2022-09-01 19:47 ` Chuck Lever III
2022-09-02 15:58 ` Chuck Lever III
2022-09-03 17:36 ` [PATCH 0/1] " Chuck Lever III
2022-09-06 18:17 ` Anna Schumaker
2022-09-06 18:23 ` Chuck Lever III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220901183341.1543827-1-anna@kernel.org \
--to=anna@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.