readahead: split ondemand readahead interface into two functions

Split ondemand readahead interface into two functions.  I think this makes it
a little clearer for non-readahead experts (like Rusty).

Internally they both call ondemand_readahead(), but the page argument is
changed to an obvious boolean flag.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Rusty Russell
2007-07-19 01:48:08 -07:00
committed by Linus Torvalds
parent fe3cba17c4
commit cf914a7d65
6 changed files with 85 additions and 56 deletions

View File

@@ -894,15 +894,15 @@ void do_generic_mapping_read(struct address_space *mapping,
find_page:
page = find_get_page(mapping, index);
if (!page) {
page_cache_readahead_ondemand(mapping,
&ra, filp, page,
page_cache_sync_readahead(mapping,
&ra, filp,
index, last_index - index);
page = find_get_page(mapping, index);
if (unlikely(page == NULL))
goto no_cached_page;
}
if (PageReadahead(page)) {
page_cache_readahead_ondemand(mapping,
page_cache_async_readahead(mapping,
&ra, filp, page,
index, last_index - index);
}
@@ -1348,14 +1348,14 @@ retry_find:
*/
if (VM_SequentialReadHint(vma)) {
if (!page) {
page_cache_readahead_ondemand(mapping, ra, file, page,
page_cache_sync_readahead(mapping, ra, file,
vmf->pgoff, 1);
page = find_lock_page(mapping, vmf->pgoff);
if (!page)
goto no_cached_page;
}
if (PageReadahead(page)) {
page_cache_readahead_ondemand(mapping, ra, file, page,
page_cache_async_readahead(mapping, ra, file, page,
vmf->pgoff, 1);
}
}