mm: use pagevec_lookup_range_tag() in __filemap_fdatawait_range()
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. Link: http://lkml.kernel.org/r/20171009151359.31984-11-jack@suse.cz Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
94f1b99298
commit
26778b87a0
1 changed files with 6 additions and 8 deletions
14
mm/filemap.c
14
mm/filemap.c
|
@ -344,19 +344,17 @@ static int __filemap_fdatawait_range(struct address_space *mapping,
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
pagevec_init(&pvec, 0);
|
pagevec_init(&pvec, 0);
|
||||||
while ((index <= end) &&
|
while (index <= end) {
|
||||||
(nr_pages = pagevec_lookup_tag(&pvec, mapping, &index,
|
|
||||||
PAGECACHE_TAG_WRITEBACK,
|
|
||||||
min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1)) != 0) {
|
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
|
nr_pages = pagevec_lookup_range_tag(&pvec, mapping, &index,
|
||||||
|
end, PAGECACHE_TAG_WRITEBACK, PAGEVEC_SIZE);
|
||||||
|
if (!nr_pages)
|
||||||
|
break;
|
||||||
|
|
||||||
for (i = 0; i < nr_pages; i++) {
|
for (i = 0; i < nr_pages; i++) {
|
||||||
struct page *page = pvec.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);
|
wait_on_page_writeback(page);
|
||||||
if (TestClearPageError(page))
|
if (TestClearPageError(page))
|
||||||
ret = -EIO;
|
ret = -EIO;
|
||||||
|
|
Loading…
Add table
Reference in a new issue