diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2021-10-13 10:40:59 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2021-10-13 11:34:49 -0400 |
commit | 3b0ebb255fdc49a3d340846deebf045ef58ec744 (patch) | |
tree | 6516f5921001ead9859afc79f4eab8fbb7b61595 /fs/nfsd/nfs4xdr.c | |
parent | c44b31c263798ec34614dd394c31ef1a2e7e716e (diff) | |
download | linux-3b0ebb255fdc49a3d340846deebf045ef58ec744.tar.gz |
NFSD: Save location of NFSv4 COMPOUND status
Refactor: Currently nfs4svc_encode_compoundres() relies on the NFS
dispatcher to pass in the buffer location of the COMPOUND status.
Instead, save that buffer location in struct nfsd4_compoundres.
The compound tag follows immediately after.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/nfs4xdr.c')
-rw-r--r-- | fs/nfsd/nfs4xdr.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index dd1ee9ada7dd..c6623080ad98 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -5435,11 +5435,16 @@ nfs4svc_encode_compoundres(struct svc_rqst *rqstp, __be32 *p) WARN_ON_ONCE(buf->len != buf->head[0].iov_len + buf->page_len + buf->tail[0].iov_len); - *p = resp->cstate.status; + /* + * Send buffer space for the following items is reserved + * at the top of nfsd4_proc_compound(). + */ + p = resp->statusp; + + *p++ = resp->cstate.status; rqstp->rq_next_page = resp->xdr->page_ptr + 1; - p = resp->tagp; *p++ = htonl(resp->taglen); memcpy(p, resp->tag, resp->taglen); p += XDR_QUADLEN(resp->taglen); |