kernels/linux-2.6.24/mm/filemap.c
/**
 * read_cache_page - read into page cache, fill it if needed
 * @mapping:	the page's address_space
 * @index:	the page index
 * @filler:	function to perform the read
 * @data:	destination for read data
 *
 * Read into the page cache. If a page already exists, and PageUptodate() is
 * not set, try to fill the page then wait for it to become unlocked.
 *
 * If the page does not get brought uptodate, return -EIO.
 */
read into page cache, fill it if needed
@mapping:    the page's address_space
@index:      the page index
@filler:     function to perform the read
@data:       destination for read data

Read into the page cache. If a page already exists, and PageUptodate() is
not set, try to fill the page then wait for it to become unlocked.

If the page does not get brought uptodate, return -EIO.
read into page cache fill it if needed @mapping : the page ' s address_space @index : the page index @filler : function to perform the read @data : destination for read data Read into the page cache . If a page already exists and PageUptodate () is not set try to fill the page then wait for it to become unlocked . If the page does not get brought uptodate return - EIO .
struct page *read_cache_page(struct address_space *mapping,
				pgoff_t index,
				int (*filler)(void *,struct page*),
				void *data)
{
	struct page *page;
	page = read_cache_page_async(mapping, index, filler, data);
	if (IS_ERR(page))
		goto out;
	wait_on_page_locked(page);
	if (!PageUptodate(page)) {
		page_cache_release(page);
		page = ERR_PTR(-EIO);
	}
 out:
	return page;
}
struct page * read_cache_page ( struct address_space * mapping , pgoff_t index , int ( * filler ) ( void * , struct page * ) , void * data ) { struct page * page ; page = read_cache_page_async ( mapping , index , filler , data ) ; if ( IS_ERR ( page ) ) goto out ; wait_on_page_locked ( page ) ; if ( ! PageUptodate ( page ) ) { page_cache_release ( page ) ; page = ERR_PTR ( - EIO ) ; } out : return page ; }
read_cache_page - read into page cache, fill it if needed
 @mapping:    the page's address_space
 @index:      the page index
 @filler:     function to perform the read
 @data:       destination for read data
read_cache_page - read into page cache fill it if needed @mapping : the page ' s address_space @index : the page index @filler : function to perform the read @data : destination for read data