diff options
Diffstat (limited to 'mm/filemap.c')
-rw-r--r-- | mm/filemap.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index cf74d0dacc6a..229481d258bc 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -420,19 +420,17 @@ static void __filemap_fdatawait_range(struct address_space *mapping, | |||
420 | return; | 420 | return; |
421 | 421 | ||
422 | pagevec_init(&pvec, 0); | 422 | pagevec_init(&pvec, 0); |
423 | while ((index <= end) && | 423 | while (index <= end) { |
424 | (nr_pages = pagevec_lookup_tag(&pvec, mapping, &index, | ||
425 | PAGECACHE_TAG_WRITEBACK, | ||
426 | min(end - index, (pgoff_t)PAGEVEC_SIZE-1) + 1)) != 0) { | ||
427 | unsigned i; | 424 | unsigned i; |
428 | 425 | ||
426 | nr_pages = pagevec_lookup_range_tag(&pvec, mapping, &index, | ||
427 | end, PAGECACHE_TAG_WRITEBACK, PAGEVEC_SIZE); | ||
428 | if (!nr_pages) | ||
429 | break; | ||
430 | |||
429 | for (i = 0; i < nr_pages; i++) { | 431 | for (i = 0; i < nr_pages; i++) { |
430 | struct page *page = pvec.pages[i]; | 432 | struct page *page = pvec.pages[i]; |
431 | 433 | ||
432 | /* until radix tree lookup accepts end_index */ | ||
433 | if (page->index > end) | ||
434 | continue; | ||
435 | |||
436 | wait_on_page_writeback(page); | 434 | wait_on_page_writeback(page); |
437 | ClearPageError(page); | 435 | ClearPageError(page); |
438 | } | 436 | } |