NFSD: Clean up nfsd4_encode_readv
authorChuck Lever <chuck.lever@oracle.com>
Mon, 2 Mar 2020 20:00:04 +0000 (15:00 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 16 Mar 2020 16:04:31 +0000 (12:04 -0400)
Address some minor nits I noticed while working on this function.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4xdr.c

index eedb62c411a531f3ac1148a32136f0d1db6a6e69..996ac01ee97738bde2c8e8782a16ff2e9eb6a9b3 100644 (file)
@@ -3591,7 +3591,6 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
        __be32 nfserr;
        __be32 tmp;
        __be32 *p;
-       u32 zzz = 0;
        int pad;
 
        /*
@@ -3607,7 +3606,7 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
        v = 0;
        while (len) {
                thislen = min_t(long, len, PAGE_SIZE);
-               p = xdr_reserve_space(xdr, (thislen+3)&~3);
+               p = xdr_reserve_space(xdr, thislen);
                WARN_ON_ONCE(!p);
                resp->rqstp->rq_vec[v].iov_base = p;
                resp->rqstp->rq_vec[v].iov_len = thislen;
@@ -3616,7 +3615,6 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
        }
        read->rd_vlen = v;
 
-       len = maxcount;
        nfserr = nfsd_readv(resp->rqstp, read->rd_fhp, file, read->rd_offset,
                            resp->rqstp->rq_vec, read->rd_vlen, &maxcount,
                            &eof);
@@ -3625,16 +3623,17 @@ static __be32 nfsd4_encode_readv(struct nfsd4_compoundres *resp,
                return nfserr;
        if (svc_encode_read_payload(resp->rqstp, starting_len + 8, maxcount))
                return nfserr_io;
-       xdr_truncate_encode(xdr, starting_len + 8 + ((maxcount+3)&~3));
+       xdr_truncate_encode(xdr, starting_len + 8 + xdr_align_size(maxcount));
 
        tmp = htonl(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);
 
+       tmp = xdr_zero;
        pad = (maxcount&3) ? 4 - (maxcount&3) : 0;
        write_bytes_to_xdr_buf(xdr->buf, starting_len + 8 + maxcount,
-                                                               &zzz, pad);
+                                                               &tmp, pad);
        return 0;
 
 }