Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19982ba8 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4.1: Fix an off-by-one error in pnfs_generic_pg_test



And document what is going on there...

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 8f7d5efb
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -1078,11 +1078,22 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
			return true;
	}

	if (req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset,
					 pgio->pg_lseg->pls_range.length))
		return false;

	return true;
	/*
	 * Test if a nfs_page is fully contained in the pnfs_layout_range.
	 * Note that this test makes several assumptions:
	 * - that the previous nfs_page in the struct nfs_pageio_descriptor
	 *   is known to lie within the range.
	 *   - that the nfs_page being tested is known to be contiguous with the
	 *   previous nfs_page.
	 *   - Layout ranges are page aligned, so we only have to test the
	 *   start offset of the request.
	 *
	 * Please also note that 'end_offset' is actually the offset of the
	 * first byte that lies outside the pnfs_layout_range. FIXME?
	 *
	 */
	return req_offset(req) < end_offset(pgio->pg_lseg->pls_range.offset,
					 pgio->pg_lseg->pls_range.length);
}
EXPORT_SYMBOL_GPL(pnfs_generic_pg_test);