diff options
Diffstat (limited to 'mm/filemap.c')
-rw-r--r-- | mm/filemap.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index 5c0c6518f341..734891d0663d 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -1488,13 +1488,15 @@ static void do_sync_mmap_readahead(struct vm_area_struct *vma, | |||
1488 | if (ra->mmap_miss > MMAP_LOTSAMISS) | 1488 | if (ra->mmap_miss > MMAP_LOTSAMISS) |
1489 | return; | 1489 | return; |
1490 | 1490 | ||
1491 | /* | ||
1492 | * mmap read-around | ||
1493 | */ | ||
1491 | ra_pages = max_sane_readahead(ra->ra_pages); | 1494 | ra_pages = max_sane_readahead(ra->ra_pages); |
1492 | if (ra_pages) { | 1495 | if (ra_pages) { |
1493 | pgoff_t start = 0; | 1496 | ra->start = max_t(long, 0, offset - ra_pages/2); |
1494 | 1497 | ra->size = ra_pages; | |
1495 | if (offset > ra_pages / 2) | 1498 | ra->async_size = 0; |
1496 | start = offset - ra_pages / 2; | 1499 | ra_submit(ra, mapping, file); |
1497 | do_page_cache_readahead(mapping, file, start, ra_pages); | ||
1498 | } | 1500 | } |
1499 | } | 1501 | } |
1500 | 1502 | ||