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

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
...@@ -1078,11 +1078,22 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, ...@@ -1078,11 +1078,22 @@ pnfs_generic_pg_test(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev,
return true; return true;
} }
if (req_offset(req) > end_offset(pgio->pg_lseg->pls_range.offset, /*
pgio->pg_lseg->pls_range.length)) * Test if a nfs_page is fully contained in the pnfs_layout_range.
return false; * Note that this test makes several assumptions:
* - that the previous nfs_page in the struct nfs_pageio_descriptor
return true; * 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); EXPORT_SYMBOL_GPL(pnfs_generic_pg_test);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment