|
@@ -823,6 +823,14 @@ static bool nfs_can_coalesce_requests(struct nfs_page *prev,
|
|
|
return false;
|
|
|
if (req_offset(req) != req_offset(prev) + prev->wb_bytes)
|
|
|
return false;
|
|
|
+ if (req->wb_page == prev->wb_page) {
|
|
|
+ if (req->wb_pgbase != prev->wb_pgbase + prev->wb_bytes)
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ if (req->wb_pgbase != 0 ||
|
|
|
+ prev->wb_pgbase + prev->wb_bytes != PAGE_CACHE_SIZE)
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
size = pgio->pg_ops->pg_test(pgio, prev, req);
|
|
|
WARN_ON_ONCE(size > req->wb_bytes);
|