nfsd4: minor read_buf cleanup
authorJ. Bruce Fields <bfields@redhat.com>
Fri, 21 Jun 2013 21:06:29 +0000 (17:06 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Mon, 1 Jul 2013 21:32:03 +0000 (17:32 -0400)
The code to step to the next page seems reasonably self-contained.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4xdr.c

index e34f5ebfc8118e28f4a4c7424d78235510804232..c102d2509a2a86903c172e4e750cf9e03df5b809 100644 (file)
@@ -139,6 +139,19 @@ xdr_error:                                 \
        }                                       \
 } while (0)
 
+static void next_decode_page(struct nfsd4_compoundargs *argp)
+{
+       argp->pagelist++;
+       argp->p = page_address(argp->pagelist[0]);
+       if (argp->pagelen < PAGE_SIZE) {
+               argp->end = argp->p + (argp->pagelen>>2);
+               argp->pagelen = 0;
+       } else {
+               argp->end = argp->p + (PAGE_SIZE>>2);
+               argp->pagelen -= PAGE_SIZE;
+       }
+}
+
 static __be32 *read_buf(struct nfsd4_compoundargs *argp, u32 nbytes)
 {
        /* We want more bytes than seem to be available.
@@ -166,16 +179,7 @@ static __be32 *read_buf(struct nfsd4_compoundargs *argp, u32 nbytes)
         * guarantee p points to at least nbytes bytes.
         */
        memcpy(p, argp->p, avail);
-       /* step to next page */
-       argp->pagelist++;
-       argp->p = page_address(argp->pagelist[0]);
-       if (argp->pagelen < PAGE_SIZE) {
-               argp->end = argp->p + (argp->pagelen>>2);
-               argp->pagelen = 0;
-       } else {
-               argp->end = argp->p + (PAGE_SIZE>>2);
-               argp->pagelen -= PAGE_SIZE;
-       }
+       next_decode_page(argp);
        memcpy(((char*)p)+avail, argp->p, (nbytes - avail));
        argp->p += XDR_QUADLEN(nbytes - avail);
        return p;