]> git.baikalelectronics.ru Git - kernel.git/commit
nfs: can_coalesce_requests must enforce contiguity
authorWeston Andros Adamson <dros@primarydata.com>
Thu, 14 Aug 2014 21:39:33 +0000 (17:39 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Fri, 22 Aug 2014 22:04:44 +0000 (18:04 -0400)
commitb9b94131a1201558ad54fab453e8e272e1d093cd
treed4bdfbcac7d82bcef4f16f2e7e661320a5ebc6dc
parentca05b0528cc0d593705daa69ddb5d5901b8a0d71
nfs: can_coalesce_requests must enforce contiguity

Commit ca19b58bd2977d7850cbb72d5dc56f2c647c36c5
"nfs: allow coalescing of subpage requests" got rid of the requirement
that requests cover whole pages, but it made some incorrect assumptions.

It turns out that callers of this interface can map adjacent requests
(by file position as seen by req_offset + req->wb_bytes) to different pages,
even when they could share a page. An example is the direct I/O interface -
iov_iter_get_pages_alloc may return one segment with a partial page filled
and the next segment (which is adjacent in the file position) starts with a
new page.

Reported-by: Toralf Förster <toralf.foerster@gmx.de>
Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/pagelist.c