Use pagevec_lookup_range_tag() in __filemap_fdatawait_range() as it is interested only in pages from given range. Remove unnecessary code resulting from this. Signed-off-by: Jan Kara <jack@xxxxxxx> --- mm/filemap.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/mm/filemap.c b/mm/filemap.c index 56af68f6a375..8039b6bb9c27 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -390,18 +390,13 @@ static int __filemap_fdatawait_range(struct address_space *mapping, pagevec_init(&pvec, 0); while ((index <= end) && - (nr_pages = pagevec_lookup_tag(&pvec, mapping, &index, - PAGECACHE_TAG_WRITEBACK, - min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1)) != 0) { + (nr_pages = pagevec_lookup_range_tag(&pvec, mapping, + &index, end, PAGECACHE_TAG_WRITEBACK, PAGEVEC_SIZE))) { unsigned i; for (i = 0; i < nr_pages; i++) { struct page *page = pvec.pages[i]; - /* until radix tree lookup accepts end_index */ - if (page->index > end) - continue; - wait_on_page_writeback(page); if (TestClearPageError(page)) ret = -EIO; -- 2.12.3