do_generic_mapping_read() has an open-coded version of find_get_page() hidden inside it. filemap.c | 15 +++------------ 1 files changed, 3 insertions(+), 12 deletions(-) diff -puN mm/filemap.c~use-find_get_page mm/filemap.c --- 25/mm/filemap.c~use-find_get_page 2003-02-23 02:02:37.000000000 -0800 +++ 25-akpm/mm/filemap.c 2003-02-23 02:03:45.000000000 -0800 @@ -559,21 +559,12 @@ void do_generic_mapping_read(struct addr page_cache_readahead(mapping, ra, filp, index); nr = nr - offset; - - /* - * Try to find the data in the page cache.. - */ find_page: - read_lock(&mapping->page_lock); - page = radix_tree_lookup(&mapping->page_tree, index); - if (!page) { - read_unlock(&mapping->page_lock); - handle_ra_miss(mapping,ra); + page = find_get_page(mapping, index); + if (unlikely(page == NULL)) { + handle_ra_miss(mapping, ra); goto no_cached_page; } - page_cache_get(page); - read_unlock(&mapping->page_lock); - if (!PageUptodate(page)) goto page_not_up_to_date; page_ok: _