On Thu, 2020-12-03 at 15:31 -0500, Anna Schumaker wrote: > On Thu, Dec 3, 2020 at 3:27 PM Chuck Lever <chuck.lever@xxxxxxxxxx> > wrote: > > > > > > > > > On Dec 3, 2020, at 3:18 PM, schumaker.anna@xxxxxxxxx wrote: > > > > > > From: Anna Schumaker <Anna.Schumaker@xxxxxxxxxx> > > > > > > We might need this to better handle shifting around data in the > > > reply > > > buffer. > > > > > > Suggested-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > > > Signed-off-by: Anna Schumaker <Anna.Schumaker@xxxxxxxxxx> > > > --- > > > fs/nfs/nfs42xdr.c | 2 ++ > > > fs/nfs/read.c | 13 +++++++++++-- > > > include/linux/nfs_xdr.h | 1 + > > > 3 files changed, 14 insertions(+), 2 deletions(-) > > > > > > diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c > > > index 8432bd6b95f0..ef095a5f86f7 100644 > > > --- a/fs/nfs/nfs42xdr.c > > > +++ b/fs/nfs/nfs42xdr.c > > > @@ -1297,6 +1297,8 @@ static int nfs4_xdr_dec_read_plus(struct > > > rpc_rqst *rqstp, > > > struct compound_hdr hdr; > > > int status; > > > > > > + xdr_set_scratch_buffer(xdr, page_address(res->scratch), > > > PAGE_SIZE); > > > > I intend to submit this for v5.11: > > > > https://git.linux-nfs.org/?p=cel/cel-2.6.git;a=commit;h=0ae4c3e8a64ace1b8d7de033b0751afe43024416 > > Thanks for the heads up! This patch can probably be deferred until > yours goes in. > > > > > But seems like enough callers need a scratch buffer that the XDR > > layer should set up it transparently for all requests. > > That could work too, and save some headache. > Why not just integrate it into xdr_init_decode_pages(), and then add a matching xdr_exit_decode_pages() to free up any allocated page? -- Trond Myklebust Linux NFS client maintainer, Hammerspace trond.myklebust@xxxxxxxxxxxxxxx