NFSv4.1: Fix an off-by-one error in pnfs_generic_pg_test
And document what is going on there... Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user