Commit 60699ab7 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS/localio: Deal with page bases that are > PAGE_SIZE



When resending requests, etc, the page base can quickly grow larger than
the page size.

Fixes: 091bdcfc ("nfs/localio: refactor iocb and iov_iter_bvec initialization")
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Reviewed-by: default avatarMike Snitzer <snitzer@kernel.org>
parent 001945a7
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -461,6 +461,8 @@ nfs_local_iters_init(struct nfs_local_kiocb *iocb, int rw)
	v = 0;
	total = hdr->args.count;
	base = hdr->args.pgbase;
	pagevec += base >> PAGE_SHIFT;
	base &= ~PAGE_MASK;
	while (total && v < hdr->page_array.npages) {
		len = min_t(size_t, total, PAGE_SIZE - base);
		bvec_set_page(&iocb->bvec[v], *pagevec, len, base);