|
@@ -1559,8 +1559,7 @@ static void do_sync_mmap_readahead(struct vm_area_struct *vma,
|
|
if (!ra->ra_pages)
|
|
if (!ra->ra_pages)
|
|
return;
|
|
return;
|
|
|
|
|
|
- if (VM_SequentialReadHint(vma) ||
|
|
|
|
- offset - 1 == (ra->prev_pos >> PAGE_CACHE_SHIFT)) {
|
|
|
|
|
|
+ if (VM_SequentialReadHint(vma)) {
|
|
page_cache_sync_readahead(mapping, ra, file, offset,
|
|
page_cache_sync_readahead(mapping, ra, file, offset,
|
|
ra->ra_pages);
|
|
ra->ra_pages);
|
|
return;
|
|
return;
|
|
@@ -1583,7 +1582,7 @@ static void do_sync_mmap_readahead(struct vm_area_struct *vma,
|
|
ra_pages = max_sane_readahead(ra->ra_pages);
|
|
ra_pages = max_sane_readahead(ra->ra_pages);
|
|
ra->start = max_t(long, 0, offset - ra_pages / 2);
|
|
ra->start = max_t(long, 0, offset - ra_pages / 2);
|
|
ra->size = ra_pages;
|
|
ra->size = ra_pages;
|
|
- ra->async_size = 0;
|
|
|
|
|
|
+ ra->async_size = ra_pages / 4;
|
|
ra_submit(ra, mapping, file);
|
|
ra_submit(ra, mapping, file);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1689,7 +1688,6 @@ retry_find:
|
|
return VM_FAULT_SIGBUS;
|
|
return VM_FAULT_SIGBUS;
|
|
}
|
|
}
|
|
|
|
|
|
- ra->prev_pos = (loff_t)offset << PAGE_CACHE_SHIFT;
|
|
|
|
vmf->page = page;
|
|
vmf->page = page;
|
|
return ret | VM_FAULT_LOCKED;
|
|
return ret | VM_FAULT_LOCKED;
|
|
|
|
|