kernels/linux-2.6.24/mm/filemap.c
/**
 * grab_cache_page_nowait - returns locked page at given index in given cache
 * @mapping: target address_space
 * @index: the page index
 *
 * Same as grab_cache_page(), but do not wait if the page is unavailable.
 * This is intended for speculative data generators, where the data can
 * be regenerated if the page couldn't be grabbed.  This routine should
 * be safe to call while holding the lock for another page.
 *
 * Clear __GFP_FS when allocating the page to avoid recursion into the fs
 * and deadlock against the caller's locked page.
 */
returns locked page at given index in given cache
@mapping: target address_space
@index: the page index

Same as grab_cache_page(), but do not wait if the page is unavailable.
This is intended for speculative data generators, where the data can
be regenerated if the page couldn't be grabbed.  This routine should
be safe to call while holding the lock for another page.

Clear __GFP_FS when allocating the page to avoid recursion into the fs
and deadlock against the caller's locked page.
returns locked page at given index in given cache @mapping : target address_space @index : the page index Same as grab_cache_page () but do not wait if the page is unavailable . This is intended for speculative data generators where the data can be regenerated if the page couldn ' t be grabbed . This routine should be safe to call while holding the lock for another page . Clear __GFP_FS when allocating the page to avoid recursion into the fs and deadlock against the caller ' s locked page .
struct page *
grab_cache_page_nowait(struct address_space *mapping, pgoff_t index)
{
	struct page *page = find_get_page(mapping, index);
	if (page) {
		if (!TestSetPageLocked(page))
			return page;
		page_cache_release(page);
		return NULL;
	}
	page = __page_cache_alloc(mapping_gfp_mask(mapping) & ~__GFP_FS);
	if (page && add_to_page_cache_lru(page, mapping, index, GFP_KERNEL)) {
		page_cache_release(page);
		page = NULL;
	}
	return page;
}
struct page * grab_cache_page_nowait ( struct address_space * mapping , pgoff_t index ) { struct page * page = find_get_page ( mapping , index ) ; if ( page ) { if ( ! TestSetPageLocked ( page ) ) return page ; page_cache_release ( page ) ; return NULL ; } page = __page_cache_alloc ( mapping_gfp_mask ( mapping ) & ~ __GFP_FS ) ; if ( page && add_to_page_cache_lru ( page , mapping , index , GFP_KERNEL ) ) { page_cache_release ( page ) ; page = NULL ; } return page ; }
grab_cache_page_nowait - returns locked page at given index in given cache
 @mapping: target address_space
 @index: the page index
grab_cache_page_nowait - returns locked page at given index in given cache @mapping : target address_space @index : the page index