Merge tag 'nfsd-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux
[linux-2.6-microblaze.git] / fs / nfsd / vfs.c
index 92e77f9..738d564 100644 (file)
@@ -244,7 +244,6 @@ out_nfserr:
  * returned. Otherwise the covered directory is returned.
  * NOTE: this mountpoint crossing is not supported properly by all
  *   clients and is explicitly disallowed for NFSv3
- *      NeilBrown <neilb@cse.unsw.edu.au>
  */
 __be32
 nfsd_lookup(struct svc_rqst *rqstp, struct svc_fh *fhp, const char *name,
@@ -826,26 +825,16 @@ nfsd_splice_actor(struct pipe_inode_info *pipe, struct pipe_buffer *buf,
        struct svc_rqst *rqstp = sd->u.data;
        struct page **pp = rqstp->rq_next_page;
        struct page *page = buf->page;
-       size_t size;
-
-       size = sd->len;
 
        if (rqstp->rq_res.page_len == 0) {
-               get_page(page);
-               put_page(*rqstp->rq_next_page);
-               *(rqstp->rq_next_page++) = page;
+               svc_rqst_replace_page(rqstp, page);
                rqstp->rq_res.page_base = buf->offset;
-               rqstp->rq_res.page_len = size;
        } else if (page != pp[-1]) {
-               get_page(page);
-               if (*rqstp->rq_next_page)
-                       put_page(*rqstp->rq_next_page);
-               *(rqstp->rq_next_page++) = page;
-               rqstp->rq_res.page_len += size;
-       } else
-               rqstp->rq_res.page_len += size;
+               svc_rqst_replace_page(rqstp, page);
+       }
+       rqstp->rq_res.page_len += sd->len;
 
-       return size;
+       return sd->len;
 }
 
 static int nfsd_direct_splice_actor(struct pipe_inode_info *pipe,