kernels/linux-2.6.24/mm/filemap.c
/*
 * Same as read_cache_page, but don't wait for page to become unlocked
 * after submitting it to the filler.
 */
Same as read_cache_page, but don't wait for page to become unlocked
after submitting it to the filler.
Same as read_cache_page but don ' t wait for page to become unlocked after submitting it to the filler .
struct page *read_cache_page_async(struct address_space *mapping,
				pgoff_t index,
				int (*filler)(void *,struct page*),
				void *data)
{
	struct page *page;
	int err;
retry:
	page = __read_cache_page(mapping, index, filler, data);
	if (IS_ERR(page))
		return page;
	if (PageUptodate(page))
		goto out;
	lock_page(page);
	if (!page->mapping) {
		unlock_page(page);
		page_cache_release(page);
		goto retry;
	}
	if (PageUptodate(page)) {
		unlock_page(page);
		goto out;
	}
	err = filler(data, page);
	if (err < 0) {
		page_cache_release(page);
		return ERR_PTR(err);
	}
out:
	mark_page_accessed(page);
	return page;
}
struct page * read_cache_page_async ( struct address_space * mapping , pgoff_t index , int ( * filler ) ( void * , struct page * ) , void * data ) { struct page * page ; int err ; retry : page = __read_cache_page ( mapping , index , filler , data ) ; if ( IS_ERR ( page ) ) return page ; if ( PageUptodate ( page ) ) goto out ; lock_page ( page ) ; if ( ! page -> mapping ) { unlock_page ( page ) ; page_cache_release ( page ) ; goto retry ; } if ( PageUptodate ( page ) ) { unlock_page ( page ) ; goto out ; } err = filler ( data , page ) ; if ( err < 0 ) { page_cache_release ( page ) ; return ERR_PTR ( err ) ; } out : mark_page_accessed ( page ) ; return page ; }
Same as read_cache_page, but don't wait for page to become unlocked
 after submitting it to the filler.
Same as read_cache_page but don ' t wait for page to become unlocked after submitting it to the filler .