lkml.org 
[lkml]   [2021]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 077/199] nfsd: Dont set eof on a truncated READ_PLUS
    Date
    From: Trond Myklebust <trond.myklebust@hammerspace.com>

    [ Upstream commit b68f0cbd3f95f2df81e525c310a41fc73c2ed0d3 ]

    If the READ_PLUS operation was truncated due to an error, then ensure we
    clear the 'eof' flag.

    Fixes: 9f0b5792f07d ("NFSD: Encode a full READ_PLUS reply")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/nfsd/nfs4xdr.c | 9 +++++----
    1 file changed, 5 insertions(+), 4 deletions(-)

    diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
    index 26f6e277101de..5f5169b9c2e90 100644
    --- a/fs/nfsd/nfs4xdr.c
    +++ b/fs/nfsd/nfs4xdr.c
    @@ -4736,14 +4736,15 @@ out:
    if (nfserr && segments == 0)
    xdr_truncate_encode(xdr, starting_len);
    else {
    - tmp = htonl(eof);
    - write_bytes_to_xdr_buf(xdr->buf, starting_len, &tmp, 4);
    - tmp = htonl(segments);
    - write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp, 4);
    if (nfserr) {
    xdr_truncate_encode(xdr, last_segment);
    nfserr = nfs_ok;
    + eof = 0;
    }
    + tmp = htonl(eof);
    + write_bytes_to_xdr_buf(xdr->buf, starting_len, &tmp, 4);
    + tmp = htonl(segments);
    + write_bytes_to_xdr_buf(xdr->buf, starting_len + 4, &tmp, 4);
    }

    return nfserr;
    --
    2.27.0


    \
     
     \ /
      Last update: 2021-01-26 10:43    [W:4.249 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site